从开发人员的角度来看,我可以说几乎所有传统的主流数据库引擎都只能向外扩展,而向外扩展则是深思熟虑的。
近年来,由于需要更大的可伸缩性和高度可用的系统,人们一直在努力扩展现有数据库。但是,由于设计受遗留代码的阻碍,因此它很大程度上只是固定在设计上,而不是设计的基础。如果尝试扩展大多数众所周知的数据库引擎,就会遇到这种情况。添加从服务器可能很难设置,并且您会注意到它具有很大的局限性,其中某些局限性可能要求重新调整数据库表的位置。
例如,它们大多数是主/(多)从属设计,而不是多主设计。换句话说,您可能只是将一台整个服务器放在那儿而无法处理查询。有些功能可以,但是有局限性...例如,只读多从机设计。因此,您可能有一台服务器进行写操作,而其他所有服务器都提供只读数据。您会注意到,在设置这些系统时,这并不总是一个简单的过程,并且很难正常工作。在很多情况下,添加感觉非常麻烦。
另一方面,从一开始就有一些新的数据库引擎通过并发和多主机设计进行开发。 NOSQL和NewSQL是新的设计类。
因此,扩大传统SQL服务器的性能似乎是最好的方法!使用NOSQL和NewSQL时,它既可以扩展又可以扩展。
传统RDBMS系统紧密耦合的原因是,它们都需要相同数据的一致视图。如果有多台服务器接受来自不同客户端的同一数据的更新,那么您信任哪一个?任何试图通过某种锁定机制确保数据一致的方法都需要来自其他服务器的合作,这可能会损害性能或影响数据质量,因为从客户端读取的任何数据可能都已过时。服务器需要在彼此之间决定写入同一记录时最新的数据。如您所见,这是一个复杂的问题,因为工作负载分布在服务器之间,而不仅是在进程或线程之间分布,因此对数据的访问仍然非常快,这使问题变得更加复杂。