首页 > 解决方案 > 无共享架构数据库

问题描述

由于大规模可扩展性的可能性,无共享架构似乎很流行。进程不共享任何内容。任何非平凡的应用程序都会有一些状态。理想情况下,此状态不应出现在运行进程的硬件中。原因是,我们希望如果硬件/进程崩溃,客户端应该能够在新进程甚至新硬件中重新运行它。这个状态去哪儿了?让我们尝试某种数据库.. NoSql Redis、Mongo 或 RDBMS Oracle.. 任何东西。现在 IMO 这不再是 Shared Nothing,因为数据库成为瓶颈。现在在维基百科上什么都不分享给出了一个小提示,即使使用分片也不共享数据库!我的q是..如果有n个进程,会有n个数据库实例吗?我相信每个进程都应该在它自己的硬件或管理程序中运行。因此,对于 n 个进程和 n 个相应的数据库,应该需要 2*n 个硬件(不包括数据库中需要的复制)。正如维基百科链接所述,毫无疑问,对数据库的连接查询会很昂贵。但是扩展的可能性是无限的。我的假设正确吗?如果,我需要将进程数从 n 增加到 m。那么 n 个数据库发生了什么。我应该增加到 m 个数字并重新分片吗?现在添加具有自动缩放功能的负载均衡器。这意味着流程可以按比例放大和缩小。我们现在如何将无共享数据库与这些进程相匹配?谢谢。

标签: databasearchitecturenosql

解决方案


“n”个数据库实例必须在“n”个独立服务器上运行,以实现完整的无共享设置和无限水平扩展。我对分片如何与 Oracle 一起工作有一些了解。让我试着回答一些关于 Oracle 分片的问题。我建议通过Oracle Sharding来理解下面提到的几个术语。

  1. 如果您需要增加数据库实例的数量(根据您的问题处理),那么只需生成所需的数量并将数据库实例添加到分片环境中。
  2. 您将需要重新部署以重新分片数据库并重新分配负载。
  3. 当您重新分片时,编目数据库和分片控制器被编程为使用当前分片环境更新自身,并将添加有关新数据库的信息。

推荐阅读