Cassandra 数据库设计 - 1000 列或动态创建的表
Cassandra database design - 1000 columns or dynamically created tables
我想听听您对广告代理数据库的潜在解决方案的建议。
我们希望构建一个能够以我们知道的方式跟踪用户的系统
他们在广告上做了什么,在哪里。
广告的种类很多,有的还是FORMS,方便用户填写数据。
每个表单都不同,但我们不想为每个表单创建 table。
我们想创建一个非常宽的 table,有 1k 列,每种类型有几十个,并存储数据。
简而言之:
- 使用 Cassandra;
- 每天创建 table 秒,以便每天 table 存储数据;
- 每个 table 将有 1000 列(日期时间 100,整数 100,等等)。
应用程序逻辑会将数据映射到相关的列中,以便我们稍后能够搜索和更新它们。
你怎么看这个?
在 Cassandra 中动态生成 table 时要小心。当 table 太多时,您将开始遇到问题,因为每个 table 存在内存开销。每 Jonathan Ellis:
Cassandra will reserve a minimum of 1MB for each CF's memtable: http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-performance
在 Cassandra 中,即使每天 tables 也不是一个好主意(每个表单 tables 更糟糕)。我建议您构建一个 table 可以容纳您的所有数据,并且您知道它可以很好地扩展 - 使用 cassandra-stress 验证这一点。
此时,听从 mikea 的建议并开始考虑您的访问模式(参见 Patrick 的 video series),您可能需要构建额外的 table 来满足您的查询需求。
注意: 对于希望在 c* 中使用无模式选项的任何人:
https://blog.compose.io/schema-less-is-usually-a-lie/
http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/
我想听听您对广告代理数据库的潜在解决方案的建议。
我们希望构建一个能够以我们知道的方式跟踪用户的系统 他们在广告上做了什么,在哪里。
广告的种类很多,有的还是FORMS,方便用户填写数据。 每个表单都不同,但我们不想为每个表单创建 table。
我们想创建一个非常宽的 table,有 1k 列,每种类型有几十个,并存储数据。
简而言之:
- 使用 Cassandra;
- 每天创建 table 秒,以便每天 table 存储数据;
- 每个 table 将有 1000 列(日期时间 100,整数 100,等等)。
应用程序逻辑会将数据映射到相关的列中,以便我们稍后能够搜索和更新它们。
你怎么看这个?
在 Cassandra 中动态生成 table 时要小心。当 table 太多时,您将开始遇到问题,因为每个 table 存在内存开销。每 Jonathan Ellis:
Cassandra will reserve a minimum of 1MB for each CF's memtable: http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-performance
在 Cassandra 中,即使每天 tables 也不是一个好主意(每个表单 tables 更糟糕)。我建议您构建一个 table 可以容纳您的所有数据,并且您知道它可以很好地扩展 - 使用 cassandra-stress 验证这一点。
此时,听从 mikea 的建议并开始考虑您的访问模式(参见 Patrick 的 video series),您可能需要构建额外的 table 来满足您的查询需求。
注意: 对于希望在 c* 中使用无模式选项的任何人: https://blog.compose.io/schema-less-is-usually-a-lie/ http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/