今年的 AWS re:Invent 大会,最让你印象深刻的发布是什么?
这个问题的答案对笔者来说,第一天是 RoboMaker,第二天是Firecracker,第三天是 Lake Formation。然而当第四天结束的时候,笔者才发现,第三天发布的 QLDB 的重要性可能被远远低估了。
所以,今天我们来好好聊聊 QLDB 这个事情。
区块链是真需求还是伪需求?
re:Invent大会第三天,AWS CEO Andy Jassy 在他的主题演讲上发布了 QLDB——Quantum Ledger Database,直译过来叫做量子账本数据库。之后,AWS CTO Werner Vogels 在自己的 Twitter 上表示,QLDB 是本次 re:Invent 他最爱的发布之一。
如前所述。根据 Andy Jassy 的说法,AWS 经过了一年以上时间对区块链“客户”的访谈调研之后,终于明确的发现了区块链“客户”们的两类真正的需求:
1. 中心化可信账本
主要使用场景:医疗领域的挂号跟踪、交管局的车辆管制、制造业的缺陷品跟踪、HR 领域的个人从业经历跟踪等。原理上,此类需求用通用型关系数据库(如 MySQL 或 Aurora)也是可以解决的,只是在部分情况下,通用型关系数据库很难把此类问题很好的解决。
2. 去中心化可信交易
主要应用场景:金融领域的 P2P 支付、房产领域的组合贷款处理、小微企业的供应商分销商交易管理、零售行业的客户奖励流水线等。
针对这两类需求全面分析之后,AWS 发布了两个新东西,第一个是 QLDB,第二个是 Managed Blockchain。其中,QLDB 的前身是 Amazon.com 内部使用了多年的一个数据库技术。
当时听完后笔者就纳闷了:既然 AWS 一直都还在评估“区块链是不是伪需求”这个问题,那就是说,Amazon 内部一直都是没有在使用区块链的。那么,Amazon.com 怎么会一直有一个 QLDB 这样的数据库在内部使用呢?
怀着这个问题,笔者询问了 Bill Vass——一位 AWS 副总裁,业务方向是存储、Kinesis、机器人(听起来是一个挺奇怪的组合)。
回到源头
你有没有想过,“账本”到底是啥意思?“可信”又是啥意思?
经过 Bill Vass 热心的介绍,QLDB 这个已经在 Amazon 内部用了 4、5 年的数据库技术,面貌逐渐清晰了起来。结合一些相关资料,笔者尝试对 QLDB 简述如下:
账本(ledger)
“链条”(chain)是这样一种东西:它一环扣一环,每一环都有前面一环和后面一环,新的环添加在链条的末尾,于是链条就越来越长。
从数据的角度,这就是强时序的数据。对于不要求时序性的数据来说,写进来的顺序是 1、2、3、4,存储成 1、3、2、4 也没关系;但是对于强时序的数据来说,写进来的顺序是 1、2、3、4,就一定要存储成 1、2、3、4 的顺序。这就是数据的链条。
于是你说了,这强时序有什么难的?数据库的代码只要没写错逻辑不都能实现?的确,难的并不是代码逻辑。难的是,如果一秒之内进入上千上万个请求,你如何确保它一定正确呢?要在吞吐量巨大的大规模集群上做到高性能还要保证不出错,这个活儿可不是谁都干得了。
什么样的数据特别需要强时序?“日志”(log)必然位列其中。2014年Werner Vogels发布Aurora的时候,用了极大的篇幅介绍其背后的机制,其中非常重要的一点就是,Aurora 之所以能够做到秒级的崩溃恢复,是因为它使用“操作日志”进行数据库重建的方式来做恢复。“操作日志”的顺序一定要完全正确,否则重建数据库无法成功。(那就完蛋了!)所以,Aurora 的背后,一定有一个强大的分布式高性能强时序数据库用来存取日志。Bill Vass 透露说,QLDB 就是这个 Aurora 背后的日志数据库。Bill Vass 还介绍道,除了 Aurora 之外,强时序数据库在电商的应用也很广泛,特别是“秒杀”场景,一边是订单一边是库存,如果交易的时序处理不好就会出现超售的问题,如果用通用型关系数据库的“锁”来避免超售又影响效率,所以 QLDB 很重要。
“交易的日志”,就是“账本”(ledger)。人类使用账本的历史至少也好几百年了,Amazon 使用账本的历史至少也 24 年了。所以,Amazon 有一个定制化的账本数据库用了 4、5 年,也不是什么奇怪的事情。
可信(trust)
2009 年中本聪发布 Bitcoin 白皮书,掀开了数字交易信任机制的新篇章。白皮书提出的方案有两个重点,一个是用“去中心化”来避免对权威角色的依赖,一个是用“加密算法”来取代权威角色的裁判动作。
此白皮书一出,广泛流传,一时之间给广大吃瓜群众产生了一种错觉:一切不可信的源头就是权威,解决了权威就解决了不可信问题。
但其实人家说的根本不是这么一回事!中本聪论文的第一段话就说,权威第三方可信机制在大部分数字交易中是挺好用的。主要问题在于,如果交易者存心诈骗,利用“可撤销的支付”作为系统漏洞进行双重支付,从而产生交易纷争,则权威第三方需要去处理交易纷争,这个成本一般是比较高的,对小额度交易而言并不现实。
那么问题又来了:数字交易中的“可信”就是指防诈骗吗?
也并不是。“可信”是一个统计学问题。所谓“可信”,是“不可信”的反义词。不可信的因素增多,系统整体趋于不可信。不可信的因素排除的越多,系统整体趋于可信。诈骗只是众多不可信因素当中的一种而已。数据丢失或数据损坏,也都是不可信因素当中的一种。
为了更准确的描述 QLDB 解决的问题和区块链解决的问题之间的区别,以下从 AWS 官方网站QLDB的FAQs和Managed Blockchain的FAQs分别摘取几段介绍:
Q:账本数据库与其他数据库有什么不同?
A:传统数据库支持数据覆写(overwrite)与删除,所以如果需要跟踪数据的时序性,开发者需要另外用到审计表(audit tables)和审计跟踪(audit trails)等技术。此类技术虽然可以实现该目的,但它们需要定制化研发,并且比较难以扩展,而且确保数据正确性的责(hei)任(guo)落在了应用开发者的头上。在 QLDB,数据被写入到 append-only journal(只增型日志)上以保证数据的时序性,QLDB 日志是不可篡改(immutable)和可验证(verifiable)的,也就是说,你可以信任账本中的数据。
Q:账本数据库适合存什么数据?
A:QLDB 天然适合记录型系统(system-of-record)应用,此类应用对数据完备性、数据完整性、数据可验证性有强需求。比如在供应链与物流领域,使用 QLDB 构建的应用能够将一切变更的完整历史留存下来,无论是货车之间的移动还是跨境移动,每一条记录都能够完整留下来以供查询分析。在金融领域,记录型系统应用对关键数据进行跟踪,比如信贷交易和借记卡交易。以前的话,此类应用需要构建一套复杂的记录留存功能,而有了 QLDB,这就变得很容易实现,所有的金融交易记录都被永久的、完整的保存下来。
Q:QLDB 是分布式账本吗?QLDB 是区块链服务吗?
A:QLDB 不是区块链,也不是分布式账本。区块链与分布式账本技术主要致力于解决另一个问题,就是当多个利益方使用去中心化应用的时候,该应用不属于任何一个利益方,也没有任何一个利益方是完全受信任的。而 QLDB 的适用场景则是,一个客户自己拥有一个应用,并且需要一个账本数据库来维护所有数据变更历史的完整性与可验证性。QLDB 的优势在于强时序性、不可篡改性、可验证性,并且由于 QLDB 作为托管的 AWS 服务被提供给客户,它还有可扩展、简单易用等优点。如果你的应用是去中心化的,牵涉到多个互相之间不信任的利益方,那么区块链解决方案可能更适合你。如果你的应用对数据变更记录的完整性和可验证性有需求,并且不涉及多个互相不信任的利益方,则 QLDB 会非常适合。
Q:所以,Managed Blockchain 和 QLDB 到底有啥区别?
A:QLDB 是中心化的账本数据库,客户就是应用的拥有者,客户自己维护数据变更记录的一切历史。而在区块链技术里,区块链网络中有多个成员,网络中的每一个成员都拥有一份独立的、可验证的、不可篡改的账本的副本,每一个成员都可以互相之间发起交易、或认可(endorse)别人的交易,一切的交易与数据共享都是以加密方式进行的,并不需要一个中心化的“应用拥有者”或者“可信的权威”来做裁判。
再补充一条官网上没写的:根据 Bill Vass 的描述,QLDB 的速度是目前区块链技术的 1000 倍。
应用开发的下一个阶段
关系型数据库(relational database)是个好东西。一张一张的表(table),表里一个一个的列(column),每一行(row)就是一条数据,每一条数据都可以增删改查(CRUD),这些特点让它几乎适用于所有的应用场景。基本上我们可以这么说:后来出现的数据库能做的事情,关系型数据库都能做。
但这句话也可以反过来说:恰恰是因为关系型数据库啥都能做,所以才出现了一个又一个“不以啥都能做为目标”的新型数据库。这些新型数据库专门为了把特定的事情做好而设计。比如:Key-Value Database 键值数据库,在社交网络类应用崛起的时候开始流行(键值数据库常被视为 NoSQL 数据库的典型代表,其中 NoSQL 是 Not only SQL 的缩写);Graph Database 图数据库,在社交网络成为热门分析对象的时候开始流行;Time-Series Database 时序数据库,应对越来越多的物联网设备的数据存储需求。而 Ledger Database 账本数据库,也是新型数据库当中的一种。
值得一提的是,本次发布的 QLDB,在 AWS 众多服务当中是一个重要度在 Tier 0 级别的服务,与 S3、Kinesis 同级。什么是 Tier 0 级别?简单来说,其他服务都依赖于它,所以它绝对不能出问题,一旦它出问题,整个 AWS 都要挂掉。也可以说,QLDB 是众多 AWS 服务当中最可靠、最不会出故障的那一类——因为 AWS 会最优先保证它不会出故障。
所以,我们有了三个有意思的发现:
“啥都能做的数据库”越来越不重要了。反而是那些“只能做好一件事的数据库”,越来越成为互联网的基石,被广泛使用。
应用开发者有越来越多的“只能做好一件事”的底层工具可以搭配起来使用,可以把更多精力放在应用层的逻辑实现。
IT 世界的分层分工越来越精细化,而这在云计算没有积累到今天这么多用户之前,几乎是不可能发生的。
总结
QLDB 不是区块链。
QLDB 不是区块链。
QLDB 不是区块链。
但是你需要的真的是区块链吗?你需要的到底是什么?
如果你只能做好一件事,你会选择做什么?别人擅长做什么?如何跟他们充分合作?什么工具最擅长做什么?如何在自己的场景用好这些工具?在接下来的这个时代,这些问题很重要。
反过来说,如果听到区块链很火就去搞区块链,听到人工智能很火就去搞人工智能,那必然什么也做不好。这是一定的。
评论 2 条评论