BigTable:一排长排与许多短排

BigTable: One long row vs many short ones

我正在设计一项服务,将数据存储在 Cloud Big Table 中。我想知道以下哪个(等效)数据模型的性能更高:

  1. 具有许多稀疏列的单行
  2. 许多短行只有一列。在此选项中,行键将组合在一起,因此获取它们应该很容易。

例如:

选项 1:

row-key "1.2.3.4", row-value: "mail.google.com"|empty|"ball.google.com"|"red.google.com"

选项 2:

row-key "1.2.3.4@<timestamp for uniqueness>", row-value: "mail.google.com"
row-key "1.2.3.4@<timestamp for uniqueness>", row-value: "ball.google.com"
row-key "1.2.3.4@<timestamp for uniqueness>", row-value: "red.google.com"

在选项 1 下获取需要获取单个(大)行。 在选项 2 下获取需要获取多行(短且分组)。

就性能而言,哪个更好? 我的猜测是选项 1,因为没有像选项 2 那样的行键开销,但我想听到更多答案。

(是的,我知道行大小限制,这在我的用例中不是问题)。

如果如您所说,行大小限制在您的用例中不是问题,我会说选项 1 更好。

事实上,official documentation 推荐这样做以获得更好的读取性能:

Limiting the number of rows that your nodes have to scan is the first step toward improving time to first byte and overall query latency.

选项 2 会在您的查询中引入不必要的行,这肯定会导致您的查询性能下降。