jan*_*ith 6 database distributed
我想知道如何以及为什么"加入"会降低大规模分布式(关系型)数据库系统的可扩展性?
谢谢.
作为一般考虑,在分布式系统中存在显着的开销(例如,非用户计算),其呈现"连贯的"和"统一的"外观.
只需考虑以下因素:
不同的节点(例如服务器)是不同的机器.这意味着让n个节点参与分布式动作(例如,连接)处于最佳状态(例如,在缓存中只有正确的表,或者获得适当的锁)的概率很低.所以这是每个节点进入适当状态的一些开销.
他们自然需要沟通才能协调.因此节点之间存在网络喋喋不休,这些延迟并不是无关紧要的.
反过来,上述开销会增加服务请求的平均时间,从而降低可用性(就系统容量而言).
可伸缩性成为一个问题,因为以上都不是O(1).在最好的情况下,你可以期待O(log n),它可能与O(n ^ 2)一样糟糕.这对于杀死可扩展性(其定义意味着系统扩展到更多节点的能力)具有奇迹.
以上是noSQL系统动机的一部分,例如,如果不需要跨节点协调服务查询,那么性能要好得多.(正如你所看到的,这不是魔术 - 我们只是牺牲了系统性能的正确性.)