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

Cassandra数据库设计-1000列或动态创建的表,cassandra,Cassandra,我想听听你关于广告代理数据库潜在解决方案的建议 我们希望建立一个能够以我们所知道的方式跟踪用户的系统 他们在广告上做了什么,在哪里 有许多类型的广告,其中一些也有表格,所以用户可以填写数据。 每个表单都不同,但我们不希望每个表单都创建表 我们考虑创建一个非常宽的表,包含1k列,每种类型几十列,并存储数据 简言之: 使用卡桑德拉 创建日表,以便将数据存储在日表上 每个表将有1000列(100列表示日期时间,100列表示整数等) 应用程序逻辑将数据映射到相关的COL中,以便我们以后能够搜索和更新这些

我想听听你关于广告代理数据库潜在解决方案的建议

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

有许多类型的广告,其中一些也有表格,所以用户可以填写数据。 每个表单都不同,但我们不希望每个表单都创建表

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

简言之:

  • 使用卡桑德拉
  • 创建日表,以便将数据存储在日表上
  • 每个表将有1000列(100列表示日期时间,100列表示整数等)
  • 应用程序逻辑将数据映射到相关的COL中,以便我们以后能够搜索和更新这些COL


    您对此有何看法?

    在Cassandra中动态生成表时要小心。当您有太多的表时,您将开始出现问题,因为存在每个表的内存开销。Per:

    Cassandra将为每个CF的memtable预留至少1MB:

    在Cassandra中,即使是每日表格也不是一个好主意(每个表格的表格更糟糕)。我建议您构建一个能够容纳所有数据的表,并且您知道该表可以很好地扩展—请使用验证

    此时,请注意mikea的建议,并开始考虑您的访问模式(参见Patrick的),您可能需要构建额外的表来满足查询需求

    注意:对于希望在c*中使用无模式选项的人:

    一个直接的想法是,您需要考虑如何查询数据,而不是如何存储数据。根据表单字段查询数据。假设它是一个表单生成器,每个表单都不同,所以查询也不同..我明白了,但我的表单是不同的,没有共同点,所以不存在正常的结构。至少,你应该能够这样做:创建表(表单id uuid,字段名称文本,字段值文本,主键(表单id,字段名称)),换句话说,de Normalzethis只是一个你可以走的方向的例子。您可以为您的特定用例找到一个令人满意的媒介。如果有帮助,请考虑使用集合或用户定义类型。但是,为了方便起见,请准备好支付性能罚款。您对我上面提到的选项有何看法?