繁体   English   中英

为什么“加入”会降低大规模分布式数据库系统的可扩展性?

[英]Why do “joins” reduce scalability in large-scale distributed database system?

我想知道如何以及为什么“加入”会降低大规模分布式(关系型)数据库系统的可扩展性?

谢谢。

作为一般考虑,在分布式系统中存在显着的开销(例如,非用户计算),其呈现“连贯的”和“统一的”外观。

只需考虑以下因素:

  • 不同的节点(例如服务器)是不同的机器。 这意味着让n个节点参与分布式动作(例如,连接)处于最佳状态(例如,在缓存中只有正确的表,或者获得适当的锁)的概率很低。 所以这是每个节点进入适当状态的一些开销。

  • 他们自然需要沟通才能协调。 因此节点之间存在网络喋喋不休,这些延迟并不是无关紧要的。

  • 反过来,上述开销会增加服务请求的平均时间,从而降低可用性(就系统容量而言)。

可伸缩性成为一个问题,因为以上都不是O(1)。 在最好的情况下,你可以期待O(log n),它可能与O(n ^ 2)一样糟糕。 这对于杀死可扩展性(其定义意味着系统扩展到更多节点的能力)具有奇迹。

以上是noSQL系统动机的一部分,例如,如果不需要跨节点协调服务查询,那么性能要好得多。 (正如你所看到的,这不是魔术 - 我们只是牺牲了系统性能的正确性。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM