nosql - Cassandra:制作数据模型/模式

标签 nosql cassandra

(不确定它叫什么...模型..架构.. super 模型?)

我在“m”(唯一标识)个家中有“n”(唯一标识)个传感器。这些中的每一个都会触发 0 到“k”次/天(以 1-5 block 为单位)。此数据当前存储在 MySQL 中,每个“家”都有一个表,结构如下:

time stamp
sensor id
firing count

我无法围绕此数据的“nosql”模型思考问题,该模型使我能够按家庭、时间或传感器查找开火次数。

.. 或许这不是推送到 nosql 的正确数据类型?我们当前的服务器在负载下陷入困境(数亿行 x 数百个家庭)。我对寻找允许 cassandra 可扩展性的数据存储非常感兴趣。

最佳答案

这取决于。考虑“查询优先”方法:

  1. 确定查询
  2. 数据建模

因此,虽然您可能有一个 Column Family 作为您的物理模型,但您还会有一个或多个列族在查询时提供数据。并且,您可以进一步利用 Cassandra 的功能,例如:

列名可以包含数据。您不必存储值,每个名称都可以是时间戳,例如

它非常适合为每个键存储数千列,并且这些列将保持排序并且可以正向或反向顺序访问;因此,继续上面的示例,可以轻松获取传感器的所有时间戳列表

复合数据类型 允许您将多位数据组合成键、名称或值。例如合并房屋 ID 和传感器 ID

Counter Columns 提供简单的值增量,即使对于初始值也是如此,因此始终只是一个写操作。

索引可以在静态列名上定义,这实际上提供了一个以键作为结果的反向列族,只是要注意存储桶的大小(例如,可能不希望值为毫秒)

关于nosql - Cassandra:制作数据模型/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968311/

相关文章:

python - cqlsh 无法找到它需要执行的 Python 版本

amazon-dynamodb - DynamoDb - 如何进行批量更新?

database - SQL COUNT(*) 做法的替代方案?

firebase - 如何在集合中获取文档ID的列表而不在Firestore中获取文档的内容?

mongodb - 使用 $in 进行不区分大小写的搜索

c# - 为什么我不能在 CQL 中按主键排序?

Cassandra宽行和简单行在幕后

javascript - Firebase 警告 : Using an unspecified index

mongodb - MongoDB、CouchDB 和 Cassandra 需要 Solr/Lucene 吗?

cassandra - 优化通过Python驱动向Cassandra数据库插入数据