无共享架构数据库

时间:2018-08-17 06:25:36

标签: database architecture nosql

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

1 个答案:

答案 0 :(得分:1)

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

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