3 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
據(jù)我所知,這是正常的。CBT 存儲(chǔ)該行鍵的歷史記錄,您需要通過一個(gè)過濾器來獲取最新的行鍵。
bigtable.RowFilter(bigtable.LatestNFilter(1))
更新:這就是我使用該過濾器的方式
rowName := "myrow#key#id"
row, err := bt.Table.ReadRow(ctx, rowName, bigtable.RowFilter(bigtable.LatestNFilter(1)))
if err != nil {
// handle error...
}
if row == nil {
// check for 0 result...
}
更新2:
根據(jù)您的代碼,ReadRows改為使用,看起來您正在嘗試獲取多個(gè)行鍵。因此您的代碼應(yīng)該為每個(gè)行鍵提取最新行。
如果您只想要圖像中顯示的一把鑰匙,那么我只會(huì)使用該ReadRow方法。
err = tbl.ReadRow(ctx,"1564:u2Sng4xbtG", bigtable.RowFilter(bigtable.LatestNFilter(1)))
否則...我想它在 CBT 中的存儲(chǔ)方式可能存在問題,但這有點(diǎn)超出了我的 CBT 技能范圍。希望 CBT 專家能為您提供幫助。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
這里似乎有點(diǎn)混亂:
在任何情況下,ReadRows 都不應(yīng)該返回重復(fù)的行鍵。假設(shè)電子表格中的行對(duì)應(yīng)于客戶端庫在 func 回調(diào)中返回的行,那么這是客戶端庫中的錯(cuò)誤。
Bigtable 確實(shí)允許單元格值的多個(gè)版本。它提供像LatestNFilter()這樣的過濾器來隱藏舊的單元格值,并提供gc規(guī)則來定期刪除它們。但是,這僅限于單元格值,與行鍵無關(guān)。換句話說,Bigtable 提供單元版本而不是行版本。
ApplyBulk 不是原子的,而且它不提供有關(guān)突變排序的任何保證。
- 3 回答
- 0 關(guān)注
- 176 瀏覽
添加回答
舉報(bào)