Cassandra数据库设计 - 1000列或动态创建的表

时间:2015-04-17 13:09:49

标签: cassandra

我想听听您对广告代理商数据库潜在解决方案的建议。

我们希望构建一个能够以我们所知道的方式跟踪用户的系统 他们在广告上做了什么,以及在哪里。

广告类型很多,其中一些也是FORMS,因此用户可以填写数据。 每个表单都不同,但我们不想为每个表单创建表格。

我们考虑创建一个包含1k列的WIDE表,每种类型数十个,并存储数据。

简而言之:

  1. 使用Cassandra;
  2. 创建每日表格,以便将数据存储在每日表格中;
  3. 每个表都有1000个cols(100个用于datetime,100个用于int等)。
  4. 应用程序逻辑会将数据映射到相关的cols中,以便我们以后能够搜索和更新这些文档。

    你怎么看待这个?

1 个答案:

答案 0 :(得分:2)

小心在Cassandra中动态生成表。当您有太多表时,您将开始遇到问题,因为每个表的内存开销很大。每Jonathan Ellis

  

Cassandra将为每个CF的记忆保留至少1MB:http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-performance

即使是每日表在Cassandra中也不是一个好主意(每个表格的表格更糟糕)。我建议您构建一个可以保存所有数据的表格,并且您知道这些表格可以很好地扩展 - 请使用cassandra-stress进行验证。

此时,听取了mikea的建议并开始考虑您的访问模式(请参阅Patrick的video series),您可能需要构建其他表以满足您的查询需求。

注意:对于希望在c *中使用无模式选项的任何人: https://blog.compose.io/schema-less-is-usually-a-lie/ http://rustyrazorblade.com/2014/07/the-myth-of-schema-less/