我有一个监控设备的saas应用程序。
我开发了一个传感器监控平台。我的应用程序目前大约 100,000
传感器。每15分钟记录一个值。
每个度量值当前都存储在一个mysql表中(timestamp=>value)。限制 MySQL
表中,将单个传感器的所有点合并到每日日志中。
传感器的数量呈指数增长。我的bdd已经 100GB
.
从这些措施,我必须作出巩固 daily, monthly, annual and total
.
我的应用程序需要快速访问最近的数据,但我必须保留至少10年的历史记录,并可以查阅它们。 NoSQL architectures
似乎是存储大量数据并进行整合的解决方案。
哪种解决方案最适合存储这类数据。
我测试过了 CouchDB
. 我在不同的地方犹豫不决 NoSQL solution (Hadoop,cassandra, mongodb...)
我在找关于这次经历的反馈。
1条答案
按热度按时间rm5edbpk1#
我将根据我对你提到的一些技术的经验给出建议。
使用hdfs/flume/hadoop
您可以考虑只编写纯文本文件,然后使用flume(http://flume.apache.org/)将它们移动到hdfs(http://en.wikipedia.org/wiki/apache_hadoop#hadoop_distributed_file_system).
之后,您可以使用hadoop及其所有工具针对hdfs中存储的平面文件编写map/reduce作业。hdfs将允许您很好地扩展存储大小。
使用mongo
您可以在mongo中设置一个副本集并水平扩展以存储日志数据,但是100gb和不断增长的容量对于副本集来说可能有点太大了。mongo中的副本集(概念上与“集群”相同)不会无限扩展。
如果您发现您正在重载一个复制集,您可以共享日志信息(可能是通过传感器和id条目?),然后您可以通过添加节点来无限扩展。
--我会找到一些你喜欢写查询的东西。很多解决方案可以横向扩展,但并非所有解决方案都有相同的生态系统。