2017-04-06 50 views
0

比方說,我創建了一個包含10個初始分割點並因此包含10個初始平板的表格,過了一段時間後,其中一個表達式達到最大尺寸並自動分割。空的平板電腦會發生什麼?

假設我的密鑰是partition_counter,並且我的計數器不斷增加,我將插入到新創建的平板電腦中,而不會插入到舊的平板電腦中。

在舊的記錄中的所有記錄達到其TTL(併發生壓縮)之後,平板電腦將變空。

此平板電腦是否自動刪除?如果沒有,是否有任何性能或成本影響的空片附近?

無可否認,我們應該努力使分區和TTL的分區數量達到足夠大的數量,以便自動分區和平板電腦保持不變,但我試圖解決所有情況。

回答

0

比方說,我創建了一個包含10個初始分割點的表格,因此創建了10個初始平板電腦,過了一段時間後,其中一個表達式達到最大尺寸並自動分割。

假設我的密鑰是partition_counter,並且我的計數器不斷增加,我將插入到新創建的平板電腦中,而不是舊的。

你沒有提供關於你的行鍵/模式設計的足夠信息,所以這只是我的猜測,但請注意,如果你總是寫一個比所有其他現有的鍵大的鍵Bigtable中的密鑰,您將熱點擁有最後一臺平板電腦的節點,並且由於您無法分配寫入數據,因此無論集羣的大小如何,您都可以獲得與單個節點相當的性能。

避免典型模式設計的陷阱

  • 錯誤的例子:<date>-<some id/hash> - 最新優先的順序,比例差
  • 很好的例子:<some id/hash>-<date> - 項目/用戶/設備優先的順序,良好的縮放

如果你已經沒有插入日期或時間作爲前綴到你的行鍵,你正在做的更正年。

在舊的記錄中的所有記錄達到其TTL(併發生壓縮)之後,平板電腦將是空的。

此平板電腦是否自動刪除?如果沒有,是否有任何性能或成本影響的空片附近?

是的,這樣的平板電腦將在壓縮時間消失,您的集羣甚至不會注意到。沒有空片的性能或成本含義,你不應該擔心它們。

不可否認,我們應該努力使我們的分區和TTL分區數量達到足夠大的數量以實現自動分區並且平板電腦保持不變,但我試圖解決所有情況。

不,您不應該擔心#片,#分區或TTL。沒有要求避免分割或具有恆定數量的平板電腦。這可能是其他存儲系統中的問題,但不是Bigtable中的問題:它可以很好地擴展。

您應該確保您的模式設計完成後,隨着您擴展數據的大小,您的讀取/寫入將沿着密鑰空間(跨節點分片)分發,而不是單調遞增或遞減。

欲瞭解更多信息,請訪問這些文檔:

另外,如果你的使用情況適合成爲一種流行的模式,可以考慮使用一個前端到BigTable的,簡化針對特定用例的模式管理,例如,