繁体   English   中英

卡桑德拉(Cassandra)中的经常更新表

[英]Frequently Updated Table in Cassandra

我正在做一个基于物联网传感器的项目。 在这种情况下,每个传感器每分钟都会向服务器发送数据。 我预计将来最多会有10万个传感器。

我将每个传感器发送的数据记录在历史记录表中。 但是我有一个实时信息表,其中正在更新每个传感器的最新状态。

因此,我想每分钟更新一次与Live Table中每个传感器相对应的行。

这有什么问题吗? 我读到cassandra中频繁的更新操作是不好的。

有没有更好的办法?

我已经在项目中使用Redis来存储会话等。我是否应该将此LIVE表移至Redis?

这就是您要寻找的东西: https : //docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_memtable_thruput_c.html

如何调整内存阈值取决于数据和写入负载。 在以下任一情况下,提高内存吞吐量:

  • 写负载包括对较小数据集的大量更新。

  • 持续不断的连续写入流。 该动作导致更有效的压实。

因此,增加commitlog_total_space_in_mb可使Cassandra减少将内存表刷新到磁盘的频率。 这意味着您的大多数更新将仅在内存中进行,并且数据重复项会更少。

在C *,有用于读取的一致性级别和用于写入的一致性级别。 如果将仅具有一个节点,那么该问题将不适用,零问题,但是如果要使用多个dc或机架,则需要提高一致性级别,以使您要检索的是更新行的最新版本,或在写作级别使用高一致性级别。 就我而言,我使用ANY进行编写,使用QUORUM进行阅读。 这使我希望所有节点都可以写一个,而节点中只有51%可以读。 这是CAP定理的一个折衷。 请看一下:

http://docs.datastax.com/en/cassandra/latest/cassandra/dml/dmlConfigConsistency.html

https://wiki.apache.org/cassandra/Architecture概述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM