我正在尝试设计创建一个基于云的系统(IaaS),该系统将从传感器(水污染相关活动)收集数据,并在某些事件时决定处理特定传感器的数据。数据特征是: 1. 对于每个传感器,数据每隔几天发送一次(每月最多 6 次) 2. 每个传感器读数包含大约 5000 个事件,这些事件封装在发送到服务器的 50-100 条消息中(这样的“会话”大约需要 20 分钟,其中每 5 秒发送一次消息) 3. 我正在构建系统以处理每秒 30,000 条消息的速率。4.数据的处理不应该是实时的,一旦“会话”完成,我有大约10分钟的时间来进行处理。5. 90% 的课程没有兴趣,一旦完成就可以扔掉。
我创建了一个每秒生成 5000 条消息的工具,我试图找出哪个数据库最适合我的场景。这些是我想尝试的数据库:
Cassandra - 我将为每个会话保存一个内存中的密钥集合。密钥用于存储在 cassandra 中的消息。一旦我检测到包含错误读数的消息,我将需要提取“会话”中的所有其他消息并处理它们(这意味着对 cassandra 的 50-100 个请求)。我在这里关心的是写入性能(因为我有很多读写操作)+我没有一个好的策略来删除 90% 不需要的会话。
Couchbase - 我将根据 sensorID 为每个“会话”保存一个文档,并将每条消息附加到文档中。一旦我检测到包含错误读数的消息,我只需要发送一个文档请求。我关心的是读取性能。
Redis - 像 cassandra 一样使用它。我认为性能将是最好的,但我需要自己处理数据的分片和复制,以免达到内存限制
我很想听听哪个选项最合适
谢谢