什么是分布式SQL数据库?
来源:CPDA数据分析师网 / 作者:数据君 / 时间:2020-10-12
需求可以概括为五个核心条件:
1.规模
分布式SQL数据库必须无缝扩展,以反映云环境的功能,而不会引起操作复杂性。正如我们无需繁重的工作就可以扩展计算一样,数据库也应该能够扩展。这包括在数据库中的多个分布式参与者之间均匀分布数据的能力。
2.一致性
分布式SQL数据库必须在分布式环境中提供高度的隔离。在基于云的世界中,默认的体系结构是分布式系统和微服务,由于多个运营商可能试图处理同一数据,因此事务一致性变得困难。数据库应该调解争用,并提供与单实例数据库相同的事务隔离级别。
3.弹性
分布式SQL数据库自然必须提供级别的弹性,而无需任何外部工具即可完成此任务。云为我们的工作负载提供了一个永远在线的环境,并且数据库应该具有相同的属性。使用分布式数据库,我们可以将故障恢复所需的时间减少到接近零,并且无需任何外部配置即可自然地复制数据。
4.地理复制
分布式SQL数据库应允许在复杂,分散的地理环境中分布数据。云提供了以可接受的服务质量到达全球每个角落的能力,并且数据库不应限制您的应用程序这样做。它应该可以满足您的期望
5. SQL
尽管这四个技术要求至关重要,但首先有一个关键的先决条件。数据库必须使用SQL。它是数据的语言,也是所有应用程序逻辑的默认语言。我们不必重新培训开发人员以使用数据库。他们应该能够使用他们已经熟悉的SQL方言。
数据局部性
一旦您生活在一个分散的世界中,很明显数据库本身实际上可以处理住所数据。参与者位于不同的区域或数据中心,就可以了解每个参与者的位置,然后将其存储的数据绑定到一个位置。一些应用程序架构师已将此作为应用程序的一部分实现,但是这种方法容易出错且易碎。使用数据库根据表中的某些字段对数据进行地理分区是分布式SQL的新要求。这使您可以使用数据库来解决数据主权问题。它还可以用于使数据跟随用户,以便您可以确保对他们的信息的低延迟访问或将数据绑定到显式云,从而可以程度地减少出口费用。
多云
分布式SQL数据库的一个独特特征是它具有半自治单元,它们都参与较大的系统。每个单元都应该能够自己部署,然后加入更大的系统CockroachDB集群。这是一个固有的特征,助长了上面列出的前五个要求。但是,这也可以用于将数据库扩展为真正的多云。数据库不应依赖单个网络来完成分发。应该脱离这些限制,以便参与者可以位于任何地方,无论是任何公共云,私有云,甚至是单个本地实例。对于我们生活在分布式混合和多云世界中的计算的未来,这一要求至关重要。
分布式SQL的基本要求
尽管上述七个需求是分布式SQL所独有的(嗯,除SQL外,其他所有需求),但重要的是要注意,它仍然是一个数据库,当然,要满足作为数据库的基线需求。以下是一些期望值:
1、管理: 您应该能够使用一组命令行和基于图形的工具轻松地安装和配置数据库。这包括控制环境和控制数据生命周期以进行备份/还原的能力。以及创建表,定义和实现方案,设置索引/分区以及重新创建DDL的能力。
2、优化: 数据库应允许DBA深入了解查询的性能以及优化查询执行的能力。这包括诸如基于成本的优化器之类的高级功能,在分布式世界中,它成为一个棘手的新概念。
3、安全性: 与任何企业软件包一样,安全性至关重要,数据库应提供认证,授权和责任制的关键AAA功能。它不应该独立存在,而应该与身份管理和治理的中央真理源集成在一起,以便可以为其所包含的数据(在表,行和列级别)设置一致的策略。
4、集成: 数据库不能单独运行,而应使用经过良好测试或已知的驱动程序与现有应用程序集成。它应该与现有的ORM很好地集成,并且还具有批量摄取或导出的能力。它还应提供关键功能,使其能够与ETL工具配合使用并更改数据捕获功能,以与流分析或云存储等更高级的服务集成。
这些“基础”要求非常关键,它们预示着一个更成熟的企业就绪数据库。它们可能不是令人兴奋的功能,但对于任何项目中的采用和成功至关重要。
如何评估分布式SQL数据库
将平凡的工作负载和一些关键的任务迁移到云。它已成为更高级的协调环境中云原生策略的基础,也是这种新兴类别的拥护者,并相信分布式SQL是数据库的正确演进,也是我们在云中管理数据的方式的未来。为此,我们强烈认为,在涉及这些核心要求时,我们的解决方案和其他所有方法都应受到重视:
1、规模
2、一致性
3、弹性
4、地理复制
5、的SQL
6、地区性
7、多云
8、行政
9、优化
10、安全
11、积分
满足所有这些要求的数据库已经成熟,可以被云中的关键任务(而非关键任务)应用程序信任。而且其中一些要求并不简单。这些是高级主题,需要花费一些时间才能正确。当您与供应商讨论这些项目时,我们鼓励您深入研究一致性和本地性等概念。
商业联合会数据分析专业委员会