1

我有幾個實體的屬性編號在40-50範圍內。所有這些屬性都是未編制索引的。這些實體是更大的實體組樹結構的一部分,並且始終通過使用它們的密鑰進行檢索。沒有任何屬性(鍵屬性除外)都被索引。我正在使用Objectify與BigTable上的實體一起工作。實體效果數據存儲讀/寫性能中是否有大量屬性?

我想知道在BigTable中讀取或寫入具有大量屬性的實體是否存在任何性能影響。

由於這些大型實體只能通過它們的鍵獲取,因此永遠不會參與任何查詢,所以我想知道是否應該序列化實體pojo並將其存儲爲blob。使用@Serialized註解在Objectify中完成這項操作非常簡單。我明白,通過序列化我的實體並將其存儲爲blob,我將blob完全透明化爲任何其他程序或非Java代碼,但這不是問題。

我還沒有對性能差異進行基準測試,但在此之前,我想知道是否有人之前做過或有任何建議/意見要分享。

回答

3

總是有一些開銷的屬性數量。和序列化不會有多大幫助,因爲它只是將處理從一個點移動到另一個點。

我有屬性數量高達25的實體,我幾乎在所有的請求中通過鍵獲取它們。性能差異對我來說可以忽略不計。幾乎不到+ - 1ms。性能問題通常發生在查詢部件上。 未編制索引財產在性能上不會算太多。而指數化的財產可能由於指數的修改而大幅延遲投放。

如果您必須,您可以將財產分成多個表格,如果您不一次需要它們。

2

純粹通過我知道它的工作原理,我會說有一大堆未索引的屬性與整個串行化沒有什麼不同。

相關問題