ImSQL:海量数据,可信存储

  数据造假、数据不可信等问题的存在 , 给金融监管及风控等众多应用场景带来了严峻的挑战 , 也正成为阻碍数据大规模互联互通、共享共用的一大障碍 。 数据的真实可信问题长期影响着社会的各个领域 , 在更依赖数据的人工智能时代 , 这一影响将更为凸显 。

  数据造假可能发生在任一环节 。 其中 , 在数据存储期间造假往往更加简单:因为在现有数据存储技术下 , 数据的所有者、管理人员或受托存储方均有能力单方对数据进行任意的篡改或删除 。

  既然数据不可信的一个重要原因归咎于单方可以擅自篡改和删除数据 , 那么如何避免这一问题自然也得到了业界大量的关注 。 区块链和去中心化存储技术的诞生 , 对数据篡改起到了一定的遏制作用 , 也在市场上取得了初步验证 。

  许多企业开始尝试采用区块链存储数据 , 例如在货物追溯等场景 。 其做法往往是将重要数据直接写入区块中 。 这一简单粗暴的做法确实解决了数据防删改需求、继而满足了部分数据的可信分享 , 但却存在较多问题:

  首先是无法存储海量数据:区块内不适合存储包括多媒体数据等在内的大数据 , 否则区块大小难以控制 , 使区块链的可扩展性变差 。 这就导致业务中必须对原生数据进行筛选取舍 , 仅选取少量必要数据存入区块 , 但这将降低可信数据的丰富程度 。

  其次是数据存取效率低:首先 , 由于打包过程的存在 , 区块链数据存储一般不用于高速的数据写入 。 其次 , 由于遍历式的数据读取方法 , 区块链无法支持快速索引、更无法支持SQL 。

  再次是数据维护效率低:区块链因其顺序引用的特点 , 不支持对个别历史数据的删除和修改(除非对全链重新生成 , 但这是区块链不应鼓励的行为) 。 这里需注意:“杜绝单方的私自篡改”和“完全不能删改”是完全不同的两件事 。 前者是一种确保互信的技术手段 , 但后者可能属于一种必要功能点的丧失 。

  最后是有数据丢失风险:这一风险单指采用中本聪共识最长链原则的PoW区块链系统 。 在这类区块链中 , 当出现链分叉时 , 最长(或最重)的链分支会被保留 , 其他分支会被抛弃 , 这就使区块内的数据实际上永远存在被“颠覆”、被丢弃的风险 。 而自私挖矿等攻击行为的存在 , 会加剧这一风险 。 这在数据存储应用中是无法接受的 。

  正是由于上述原因 , 直接采用传统区块链进行数据存储显然无法满足大量实践性场景中对可信数据存储的需求 。 这一问题也因而引发了大量的探讨 , 例如“什么数据应该在链上存储、什么数据应该在链下存储” 。 这些问题的出现 , 究其根本 , 还是因为区块链自身存储效率及能力受限所致的 。 毕竟在数据库时代 , 我们从来不会谈论“什么数据应该存放在数据库之外”这样的问题 。

  近年来也出现了一些产品 , 为解决上述的区块链数据存储效率低下问题提供了有益的实践 , 例如:

  星际文件系统IPFS , R3的Corda , 腾讯TrustSQL等 。 然而这些产品在数据可信存储方面仍存在或多或少的问题 , 具体而言:

  IPFS对数据内容生成哈希摘要 , 并在多个节点间进行分布式存储 , 单个保有者不掌握完整数据 , 一定程度保护了数据隐私 。 但IPFS只能做到修改可知(因哈希值会因内容改变而变化) , 并且没有访问控制等数据安全措施 , 整体而言仍难以满足企业级服务需求 。


推荐阅读