展开讨论

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

每次我在自己参与的系统中放松一致性保证(或听到同事这样做)时,……

……每次我在自己参与的系统中放松一致性保证(或听到同事这样做)时,我们都会后悔。几年前在一家初创公司,我们需要为一个数据库构建一个外部搜索索引。数据库是实时更新的——我们有一个变更流,可以实时更新浏览器中的记录。负责该任务的工程师做了一个“足够好”的工作——他写了一个粗糙的脚本,只在大部分情况下正确。但有时会导致索引与数据不一致。我们经常收到用户报告说某些项目在搜索结果中没有显示出来。他会认真地回去调整各种东西,试图修复这个问题。最终,我们的一位资深工程师进入并重写了整个索引脚本,使其严格正确。从那以后,我们再也没有听到任何关于这个问题的反馈——它每次都正常工作。即使不考虑用户的挫败感,从维护的角度来看,正确地编写它也是一个巨大的胜利。一旦它正确了,我们就不再需要不断抽调工程时间来修复问题。……

源讨论数据一致性被高估了原帖 71 条评论 · 导入时统计
3

这条内容在回应什么?

父级讨论 · 节选

DD

我认为有两种不同的一致性,重要的是不要混淆它们。 一种是一致性在系统内部。所有的外键是否正确对齐?我是否丢失了提供给我的任何数据?在这里,我们可以期望做到100%正确。我认为这篇文章中的例子并不与此相矛盾。 另一种是一致性在系统外部。这可能是在这个系统与其他系统之间,或者在这个系统与现实之间。操作员是否输入了这个项目的正确数据?外部系统是否发生了变化但没有通知我?在这里,仅使用系统内部的工具,无法做到100%正确。你需要外部审计、现实核查、定期对账。 关键的是,作者的所有例子都是关于外部一致性的(会计与现实匹配;系统间通信),但他们的结论似乎…

完整原文

社区评论 0

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

原讨论中的回复 3

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

FU

>在金融世界中,银行不应该印钱。 除了银行通常会"印钱"(如果你同意信贷和货币本质上是相同的)。即使不深入研究我们的金融体系,也有很多关于银行错误地增加对客户的负债的案例。如果银行可以,他们会撤销这些错误,如果在发现错误之前客户已经取款,他们会起诉客户。所以这更接近于模糊/最终一致性。

完整原文
IA

>在金融世界中,银行不应该印钱。 这与论点无关,但这是英国的银行所做的,我相信在大多数现代经济体中也是如此。它们创造了货币。 https://www.bankofengland.co.uk/explainers/how-is-money-crea...

完整原文
ZV

>空指针将本应严格一致的东西(引用)变得模糊。 我不同意;这仍然是严格一致性,至少在Java或C#等托管语言中是这样。(来自一个已经完全接受空值而不是与之抗争的人。) "严格一致性"在C和C++中会失效,因为指针可以指向1)有效对象,2)为空,3)指向无效地址(即,解引用它会导致程序崩溃)。情况1和2可以通过简单的!= 0检查来区分。没有(直接、简单、可移植、由语言定义)的检查可以区分情况1和3,这就是不一致出现的地方。

完整原文
在 Hacker News 阅读

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

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