从概念上讲,数据库分片与联邦有何不同

Posted

技术标签:

【中文标题】从概念上讲,数据库分片与联邦有何不同【英文标题】:Conceptually, how does database sharding differ from a federation 【发布时间】:2012-04-06 08:51:43 【问题描述】:

谁能提供以下之间的关键概念差异:

    MongoDB 分片 SQL Server 联合实例。

它们看起来非常相似,但我不知道我是否遗漏了什么重要的东西。

谢谢。

【问题讨论】:

分片是将一组数据拆分到不同的服务器上,而联邦是一组人类、火神人和安多利亚人。 是的,但不是我想要的答案! @AlexHowansky 我不知道我是否应该举报或投票,也许我可以两者兼得。 【参考方案1】:

在高层次上,它们是相似的。

在 MongoDB 中,您有多个“副本集”,您可以跨这些集“分片”数据以实现水平可扩展性。 在 SQL Server 中,您可以在服务器之间使用“复制”,然后在复制的服务器之间提供“分区视图”以实现水平可扩展性。

最大的区别在于实现和技术本身。例如,SQL Server 支持连接,实际上有一些跨服务器连接的逻辑。 MongoDB 没有连接的概念,也没有提供这种逻辑。

两个系统都使用某种形式的分区键来对数据进行分区。 SQL Server 需要应用程序级逻辑来将查询发送到最佳节点 (colocating)。 MongoDB 提供了一个路由程序mongos,它可以正确路由分片查询,而无需额外的应用程序逻辑。

还有平衡的问题。 MongoDB 提供自动平衡,因此如果一个分片数据过载,其中一些数据将被发送到其他节点。使用 SQL Server,您必须手动定义分区和它们所在的服务器。

显然还有很多其他细节,但这看起来像是高级别的差异。

【讨论】:

谢谢盖茨,很好的回答。关于连接的公平点,但数据很容易被隔离,所以这不是问题。

以上是关于从概念上讲,数据库分片与联邦有何不同的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的数据库分片

概念与接口有何不同?

什么是真正的敏捷开发?敏捷开发与瀑布开发有何不同

什么是真正的敏捷开发?敏捷开发与瀑布开发有何不同

结构递归与生成递归有何不同?

创客机器人教育与少儿编程教育有何不同?越早知道越好!