去中心化数据库是值得尝试的存储技术?还是 WEB3 的炒作?
有时数据需要超出单个数据库实例处理的范围,这时需要开始考虑增加和扩展数据的存储,常见的做法是采用分布式方法,部署多个实例,并采用读写分离。
然而当下,可能有不同的选择:去中心化数据库。去中心化,WEB3的特征之一,是基于区块链的技术。
去中心化与分布式
在开始之前先来了解一下去中心化和分布式这两个术语的区别。
相似之处是都提到了将处理多个服务器的事实,并且很可能它们将位于不同的物理位置。
而分布式方法将在集群的许多节点之间有效地拆分数据和该数据的处理(如查询、数据整理等)。可以这样做是因为每个节点都知道并相互可信。它们要么有一个集群节点的内部列表(有点像 Redis 集群),要么依赖一个(或几个)中心化服务来跟踪该信息(就像 Hadoop 集群一样)。
去中心化的节点网络彼此共享数据,但它们不知道另一边是谁。它们能够做到这一点是因为这些集群的底层技术。实现可能会改变,但本质上所谓的“拜占庭容错”允许网络保持一致和安全,即使一个或多个节点受到损害(即被删除、被黑客攻击等)。
另一个主要区别,通常也是您选择其中一个的主要原因之一。分布式网络由单一机构拥有,即中心化机构所有(例如,集群可以部署在阿里云上,也可以部署在华为云上,但他们拥有集群的基础设施,如机器、网络),而去中心化的网络没有单一的所有者。
虽然这看起来很可怕,但考虑到单一授权的优势之一是,作为客户,如果事情没有解决,确切地知道该怪谁,技术底层的去中心化方法甚至可以防止灾难性的情况发生。
从而消除了单个实体对整个节点网络的依赖性。根据业务需求,这可能是一个主要的决定因素,因此在决定去中心化与分布式方法时记住这一点很重要。
去中心化的数据库
既然如此,为什么要选择去中心化数据库?正如之前提到的,最大的决策驱动因素将是业务需求。下面来总结一下去中心化的数据库应该具有什么样的特征:
- 数据副本:去中心化的数据库将在网络上存在多个副本。虽然具体实现可能会有所不同,但普遍的共识是网络的每个节点都将保存整个数据库。通过在全球分布节点,可以让客户端访问最快的节点来实现低延迟。
- 数据安全:这里所说的“安全性”并不是指可能想到的访问控制功能,而是指去中心化系统具有内在的“审查”这一事实。这一特殊功能将确保每次将新信息输入节点时,网络的其余部分都会对其进行审查,然后才能将其分发到所有其他节点。这样确保了如果一个节点以某种方式受到损害,全球范围内的信息不会受到影响。从本质上消除了与分布式系统相关的大量常见安全漏洞。
- 数据稳定:这种类型的架构比分布式系统更不容易出错。分布式通常拥有依赖于特定任务的单一权限的架构,将该实体变成单点故障(即,如果失败,整个集群将变得不可用)。当然,许多高端解决方案都试图为这个问题提供解决方案或替代方案。但对于去中心化网络,并没有一个单一机构真正拥有它。这是因为没有中心化机构在做任何事情,所有事情都是由每个人(或至少是大多数人)完成的,因此很难击倒其中一个数据库。
当然,可能不需要这些特征,或者可能更愿意信任一家公司来保存数据并确保稳定。毕竟,这就是迄今为止算是最有效的方案。
但是,如果不属于该类别,如果正在构建不希望其他人控制或审查的东西。如果真的不信任某家公司对使用的信息类型保持开放和中立。在这种情况下,也许去中心化的方法是完美的。
有哪些去中心化的数据库
虽然去中心化范式似乎很有吸引力,最近随着 WEB3 的概念开始快速增长,增长的趋势足以触发围绕它创建新项目和技术。
BigchainDB
BigchainDB 尝试将区块链世界与数据库世界结合起来,为数据存储和检索需求提供去中心化的解决方案。它于 2016 年首次发布,此后一直在发展,这意味着它应该是一个可靠的替代方案。不过,MySQL 自 1995 年以来就已经存在,所以相对而言 Bigchain 就像一个蹒跚学步的数据库,但在去中心化运动中,它绝对是一个不错的选择。
如果想了解更多关于 BigchainDB 的信息,甚至发布了该数据库所基于的白皮书,可以自己阅读文档。
HarperDB
HarperDB 提供了一种非常有趣的混合存储方法,这允许进行边缘云设置,远程设备只关心发送本地查询,而数据库本身负责将其内容与集群的其余部分同步。
通过表级 pubsub 机制,可以在全球同步单个表,而本地设备对所需数据保持毫秒级延迟。
CovenantSQL
正如前提到的,一些替代方案是新的,虽然它们看起来很有趣,但有必要了解它们是否已为用例做好准备。 ConvenantSQL 就是其中之一。他们的前提是拥有一个分散的、基于 SQL 的数据库,可以将其用于任何想要的东西。他们将自己宣传为 AWS 的 QLDB(量子账本数据库)的开源替代品。
总结
本文简单介绍了去中心化数据库和分布式数据库的区别,介绍了去中心化数据库的特征及目前比较不错的解决方案,对 WEB3 感兴趣的还是有必要了解一些去中心化的技术和开源库,开拓思路。