信任但验证
维护完整性,尽管软件有 Bug
除了这些硬件问题之外,总是存在软件Bug的⻛险,这些错误不会被较低层次的⽹络,内存或⽂件系统校验和所捕获。即使⼴泛使⽤的数据库软件也有Bug:即使像MySQL与PostgreSQL这样稳健、考虑充分、久经实战考验,多年以来被许多⼈充分测试过的软件,就我个⼈所⻅也有Bug:⽐如MySQL未能正确维护唯⼀约束【65】,以及PostgreSQL的可序列化隔离等级存在特定的写偏差异常【66】。对于更不成熟的软件来说,情况可能要糟糕的多。
不要盲目信任承诺
如果你想确保你的数据仍然存在,你必须真正读取它并进⾏检查。⼤多数时候它们仍然会在那⾥,但如果不是这样,你⼀定想尽早知道答案,⽽不是更晚。按照同样的原则,不时地尝试从备份中恢复是⾮常重要的 —— 否则当你发现备份损坏时,你可能已经遇到了数据丢失,那时候就真的太晚了。不要盲⽬地相信它们全都管⽤。
验证的文化
像HDFS和S3这样的系统仍然需要假设磁盘⼤部分时间都能正常⼯作 —— 这是⼀个合理的假设,但与它们始终能正常⼯作的假设并不相同。然⽽⽬前还没有多少系统采⽤这种“信任但是验证”的⽅式来持续审 计⾃⼰。许多⼈认为正确性保证是绝对的,并且没有为罕⻅的数据损坏的可能性做过准备。我希望未来 能看到更多的⾃我验证(self-validating)或⾃我审计(self-auditing)系统,不断检查⾃⼰的完整性,⽽不是依赖盲⽬的信任【68】。
为可审计性而设计
如果⼀个事务在⼀个数据库中改变了多个对象,在这⼀事实发⽣后,很难说清这个事务到底意味着什么。即使你捕获了事务⽇志(参阅“变更数据捕获”),各种表中的插⼊,更新和删除操作并不⼀定能清楚地表明为什么要执⾏这些变更。决定这些变更的是应⽤逻辑中的调⽤,⽽这⼀应⽤逻辑稍纵即逝,⽆法重现。
端到端原则重现
持续的端到端完整性检查可以不断提⾼你对系统正确性的信⼼,从⽽使你能更快地进步【70】。与⾃动化测试⼀样,审计提⾼了快速发现错误的可能性,从⽽降低了系统变更或新存储技术可能导致损失的⻛险。如果你不害怕进⾏变更,就可以更好地充分演化⼀个应⽤,使其满⾜不断变化的需求。
用于可审计数据系统的工具
做正确的事情
预测性分析
举个例⼦,预测性分析是“⼤数据”炒作的主要内容之⼀。使⽤数据分析预测天⽓或疾病传播是⼀码事【81】;⽽预测⼀个罪犯是否可能再犯,⼀个贷款申请⼈是否有可能违约,或者⼀个保险客户是否可能进⾏昂贵的索赔,则是另外⼀码事。后者会直接影响到个⼈的⽣活。
偏见与歧视
预测性分析系统只是基于过去进⾏推断;如果过去是歧视性的,它们就会将这种歧视归纳为规律。如果我们希望未来⽐过去更好,那么就需要道德想象⼒,⽽这是只有⼈类才能提供的东⻄【87】。数据与模型应该是我们的⼯具,⽽不是我们的主⼈。
责任与问责
⾃动决策引发了关于责任与问责的问题【87】。如果⼀个⼈犯了错误,他可以被追责,受决定影响的⼈可以申诉。算法也会犯错误,但是如果它们出错,谁来负责【88】?当⼀辆⾃动驾驶汽⻋引发事故时,谁来负责?如果⾃动信⽤评分算法系统性地歧视特定种族或宗教的⼈,这些⼈是否有任何追索权?如果机器学习系统的决定要受到司法审查,你能向法官解释算法是如何做出决定的吗?
反馈循环
我们⽆法预测这种反馈循环何时发⽣。然⽽通过对整个系统(不仅仅是计算机化的部分,⽽且还有与之互动的⼈)进⾏整体思考,许多后果是可以够预测的 —— ⼀种称为系统思维(systems thinkin)的⽅法【92】。我们可以尝试理解数据分析系统如何响应不同的⾏为,结构或特性。该系统是否加强和增⼤了⼈们之间现有的差异(例如,损不⾜以奉有余,富者愈富,贫者愈贫),还是试图与不公作⽃争?⽽且即使有着最好的动机,我们也必须当⼼意想不到的后果。
隐私和追踪
现在,公司与被收集数据的⽤户之间的关系,看上去就不太⼀样了。公司会免费服务⽤户,并引诱⽤户尽可能多地使⽤服务。对⽤户的追踪,主要不是服务于该⽤户个体,⽽是服务于掏钱资助该服务的⼴告商。我认为这种关系可以⽤⼀个更具罪犯内涵的词来恰当地描述:监视(surveilance)。
监视
让我们做⼀个思想实验,尝试⽤监视(surveillance)⼀词替换数据(data),再看看常⻅的短语是不是听起来还那么漂亮【93】。⽐如:“在我们的监视驱动的组织中,我们收集实时监视流并将它们存储在我们的监视仓库中。我们的监视科学家使⽤⾼级分析和监视处理来获得新的⻅解。“
同意与选择的自由
我们可能会断⾔⽤户是⾃愿选择使⽤服务的,尽管服务会跟踪其活动,⽽且他们已经同意了服务条款与隐私政策,因此他们同意数据收集。我们甚⾄可以声称,⽤户在⽤所提供的数据来换取有价值的服务,并且为了提供服务,追踪是必要的。毫⽆疑问,社交⽹络,搜索引擎,以及各种其他免费的在线服务对于⽤户来说都是有价值的,但是这个说法却存在问题。
隐私与数据使用
数据资产与权力
由于⾏为数据是⽤户与服务交互的副产品,因此有时被称为“数据废⽓” —— 暗示数据是毫⽆价值的废料。从这个⻆度来看,⾏为和预测性分析可以被看作是⼀种从数据中提取价值的回收形式,否则这些数据就会被浪费。