【问题标题】:I am not sure which NoSQL is suitable for my scenario我不确定哪种 NoSQL 适合我的场景
【发布时间】:2015-07-17 02:30:44
【问题描述】:

我正在尝试设计创建一个基于云的系统 (IaaS),该系统将从传感器(与水污染相关的活动)收集数据,并在某些事件时决定处理特定传感器的数据。 数据特征是: 1. 对于每个传感器,数据每隔几天发送一次(每月最多 6 次) 2. 每个传感器读数包含大约 5000 个事件,这些事件封装在 50-100 条消息中发送到服务器(这样的“会话”大约需要 20 分钟,其中消息每 5 秒发送一次) 3. 我正在构建每秒处理 30,000 条消息的系统。 4.数据的处理不应该是实时的,一旦“会话”完成,我有大约10分钟的时间来进行处理。 5. 90% 的课程没有兴趣,一旦完成就可以扔掉。其他 10% 有事件或封装在消息中的事件,我需要根据它们决定是否需要处理整个会话数据并向传感器发送存在污染的警报。

我创建了一个每秒生成 5000 条消息的工具,我试图找出最适合我的场景的数据库。 这些是我想尝试的数据库:

  1. Cassandra - 我将为每个会话保存一个内存中的密钥集合。密钥用于存储在 cassandra 中的消息。一旦我检测到包含错误读数的消息,我将需要提取“会话”中的所有其他消息并处理它们(这意味着 50-100 个对 cassandra 的请求)。我关心的是写入性能(因为我有很多读写操作)+ 我没有删除 90% 不需要的会话的好策略。

  2. Couchbase - 我将根据 sensorID 为每个“会话”保存一个文档,并将每条消息附加到文档中。一旦我检测到包含错误读数的消息,我只需要发送一个文档请求。我关心的是读取性能。

  3. Redis - 像 cassandra 一样使用它。我认为性能会是最好的,但我需要自己处理数据的分片和复制,以免达到内存限制

我很想知道哪个选项最合适

谢谢

【问题讨论】:

标签: cassandra redis couchbase iot nosql


【解决方案1】:

注册。 Redis – 您可以考虑使用 DAAS(数据即服务)。该服务将为您管理所有实例、集群、扩展、数据持久性和高可用性设置。 一个例子是Redis Cloud by Redis Labs

【讨论】:

    【解决方案2】:

    这是一个有趣的问题。如果我们去了解 CAP Theorem 的基础知识,并尝试根据一致性、可用性和分区容错性的需要来选择一个 DB。

    为了高一致性和可用性 - 选择 MySQL、PostgreSQL、Greenplum、Vertica、Neo4J。

    为了高可用性和分区容错 - 使用 Cassandra、Voldemort、Dynamo、CouchDB、Riak

    为了高一致性和分区容错——使用 HBase、Redis、MongoDB、 BerkeleyDB、BigTable

    所以我在这里投票给 Cassandra。

    【讨论】:

    • 你没有提到 Couchbase。 CouchDB 不是 Couchbase。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2016-02-02
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多