We are exploring Cloud Spanner as a replacement for our Elasticsearch cluster and are currently layouting our database schema.
We are wondering if we should use one big table with lots of nullable columns, or if we should prefer a lean base table with lots of one-to-one child tables. We will have around 25 to 100 billion entries for the bigger tables (some tables probably even more), so massive joins/aggregations could be an issue.
do NULL values in a column require the same storage space as real values of the defined column type?
does Cloud Spanner have a problem with sparse-value documents like Elasticsearch?
how well does Cloud Spanner handle joins/aggregations over billion parent-child documents?