关于 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 可能是一个问题。
列中的 NULL 值是否需要与定义列类型的实际值相同的存储空间space?
Cloud Spanner 对 sparse-value 文档(例如 Elasticsearch)有问题吗?
Cloud Spanner 处理 joins/aggregations 超过十亿 parent-child 个文档的效果如何?
- Cloud Spanner 中的 NULL 值非常便宜,基本上是免费的。
- 每个table的列数限制为1024。还建议每个父键放置少于4G的数据。查看完整的限制列表 here。
- 父子连接本身是高效的,因为它作为单个扫描执行。但是,在知道您想执行的实际查询之前很难说清楚。
我们正在探索 Cloud Spanner 来替代我们的 Elasticsearch 集群,目前正在布局我们的数据库模式。
我们想知道我们是否应该使用一个大的 table 和很多可为空的列,或者我们是否应该更喜欢一个精简的基础 table 和很多 one-to-one child tables。对于更大的 table(有些 table 可能更多),我们将有大约 25 到 1000 亿个条目,因此大量的 joins/aggregations 可能是一个问题。
列中的 NULL 值是否需要与定义列类型的实际值相同的存储空间space?
Cloud Spanner 对 sparse-value 文档(例如 Elasticsearch)有问题吗?
Cloud Spanner 处理 joins/aggregations 超过十亿 parent-child 个文档的效果如何?
- Cloud Spanner 中的 NULL 值非常便宜,基本上是免费的。
- 每个table的列数限制为1024。还建议每个父键放置少于4G的数据。查看完整的限制列表 here。
- 父子连接本身是高效的,因为它作为单个扫描执行。但是,在知道您想执行的实际查询之前很难说清楚。