MySql 的大量数据

Big quantity of data with MySql

我有一个关于 Mass storage 的问题。实际上,我正在使用 5 个传感器,每个传感器以不同的频率发送大量数据,我使用的是 MySQL DATABASE.

所以这是我的问题:

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

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

如果您有 "lot of data",使用数据库会增加额外的计算开销。另一个问题是您如何处理数据?如果只是堆叠,一个map/vector就够了。 第一步可能是使用 map/vector ,您可以在需要时将其序列化到文件中。其次,您可以根据需要添加数据库。

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

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

MySql 是 OLTP 场景的良好解决方案,在这些场景中,您存储事务以服务于 Web 或移动应用程序。但它不能很好地扩展(尽管有集群能力)。

根据对您的重要程度,有多种选择: 文件系统:可以设计自己的write-ahead-log解决多线程问题,实现"eventual consistency"。这样您就不必一次为一个线程锁定数据。您可以使用 CSV、Avro 或 Parquet 等全架构文件。您也可以将 S3 或 WSB 用于基于云的块存储。或仅用于块和复制存储的 HDFS。

NoSql:您可以将每个条目存储为 NoSql 文档存储中的文档。如果您想将数据保存在内存中以加快读取速度,请探索 Memcached 或 Redis。如果要对数据执行搜索,请使用 Solr 或 ElasticSearch。 MongoDB 很受欢迎,但它具有类似于 MySql 的可扩展性问题,如果您需要更高的可扩展性,我会选择 Cassandra 或 HBase。对于某些 NoSql 商店,您可能必须在读取时解析您的 "documents",这可能会影响分析性能。

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

有几个问题讨论了 "lots of data" 和 [mysql]。他们一般说"yes, but it depends on what you will do with it".

一些一般性陈述(YMMV):

  • 一百万行 -- 没问题。
  • 十亿行或 1 TB 的数据 -- 您将 运行 遇到问题,但它们没有问题table。
  • 每秒在旋转磁盘上插入 100 次——可能没问题
  • 1000 rows/second插入即可;烦恼难逃table
  • 从巨大的 table 中创建 "reports" 是有问题的,直到您使用汇总表。

两个线程在 "same" 时存储到同一个 table? Every RDBMS(包括 MySQL)解决了 before first 版本的问题。互斥体(或其他)内置在代码中;你不用担心。

"Real time" -- 如果您每秒插入 100 个传感器值 并且 将每个值与另一个值进行比较:没问题。与其他一百万个值相比:any 系统存在大问题。

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