数据库从线下搬迁到云上后,除了解决基本的风险之外,还有一个最为重要的风险,那就是恶意DBA的运维风险。DBA用户及恶意运维人员可以登录系统,并恶意修改系统数据。在修改完数据信息后,DBA用户可以删除对应的审计日志而不被审计管理员发现。这里实际上体现的是第三方可信源监守自盗的问题。
当前解决第三方可信源监守自盗的最有效方法是去中心化思想。区块链就是这种思想最好的体现,在牺牲一点效率的情况下,可获得极大的安全性。在区块链系统中,首先没有一本中央大帐本了(如第三方机构),所以无法摧毁。其次,无法作弊,除非篡改者能够控制系统内的大多数人对电脑都进行修改,否则系统会参考多数人的意见来决定什么才是真实结果,而自己修改的账本完全没有意义。
区块链的本质即分布式多活数据库,两者在很多概念上具有共同之处。下面就一些区块链中的基本概念进行比对。
共识算法:在分布式数据库中,最为关键的一点是需要保持数据一致性。当前普遍采用PAXOS或RAFT算法达成分布式数据库的数据一致性协商。在实施时,数据分片会同时存放在数据库的主从节点上,主节点负责数据的读写操作,从节点进行只读操作。当主节点写入数据时,其事务日志会被实时同步给其他从节点进行回放,以达到主从节点之间数据一致性的目标。
相比于区块链体系,数据库的主节点即为日志生成节点,其每次生成事务日志的功能,与区块链中每次出块时矿工的功能完全等价。但是分布式数据库每次操作时对日志实时广播到节点中,并且在事务提交时进行一致性判断。
智能合约:在区块链系统中,智能合约其实是一段被存储在一个区块链上的代码,由区块链交易触发,并与区块链状态模式相互影响。这里所说的代码可以是任意支持的语言:Java、Fortran、C++等。当我们使用SQL语言时,它就是写在扩展SQL的存储过程。
除了上述关键技术点对比分析外,区块链和数据库在其他技术细节上还可以做如表11-3所示分析:
表11-3 区块链和数据库技术分析
| 分析点 | 数据库 | 区块链 |
| 参与者 | 单方参与 | 多方参与 |
| 管理 | Centralized | Decentralized |
| 最新记录 | Table Value | World State |
| 历史记录 | Log | Chain |
| 查询 | Table Value | World State + Chain |
| 数字签名 | No | Yes |
| 容错机制 | CFT(Crash Fault Tolerance) | BFT(Byzantine Fault Tolerance) |
| 用户自定义逻辑 | Stored Procedure/User Define Function | Smart Contract |
事实上,通过上述的分析我们可以看到,数据库和区块链具有很多相似之处,我们可以在数据库中融入区块链的思想将区块链天生具备的防篡改能力集成到数据库中。
openGauss数据将支持两种形态的防篡改系统:中心化部署及去中心化部署方式。中心化部署和去中心化部署方案的主要区别在于:
中心化部署情况下,对外提供服务的节点即为Master节点。
不需要通过拜占庭等类似的共识算法进行共识和校验。
因此,在中心化部署下,除Master节点外的剩余节点主要为日志备份节点,或提供对外的查询服务。在去中心化部署下,交易连接的任务节点即为Master节点(整个系统是一个多主的关系),然后在本地交易完成后与其他节点进行背书共识和验证。当复制节点验证成功后方可提交当前事务。
由于结合了数据库的优点和区块链的优点,openGauss防篡改系统有如下优势:系统内数据不可更改、记录历史可追溯、数据加密可验证、系统高可靠、整体易用性高。




