暂无图片
暂无图片
暂无图片
暂无图片
1
暂无图片

企业数据库技术趋势│什么是去中心化数据库?

原创 Peter Wayner 2021-04-07
687

分散式数据库将工作负载分散到多台计算机上,并使用复杂的算法来平衡传入和传出请求的最佳响应时间。这种类型的数据库对于那些需要存储在数据库中的数据多于实际存储在一台物理计算机上的数据的时代非常有用。这些位(例如日志文件,通过跟踪应用程序中的点击次数收集的数据以及由物联网设备生成的数据)会堆积起来,需要存储在某个位置。它们通常也称为分布式数据库。

拆分数据库有几个很好的理由:

  • 大小:撰写本文时,可用的最大商品磁盘驱动器为18 TB。一些数据集大于可以存储在单个驱动器上的数据集。这些数据集必须分散在多个驱动器上。
  • 需求:如果许多用户试图同时访问数据,则数据库性能会受到影响。划分工作负载意味着更多的计算机可以回答更多的请求,并且用户不会注意到任何性能延迟。
  • 冗余:驱动器可能会发生故障。如果数据有价值,则创建多个副本并将其存储在多台计算机上可以防止硬件故障。
  • 地理冗余:在不同位置散布多个副本可减少灾难性火灾,自然灾害或停电的威胁。
  • 速度:当数据库和进行查询的用户在地理位置上相距较远时,网络延迟仍然是一个问题。将数据副本放置在靠近用户的中心可以加快响应速度,因为数据不必走得很远。对于与不同大陆的人们合作的项目而言,速度尤为重要。
  • 计算负荷:由于分析期间所需的计算负荷太大,一台机器无法处理,因此必须分配一些数据集。例如,机器学习应用程序可能会在多个系统之间分布大型数据集,以分散分析工作,这可能是非常重要的。
  • 隐私:拆分一些数据集以最大程度地提高隐私性,并在发生数据泄露的情况下最大程度地降低风险。如果数据的不同部分存储在不同的计算机上,即使其中一部分暴露在安全漏洞中,其余数据仍然是安全的。
  • 政治:当多个小组使用相同的数据集时,在治理上可能会遇到一些挑战。如果某些数据与一组存储在一起,而另一些数据由另一组管理,则将数据存储在多台计算机上可能会很有用。

一种简化体系结构的方法是将数据集拆分为较小的部分,然后将这些部分分配给某些计算机。一台计算机可以处理所有姓氏以A到F,另一组以G到M等开头的人。这种拆分(通常称为“分片”)可以启发从简单到复杂的各种策略。

分发数据库可能很棘手

拆分数据库的最大挑战是确保信息保持一致。例如,在假设的航空公司预订系统的情况下,如果一台机器响应数据库查询已售出飞机座位,则另一台机器不应通过说座位已打开且可用来响应查询。

一些分布式数据库会仔细执行一致性规则,以便所有查询都收到相同的答案,而不管集群中的哪个节点响应了查询。其他分布式数据库放宽了一致性要求,转而采用“最终一致性”。只要机器最终最终能够相互追赶并返回相同的结果,它们之间就可以保持最终的一致性,从而使机器彼此之间不同步并返回不同的答案。在某些狭窄的情况下,一台计算机可能会在一段时间内听不到另一台计算机上存储的数据的新版本。同一个数据中心中的计算机相比,那些距离较长或网络速度较慢的计算机,趋于更快地达到一致性。

数据库开发人员必须在快速响应和一致答案之间进行选择。分布式版本之间的紧密同步将增加计算量并减慢响应速度,但答案将更加准确。允许数据不同步将加快性能,但会牺牲准确性。

选择优先考虑速度还是准确性是一项商业决策,这可能是一门艺术。例如,银行知道他们的客户比秒后的响应更希望正确的会计处理。但是,社交媒体公司之所以会选择速度,是因为大多数帖子很少被编辑,传播的细微差别也不是必不可少的。

分布式系统的传统方法

主要的数据库公司为分发数据存储提供了详尽的选择。有些支持具有多个处理器,多个磁盘和大块RAM的大型计算机。从技术上讲,该机器是一台计算机,但是各个处理器以相似的方式协调其响应,就好像处理器被各大洲分隔开一样。为了利用计算能力,许多组织在Amazon Web Services上运行他们的Oracle和SAP部署。例如,AWS的u-24tb1.metal看起来像一台机器,但是内部有448个处理器以及24 TB的RAM。它针对大型数据库(例如SAP的HANA)进行了优化,该数据库将大量信息存储在RAM中以快速响应。

所有主要数据库都有用于复制数据库的选项,以创建分布式版本,这些版本在不同的计算机之间分配。例如,Oracle的数据库长期以来一直支持跨机器集合的广泛复制策略,这些机器集合甚至可以包括非Oracle数据库。最近,Oracle一直在销售名称为“ autonomous”的版本,以表示它能够根据负载自动扩展和复制自身。

MariaDB是MySQL的一个分支,它还支持多种复制策略,这些策略允许来自一个主节点的数据将所有事务的副本传递给通常设置为只读的副本。也就是说,副本可以回答信息查询,但不存储新数据。

MariaDB的联合创始人之一Max Mether在最近的演讲中说,他的公司正在努力向数据库中添加自主功能。

他解释说:“服务器应该知道如何比您更好地进行自我调整。” “这并不意味着您不应该选择调整服务器,但是对于许多这些变量,作为用户,要想出如何优化它们的方法确实非常困难。理想情况下,您应该只让服务器根据当前的工作负载选择有意义的内容。”

新星的处理方式不同

云服务的兴起掩盖了分发数据库的一些复杂性,至少对于配置服务器和安排连接而言。例如,DigitalOcean提供MySQL,PostgreSQL和Redis的托管版本。可以使用单个控制面板以特定大小创建群集,以提供存储和故障转移功能。

一些提供商增加了在全球不同数据中心分布群集的功能。例如,Amazon的RDS可以配置跨越多个区域的集群,这些区域称为“可用区”。

在线文件存储也开始提供许多相同的复制功能。虽然提供将数据块存储在存储桶中的服务不提供对数据库的索引或复杂搜索,但它们确实提供复制作为交易的一部分。

一些方法可以将更复杂的计算与分布式数据集合并。例如,诸如Hadoop和Spark之类的工具只是将分布式计算与分布式数据相匹配的流行的开源工具星座中的两个。有许多公司专门支持内部或云配置中安装的版本。例如,Databricks的Delta Lake是一种支持对分布式数据进行复杂数据挖掘操​​作的产品。

重视隐私的团体也正在探索复杂的分布式操作,例如“星际文件系统”,该项目旨在将Web数据分布在多个位置,以提高速度和冗余性。

分布式数据库不能做什么

并非所有工作都需要协调多台机器的复杂性。即使项目量和计算量很容易由一台机器处理,但有些项目经理可能会把自己渴望的项目称为“大数据”。如果快速响应时间不是必需的,并且大小不会太大并且不会以不可预测的方式增长,那么具有常规备份的简单数据库可能就足够了。

本文是有关企业数据库技术趋势的系列文章的一部分。

作者:Peter Wayner
文章来源:https://venturebeat.com/2021/04/02/what-is-a-decentralized-database/

最后修改时间:2021-04-07 12:00:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

Rock
暂无图片
2年前
评论
暂无图片 0
P2PDB,一个为了web3.0 时代的而生的去中心化、分布式、点对点数据库、它是传统数据库技术与区块链技术的结合,P2PDB基于merker-CRDT论文,使用IPFS-libp2p构建去中心化网络和IPFS-pubsub与对等节点同步数据。P2PDB愿景是打造一个工业级别的去中心化式数据库,使P2PDB 成为离线应用程序,去中心化应用程序(dApps)、和边缘计算应用程序数据存储的绝佳选择 传送门:https://github.com/Rock-liyi/p2pdb
2年前
暂无图片 点赞
评论