关于 NULL 值的存储大小和连接性能的模式布局

Schema layout regarding storage size of NULL values and join performance

我们正在探索 Cloud Spanner 来替代我们的 Elasticsearch 集群,目前正在布局我们的数据库模式。

我们想知道我们是否应该使用一个大的 table 和很多可为空的列,或者我们是否应该更喜欢一个精简的基础 table 和很多 one-to-one child tables。对于更大的 table(有些 table 可能更多),我们将有大约 25 到 1000 亿个条目,因此大量的 joins/aggregations 可能是一个问题。

  • Cloud Spanner 中的 NULL 值非常便宜,基本上是免费的。
  • 每个table的列数限制为1024。还建议每个父键放置少于4G的数据。查看完整的限制列表 here
  • 父子连接本身是高效的,因为它作为单个扫描执行。但是,在知道您想执行的实际查询之前很难说清楚。