分布式 SQL :数据库的未来发展方向
来源:海牛大数据 时间:2020-12-22 13:06:31 编辑:简单
数据库体系结构发展的下一步是分布式SQL,今天就让我们来聊一聊它的一些显著特征。
随着组织过渡到云,他们最终发现,在一些最关键的应用程序背后的旧式关系数据库根本无法利用云的前景,并且难以扩展。是数据库限制了这种转换的速度和有效性。为了解决此问题,组织希望获得经过测试的关系数据存储(例如Oracle,SQL Server,Postgres和MySQL)的可靠性,但要具有云带来的规模和全球覆盖范围的好处。
一些人转向NoSQL存储库来尝试满足这些要求。这些替代方案通常可以满足规模要求,但由于不是完全为提供真正的一致性而设计的,因此不能作为事务数据库使用。最近,一些NoSQL解决方案已经提供了“ ACID事务”,但它们充满了警告,并且无法为财务分类帐、库存控制和身份管理等任务关键型工作负载提供必要的隔离级别。
新型数据库:分布式SQL
一些在全球范围内运作的最成功的公司实际上已经解决了这个问题,并建立了专门的数据库来解决这个问题。最公开的例子是Google Cloud Spanner。2012年,Google在Spanner上发表了一篇论文,展示了一种查看数据库的新方法,该方法植根于分布式系统和全球范围。
描述中有很多内容,还有长达14页的论文,详细介绍了他们如何构建一致且可扩展的数据库。内容非常精彩,概述了数据库下一步发展的基础:分布式SQL。
是什么构成了分布式SQL数据库?
为了在分布式环境中交付真正可伸缩的SQL,已经进行了几次尝试。有些人试图对现有数据库进行改造以满足他们的需求,但这最终无法实现真正的分布式SQL数据库的承诺。那么,什么构成了分布式SQL数据库呢?需求可以概括为五个核心条件:
1.规模
分布式SQL数据库必须无缝扩展,以反映云环境的功能,而不会引起操作复杂性。正如我们无需繁重的工作就可以扩展计算一样,数据库也应该能够扩展。这包括在数据库中的多个分布式参与者之间均匀分布数据的能力。
2.一致性
分布式SQL数据库必须在分布式环境中提供高度的隔离。在基于云的世界中,默认的体系结构是分布式系统和微服务,由于多个运营商可能试图处理同一数据,因此事务一致性变得困难。数据库应该调解争用,并提供与单实例数据库相同的事务隔离级别。
3.弹性
分布式SQL数据库自然必须提供最高级别的弹性,而无需任何外部工具即可完成此任务。云为我们的工作负载提供了一个永远在线的环境,并且数据库应该具有相同的属性。使用分布式数据库,我们可以将故障恢复所需的时间减少到接近零,并且无需任何外部配置即可自然地复制数据。
4.地理复制
分布式SQL数据库应允许在复杂,分散的地理环境中分布数据。云提供了以可接受的服务质量到达全球每个角落的能力,并且数据库不应限制你的应用程序这样做。它应该可以满足你的期望。
5. SQL
尽管这四个技术要求至关重要,但首先有一个关键的先决条件。数据库必须使用SQL。它是数据的语言,也是所有应用程序逻辑的默认语言。我们不必重新培训开发人员以使用数据库。他们应该能够使用他们已经熟悉的SQL方言。
有一些数据库可以满足这些要求。当然,该列表包括Spanner,但你也可以将Amazon Aurora,Yugabyte,FaunaDB和CockroachDB视为此新类别的成员。所有这些成员都以某种形式满足要求,其中一些形式要比其他形式更好。显然,该列表中缺少Oracle,Postgres,MySQL和所有NoSQL选项。尽管每个都可以满足某些要求,但是它们都不满足所有要求,因此不能视为替代方案。
6.数据局部性
一旦你生活在一个分散的世界中,很明显数据库本身实际上可以处理住所数据。参与者位于各个地区或数据中心,就可以了解每个位置,然后将其存储的数据绑定到某个位置。一些应用程序架构师已将其实现为应用程序的一部分,但这种方法容易出错且易碎。使用数据库根据表中的某些字段对数据进行地理分区是分布式SQL的新要求。这使你可以使用数据库来解决数据主权问题。它也可以用于使数据跟随用户,因此你可以确保对他们的信息的低延迟访问或将数据绑定到显式的云,从而可以最大程度地减少出口费用。
7.多-云
分布式SQL数据库的一个独特特征是它具有半自治单元,它们都参与较大的系统。每个单元都应该能够自己部署,然后加入更大的系统CockroachDB集群。这是一个固有的特征,助长了上面列出的前五个要求。但是,这也可以用于将数据库扩展为真正的多云。数据库不应依赖单个网络来完成分发。应该脱离这些限制,以便参与者可以位于任何地方,无论是任何公共云,私有云,甚至是单个本地实例。对于我们生活在分布式混合和多云世界中的计算的未来,这一要求至关重要。
分布式SQL的基本要求
尽管上述七个需求是分布式SQL所独有的(嗯,除SQL外,其他所有需求),但重要的是要注意,它仍然是一个数据库,当然,要满足作为数据库的基线需求。以下是一些期望值:
1.管理:你应该能够使用一组命令行和基于图形的工具轻松地安装和配置数据库。这包括控制环境和控制数据生命周期以进行备份/还原的能力。以及创建表,定义和实现方案,设置索引/分区以及重新创建DDL的能力。
2.优化:数据库应允许DBA深入了解查询的性能以及优化查询执行的能力。这包括诸如基于成本的优化器之类的高级功能,在分布式世界中,它成为一个棘手的新概念。
3.安全性:与任何企业软件包一样,安全性至关重要,数据库应提供认证,授权和问责制等关键AAA功能。它不应该独立存在,而应该与身份管理和治理的中央真理来源集成在一起,以便可以为其所包含的数据(在表,行和列级别)设置一致的策略。
4.集成:数据库不能单独运行,而应使用经过良好测试或已知的驱动程序与现有应用程序集成。它应该与现有的ORM很好地集成,并且还具有批量摄取或导出的能力。它还应提供关键功能,使其能够与ETL工具配合使用并更改数据捕获功能,以与流分析或云存储等更高级的服务集成。
分布式 SQL :数据库的未来发展方向。这些“基础”要求非常关键,它们预示着一个更加成熟的企业就绪数据库。它们可能不是最令人兴奋的功能,但对于任何项目中的采用和成功至关重要。
海牛大数据专注于大数据课程开发及培训,"因为专注,所以专业"。如果您想要了解更多大数据的知识,您可以浏览我们的网站,我们会为您提供更专业服务。