使用MySql进行大量数据处理

时间:2017-03-29 07:54:17

标签: mysql multithreading qt android-sensors bigdata

我对Mass storage有疑问。实际上,我正在使用5个传感器,每个传感器发送大量不同频率的数据,并且我使用MySQL DATABASE

所以这是我的问题:

1)是MySQL完美的解决方案。 2)如果没有,是否有解决方案将大量数据存储在数据库中? 3)我在这里使用Threads我也在使用mutexs,我担心如果这会导致问题,实际上,似乎是。

我希望我能回答这个问题。

4 个答案:

答案 0 :(得分:0)

如果您拥有“大量数据”,使用数据库可能会增加额外的计算开销。另一个问题是你如何处理数据?如果只堆叠它们,地图/矢量就足够了。 第一步可能是使用map / vector,您可以在需要时序列化到文件。其次,如果您愿意,可以添加数据库。

关于互斥锁如果你用不同的线程共享一些代码,并且如果(在这段代码中)你同时处理相同的数据,那么你需要它们。否则删除它们。顺便说一句,如果您可以分开读写操作,那么您不需要互斥/信号量机制。

答案 1 :(得分:0)

您可以在任何地方存储数据,但数据存储结构的选择取决于用例(您希望对数据执行的操作)。
它可以是HDFS文件,RDBMS,NoSQL DB等 例如,您的共同点可能是:
1.非常快速地保存传感器数据。
2.在确定日期获取传感器数据 然后,您可以使用MongoDB或Cassandra 如果您想获得深度分析(获取月平均传感器数据),您绝对应该考虑其他解决方案 至于MySQL,它也可以用于一些合理的大数据存储, 因为它支持分片。
它适合某些场景,有些则不适合。
但我再说一遍,所有这些都取决于用例,即你想要用数据做的事情。 因此,您可以提供更多详细信息(定义所需的用例),或再次询问。

答案 2 :(得分:0)

MySql是OLTP场景的理想解决方案,您可以在其中存储交易以提供Web或移动应用程序。但它不能很好地扩展(尽管有集群能力)。

根据对您来说重要的内容,有很多选择: 文件系统:您可以设置自己的预写日志解决方案来解决多线程问题并实现最终的一致性#34;。这样您就不必一次锁定一个线程的数据。您可以使用CSV,Avro或Parquet等架构完整文件。您还可以使用S3或WSB进行基于云的块存储。或HDFS仅用于阻止和复制存储。

NoSql:您可以将每个条目存储为NoSql Document存储中的文档。如果您想将数据保存在内存中以便更快地读取,请浏览Memcached或Redis。如果要对数据执行搜索,请使用Solr或ElasticSearch。 MongoDB很受欢迎,但它具有类似于MySql的可伸缩性问题,如果您需要更高的可伸缩性,我会选择Cassandra或HBase。对于一些NoSql商店,您可能需要解析您的"文件"在读取时间可能会影响分析性能。

RDBMS:由于MySql不够灵活,您可以探索Teradata和Oracle。最新版本的Oracle提供了PB级查询功能和内存缓存。

答案 3 :(得分:0)

有几个问题讨论了很多数据"和[mysql]。他们通常说'是的,但这取决于你将用它做什么"。

一些一般性陈述(YMMV):

  • 一百万行 - 没问题。
  • 十亿行或一兆兆的数据 - 你会遇到问题,但它们并非无法克服。
  • 旋转磁盘上每秒100次插入 - 可能没问题
  • 可以插入1000行/秒;麻烦是可以克服的
  • 创建"报告"在使用汇总表之前,从大表开始是有问题的。

两个线程存储在"相同的#34;时间? 每个 RDBMS(包括MySQL)在 发布之前解决问题。互斥体(或其他)内置于代码中;你不必担心。

"实时" - 如果每秒插入100个传感器值将每个值与另一个值进行比较:没问题。与其他一百万个值相比:任何系统的大问题。

" 5个传感器" - 每小时阅读一次?打哈欠。每分钟?打哈欠。每一秒?可能还是打哈欠。 我们需要更具体的数字来帮助您!