我正在做一个基于物联网传感器的项目。在这里,每个传感器都在每分钟向服务器发送数据。我预计将来最多可以使用10万个传感器。
我正在记录历史表中每个传感器发送的数据。但我有一个实时信息表,其中每个传感器的最新状态正在更新。
所以我想每分钟更新Live Table中每个传感器对应的行。
这有什么问题吗?我读到cassandra中频繁的更新操作很糟糕。
有更好的方法吗?
我已经在我的项目中使用Redis来存储会话等。我应该将这个LIVE表移动到Redis吗?
答案 0 :(得分:2)
这就是您要找的内容:https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_memtable_thruput_c.html
如何调整可记忆阈值取决于您的数据和写入负载。在以下任一条件下提高可记忆吞吐量:
写入加载包括对较小数据集的大量更新。
发生稳定的连续写入流。这一举措可以提高压缩效率。
因此,增加 commitlog_total_space_in_mb 会使Cassandra将memtables刷新到磁盘上的次数减少。这意味着您的大多数更新将仅在内存中进行,您将获得更少的重复数据。
答案 1 :(得分:0)
在C *中,读取的一致性级别和写入的一致性级别。如果只有一个节点然后这不适用,零问题,但如果要使用多个dc或机架,则需要增加一致性级别以授予您检索的内容是更新行的最后一个版本,或在写作级别使用高一致性级别。在我的情况下,我使用ANY来编写和QUORUM来阅读。这允许我让所有节点期望一个向下写入和51%用于读取的节点。这是CAP定理的权衡。请看一下:
http://docs.datastax.com/en/cassandra/latest/cassandra/dml/dmlConfigConsistency.html