区块链是一种过程数据的去中心化管理技术,和传统的数据库管理系统有很多相似之处,当然也有很明显的区别。无论是区块链、抑或是数据库,都是一种管理数据的关键技术,都可以基于所管理的数据进行分析或执行。但是在具体实现上,两者却是采用了不同的设计思想。
传统的数据库管理系统,特别是关系型数据库管理系统(Relationship Database Management System)是目前为止最成功的数据管理技术,既成就了包括Oracle、IBM、Sybase、Microsoft等企业级软件巨擘,也同样支撑了像MySQL、PostgreSOL等开源软件项目。
传统的数据库,采用数据表作为数据存储的基本单元,通过在数据表中设定数据之间的映射关系,进而将若干数据表整合拓展为数据库,同时通过统一的结构化查询语言SQL(Structured Query Language)对相同或不同结构(异构)的数据库进行简便的标准化操作,最终使得数据库在数据管理领域异军突起、一家独大。
数据库管理系统允许多用户同时进行操作,同时,通过“锁/Lock”和“回滚/Rollback”等机制来确保数据库即使在多用户同时操作时,特别是分布式数据库环境下,也不会发生数据不一致或不同步等问题,保证数据库的准确性。根据数据库的日志,任何数据的丢失和篡改都可以被追踪,或者说是被溯源,保证数据库的不可篡改。
而新兴的区块链也同样是一种数据管理技术,而且区块链技术的典型特征也是强调去中心化、不可篡改、可溯源。乍看之下,似乎区块链和数据库,有种傻傻分不清楚的感觉。但实际上,如果对两者进行更深入的分析,可以发现,区块链和数据库的确在一些功能表现上,存在很多相似性,可是两者之间也有着非常明显的差异。
首先,两者都可以进行数据管理、也都会随着数据量的增加而逐渐规模庞大,但是,由于系统结构的不同,区块链管理的是过程数据、即区块链上记录的是数据的完整生命周期,而数据库记录的是即时数据、即数据库主要记录数据的当前状态。这两个定义该如何理解呢?简单来说,就是数据库记录了数据当前的状态,同时还有一个数据库日志来记录数据库的所有操作,但区块链直接合并了两者,将每一个数据变化的片段都记入区块成链。
其次,区块链是去中心化的,而数据库是中心化的。虽然数据库也有分布式数据库,但是数据库仍然是标准的C/S(Client/Server、客户端/服务器)结构,同时数据库的多用户之间不存在任何不信任,即数据库的各用户之间不会存在对数据操作的信任质疑。而区块链是其中心化的,它的存在前提是各个节点之间不存在信任,即区块链的各个节点之间存在对数据操作的信任质疑。也就意味着,数据库的“锁/Lock”或“回滚/Rollback”是为了保证在彼此信任的用户之间不会出现因为操作失误而出现的数据失误,但区块链的去中心化则是直接将场景投放到彼此不信任的用户之间的数据不可篡改和可追溯。
再次,数据库可以记录任何数据而不仅仅是交易数据、交易数据也不局限于是数据库的许可用户之间,但是区块链上的数据记录完全属于节点间的交易,不存在节点与节点外的交易数据记录。换句话解释,数据库是完全Open的、来者不拒,但区块链只是节点群内部、自己人的游戏。
最后,数据库一般通过API(应用程序接口/Application Program Interface)被其他程序操作或调用,而区块链的智能合约则是直接建构在区块链上,两者融为一体。或者说,数据库只是个存放数据的仓库,它的数据是要提供给其他程序使用,而区块链自带执行功能,可以在条件触发时,自动按照智能合约的设定完成数据的处理。
所以,区块链和数据库虽然都是以数据作为管理对象,但是各自在不同角度和维度进行处理,区块链并不是为了取代数据库而产生,区块链与数据库应该是各擅胜场。区块链作为过程数据的去中心化管理技术,会比数据库更适应与物联网(IoT)做前后端结合,形成完整的无人干预的应用场景数据自动化处理,区块链对数据完整生命周期的记录、叠加智能合约功能,可以挖掘出比数据库更有价值的数据潜在涵义。甚至不排除,未来某个时点,区块链可以教会机器学习“什么是数据的逻辑”。
领取专属 10元无门槛券
私享最新 技术干货