【问题标题】:Which approach and database to use in performance-critical solution在性能关键型解决方案中使用哪种方法和数据库
【发布时间】:2013-06-12 20:57:37
【问题描述】:

我有以下场景:

  • 大约 7000 万台设备每 3~5 分钟发送一个信号到 服务器发送其 id、状态(在线或离线)、IP、位置 (经纬度)、父节点等一些信息。

  • 其他信息可能不是标准格式(所以我没有架构)但我仍然需要查询它。

  • 设备可能会消失一段时间(或永远)不发送 过程中的信号。所以我需要一种方法来“忘记”这些设备,如果 他们在过去 X 天内没有发出信号。还有新设备 随时可能上线。

  • 我需要查询所有这些数据。就像知道特定区域或以上有多少设备离线 IP 范围。不会有很多查询同时运行。

  • 一些查询需要快速运行(每个查询少于 3 分钟)并且 在数据库更新的同时。所以我需要索引 主要属性(id、状态、IP、位置和父节点)。这 查询结果不需要100%准确,最终一致 只要不需要太长时间(超过 20 分钟)就可以了 平均),以便它们出现在查询结果中。

  • 我不需要 坚持到底,停电就算输了 一切。

考虑到这一切,我考虑过使用 noSQL 方法,可能是 MongoDB 或 CouchDB,因为我有使用 MapReduce 和 Javascript 的经验,但我不知道哪个更适合我的问题(我倾向于 CouchDB)或者它们是否适合完全适合处理如此庞大的工作量。我什至不知道我是否真的需要一个“传统”数据库,因为我不需要持久性到磁盘(也许主内存方法会更好?),但我确实需要一种轻松构建自定义查询的方法。

我发现的主要问题如下:

  • 需要非常快速地插入/更新大量元组,我不知道 如果我收到的信号已经在数据库中,请事先说明。 几乎所有的信号都将处于与之前相同的状态 上次,所以也许可以通过 id 查询并检查元组是否改变了,如果没有做任何事情,如果它确实更新了?

  • 忘记离线设备。夜间运行的批处理作业 删除过期的元组可以解决这个问题。

  • 不会有很多查询同时运行,但它们需要 跑得快。所以我想我需要一个集群来执行 集群多个节点上的单个查询(CouchDB MapReduce 将工作负载拆分到集群的多个节点?)。我不是 我很确定我需要一个集群,但可以单独一个更贵 机器处理所有负载?

  • 我以前从未使用过noSQL系统,但我有理论 对主题的了解。

【问题讨论】:

    标签: database performance nosql eventual-consistency


    【解决方案1】:

    这有意义吗?

    Apache Flume 用于收集信号。

    它是一个分布式、可靠且可用的系统,用于有效地收集、聚合来自许多不同来源的大量日志数据并将其移动到集中式数据存储。易于配置和扩展。使用 Flume 将数据作为文件存储在 HDFS 中。

    Hive 用于批量查询。

    将 HDFS 中的数据文件映射为 Hive 仓库中的外部表。每当您需要离线批处理时,使用 HiveQL 编写类似 SQL 的查询。

    HBase 用于随机实时读取/写入。

    由于 HDFS 作为 FS,缺乏随机读/写能力,因此您需要一个数据库来实现该目的。查看您的用例 HBase 对我来说似乎很好。我不会说 MongoDB 或 CouchDB,因为您在这里处理的不是文档,而且它们都是面向文档的数据库。

    Impala 用于快速的交互式查询。

    Impala 允许您直接对存储在 HDFS 或 HBase 中的数据运行快速的交互式 SQL 查询。与 Hive 不同,它不使用 MapReduce。相反,它利用了 MPP 的强大功能,因此非常适合实时处理。它使用起来很容易,因为它使用与 Hive 相同的元数据、SQL 语法 (Hive SQL)、ODBC 驱动程序等。

    HTH

    【讨论】:

      【解决方案2】:

      根据分析的类型,CouchDB、Flume 的 HBase 可能都是不错的选择。对于严格数字的“一次写入”指标数据,石墨是一种非常流行的开源解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 2015-03-15
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多