您如何在数据库中组织大数据?

How do You Organize Big Data in your Database?

我有一些包含大数据的数据库,现在我正在考虑如何组织它们以使其更具可扩展性。

我考虑的一点是:

  1. 安全
  2. 性能
  3. 费用

总的来说欢迎回答,因为我还没有预料到我所有的问题或可能的风险都会发生,如果你能给我一些建议,它会帮助我。

为了给您的问题一个完整的答案,我们需要更多关于数据有多大、有多复杂、您的用例是什么的信息(即,您是否对多个 table 或他们大多在一个 table 上吗?)。无论如何,这里有一些很好的建议可以帮助您继续前进。

  1. 如果您希望数据快速增长,我建议您考虑基于云的数据库解决方案,而不是投资于需要经常更换的物理硬件。基于云的解决方案使您可以更自由地纵向和横向扩展数据库。有专门的云数据库技术,例如 Amazon RedShift and recently introduced Aurora,可以随着您的需求增长轻松配置。
  2. 为了提高数据库的性能,您可以随时查看索引和结构变化。使用 MySQL 中的 explain 语法来分析您的查询,并查看查询是否使用临时 tables 或数据扫描来降低速度。向用于过滤或合并数据的列添加索引可显着提高性能。
  3. 在数据仓库中,您还可以 denormalize 和预连接 table 来提高性能。虽然这会大大增加您的存储使用量,但由于您只处理一个数据 table 会提高性能,因为一遍又一遍地进行连接所花费的时间被取消了。
  4. 如果您正在查看结构和复杂性会增加的海量数据集,还有其他非关系数据库技术,例如 noSQL based Hadoop, Cassandra 等。进入这些环境可能需要您重写大部分应用程序,但是当数据变得太大时,你发现自己需要这些东西之前应该考虑一下。

编辑

  1. @Saïd Tahali 在评论中指出的隐私和数据安全。如果您出于法律或安全原因无法在外部托管数据,则需要投资购买自己的硬件来解决上述所有内部问题。