展开讨论

经验与复盘经验摘录 · 机器翻译

感谢这篇文章,planetscale

感谢这篇文章,planetscale。我最近迷上了分片,但更多是出于多线程性能的考虑。我想要一个多主的Postgres。我开始尝试编写一个Postgres同步器,通过按行和列排序,并对每一列和行的数据进行哈希处理,然后对数据进行滚动哈希。理论上,两个数据库可以通过发送它们数据的最终哈希值,然后进行二分查找,直到哈希值匹配。这样就可以确定数据库中哪些部分不同,需要传输。如果数据库是相同的,那么传输的数据量会非常少。我还没有解决的一个问题是,如何在不改变应用程序查询的情况下决定哪个数据库是胜利者。如果同步两个多主Postgres数据库,它们各自独立地写入了不同的部分,那么如何确定某一列/行组合的真相来源?

源讨论数据库分片是如何工作的?原帖 107 条评论 · 导入时统计
3

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 3

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

PR

"向后进行二分查找"这个说法并不明确,也不能保证一致性上的上限 根据表中的单个行来分片数据是很有挑战性的,这样无法获得查询的可靠保证 "哪个数据库是胜利的数据库"这个问题取决于单个行,一个需要从N个不同的行所有者处读取数据的查询需要查询N个不同的实例,否则就必须接受它可能在处理过时的数据

完整原文
AD

> 我还没有解决的一个问题是,如何在不修改应用查询的情况下决定哪个数据库是胜利的数据库。 我认为这是一个"两个将军问题"[0]的案例,这意味着没有可证明正确的解决方案可以实现这一点。 > 如果你同步两个有独立写入不同部分的多主Postgres数据库,你如何确定某个列/行组合的真相来源是哪个数据库? 没有仲裁就做不到[1],而且即使有仲裁也不能保证成功。 0 - https://en.wikipedia.org/wiki/Two_Generals%27_Problem 1 - https://en.wikipedia.org/wiki/Split-brain_(computing)

完整原文
MY

Spock可能对你有帮助:https://pgedge.github.io/spock/

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。