处理大数据的数据库

时间:2018-01-26 07:22:31

标签: mysql database

我们已经使用MySQL,spring boot和Angular js开始了一个新项目。最初,我们没有意识到我们的数据库将处理大数据。

表的数量不会很大(<130),只有10到20个表将包含在更多数据中,几乎插入/读取/更新。

该10表中估计的数据量将在一个月内增加到12,00,000条记录,我们不应删除那些能够执行各种报告的数据。

需要(只读)复制数据库作为备份/故障转移,并且可能用于在高峰时间卸载报告。

我没有这些大型数据库的第一手经验,所以我要问那些在这种情况下哪个DB是最佳选择的人。因为我们已经完成了100%的编码和开发,但现在我们意识到这一点。我怀疑MYSQL可能会处理大数据。我知道Oracle是安全的赌注,如果Mysql有类似的设置感兴趣。但它仅限于MySQL,我可以根据你的所有反馈我可以接听电话。

开源数据库更为可取但不强制我们也可以使用付费数据库。

2 个答案:

答案 0 :(得分:1)

处理大数据

MySQL能够处理这样的负载。实际上,它能够处理比你所说的更多的负载。你只需要创建正确的表格。你可以选择

来做到这一点
  • 适用于您的用例的正确存储引擎
  • 正确的字符集
  • 列的最佳数据类型
  • 正确的索引策略 - 精心创建索引
  • 正确的分区策略(如果表中的数据超过数千万条记录)

编辑:您还必须为您的用例选择正确的数据建模和规范化策略。大多数OLTP应用程序都需要一定程度的规范化。但是,如果您想对繁重的表进行分析和聚合,您应该拥有一个具有高度非规范化表的数据仓库以避免连接and/or具有一个面向列的数据库来支持此类查询。

MySQL是开源的,并且拥有非常强大的社区支持,因此您可以找到有关您遇到的任何问题的大量文献。您还可以找到所有提交的错误(已解决和未解决)here

就表格数量而言,确实没有上限。如果您使用InnoDB作为引擎,请参阅here,MySQL允许40亿个表。

很多规模很大的公司都在某种程度上使用MySQL。 Facebook就是其中之一。

原生JSON支持

随着JSON作为互联网上事实上的数据交换格式的日益普及,MySQL还在5.7中提供了本机JSON支持,因此现在您可以根据需要从API中存储和查询JSON。

HA和复制

MySQL Replication有效!早些时候,MySQL过去只支持坐标复制,但现在它支持GTID复制,这使得维护和修复复制问题变得更加容易。市场上也有第三方复制器。例如,Continuent的Tungsten是一个用Java编写的复制器,它是本机复制的替代品。它带有许多配置选项,这些选项在本机MySQL复制时不可用。

答案 1 :(得分:0)

我同意MontyPython,MySql可以做到,设计很关键。幸运的是,MySql允许您根据需要随时保持灵活性。

我已经在日常报告中使用了历史表,在普通的MySql中增长到超过10亿条记录并且没有问题。

我还使用MySql Merge表来划分具有大行(100KB +)的表格以加快速度。基本上保持各个合并表文件大小不超过30GB。但是,该解决方案会增加每个客户端的打开文件数(在系统中) - 在集群系统上可能会有更大的优势。那个不是。

那就是说,我想提到荣誉奖:

MariaDB - MySql但来自Facebook, Alibaba, Google, and more的贡献。

我已将我的大多数MySql社区版项目移至MariaDB并且非常高兴。这是一个几乎透明的升级。

他们提供了一个有趣的企业大数据分析(MariaDB AX)软件包,但根据您当前的要求,它可能过度,标准社区版将满足您的需求。

例如,这里有一个关于如何设置可扩展集群(Galera)和为高可用性添加MaxScale的信息性教程:

https://mariadb.com/resources/blog/getting-started-mariadb-galera-and-mariadb-maxscale-centos

另一个有趣的选项是Vitesse - 在Youtube开发,它允许通过(大多数)基于驱动程序的解决方案分片mysql。它解决了需要可访问大量数据并始终产生良好性能的问题。因此,它超越了高可用性,并专注于一种解决方案,其中没有单个查询(即针对数百万行历史数据的报告)可能会对需要执行的其他查询产生负面影响。