我有一个监控设备的Saas应用程序。
我开发了一个监控平台传感器。 我的应用程序目前监控大约100,000
个传感器。
每15分钟记录一次值。
每个测量值当前存储在一个MySQL表中(timestamp => value)。
要限制MySQL
表中的行数,单个传感器的所有点都会合并到每日日志中。
传感器数量呈指数增长。
我的BDD已经100GB
。
根据这些措施,我必须进行合并daily, monthly, annual and total
。
我的应用程序需要快速访问最近的数据,但我必须保留历史至少10年并且可以咨询它们。
NoSQL architectures
似乎是存储大量数据并进行整合的解决方案。
哪种解决方案最适合存储此类数据。
我测试了CouchDB
。我在不同的NoSQL solution (Hadoop,cassandra, mongodb...)
我正在寻找有关这次经历的反馈。
答案 0 :(得分:0)
我会根据你对你提到的一些技术的经验给出建议。
使用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条目?),然后通过添加节点可以无限扩展。
- 我会找到一些你喜欢编写查询的东西。很多解决方案都会横向扩展,但并非所有解决方案都围绕着它们。