http://suo.im/61qgLg 作者:陈峻
数据库体系结构倒退的下一步是分布式 SQL。在这里看看一些特色。
随着各个组织先后将其业务转向云端环境时,他们很快地意识到:在一些最要害的利用背地,那些新式的关系型数据库岂但限度了迁徙的速度,而且根本无法无效地实现灵便的业务扩大。许多企业既心愿放弃诸如 Oracle、SQL Server、Postgres 和 MySQL 之类关系型数据库的可靠性,又可能享受到云服务所带来的规模效应、以及全局稳定性等“红利”。
为了满足此类需要,人们开始转向应用 NoSQL 数据库。然而因为 NoSQL 并非齐全为提供真正的一致性而设计的,因而它无奈作为事务型数据库而应用。当然,最近有一些 NoSQL 解决方案宣称可能提供“ACID 事务”。不过,它们无奈提供诸如:财务分帐、库存管制、以及身份治理等要害工作所需的隔离级别。
分布式 SQL– 一种新的数据库
2012 年,Google 发表了一篇无关 Spanner 的论文。文中介绍了一种全新的基于分布式系统的,且能够全球性扩大的散布数据库。总的说来,Google Cloud Spanner 是一种可扩大的、多版本的、同步复制 (synchronously-replicated) 型数据库。它是第一个可能在寰球范畴内散发数据,并反对内部一致性 (externally-consistent) 的分布式事务的零碎。
上面咱们此基础上,一起来具体探讨此类分布式 SQL 的根本相干概念,特地是如何实现可扩展性和一致性的。通常,为了可能在分布式环境中真正具备可扩展性,分布式 SQL 数据库具备如下七种外围特色:
1. 可扩大
正如咱们无需沉重的筹备就可能实现扩大式计算那样,分布式 SQL 数据库可能在不减少操作复杂性的状况下,适应云端环境的无缝扩大。也就是说,它具备在多个分布式参与者之间均匀分布数据的能力。
2. 一致性
分布式 SQL 数据库必须在分布式环境中提供高度的隔离性。云端环境往往是由各种分布式系统和微服务所组成,而不同的调用和操作可能会指向同一块数据,因而咱们很难保障事务一致性。分布式 SQL 数据库除了可能调节资源的争用,还可能提供与单实例数据库雷同的事务隔离级别。
3. 弹性
分布式 SQL 数据库可能在无需任何内部工具的条件下,提供最高级别的弹性。凭借着云服务为咱们的业务所提供继续在线环境,分布式数据库能够将故障复原的用时减到起码,并且无需任何内部配置,即可自动化地复制数据。
4. 异地复制
因为云服务可能以一种可承受的服务水平,将用户的业务触达寰球的各个角落,因而分布式 SQL 数据库也可能据此冲破地区的限度。在简单、宽泛、扩散的地理环境中,它可能进行散布解决和数据存储,以满足各地用户的业务需要。
5. 反对 SQL
家喻户晓,SQL 是数据库所应用的结构化语言,也是所有应用逻辑的默认语言。凭借着其通用性,咱们不用从新培训开发人员,即可熟练地对接和调用数据库资源。除了下面提到的 Spanner,诸如 Amazon Aurora、Yugabyte、FaunaDB 和 CockroachDB 等都可能反对 SQL。
6. 数据本地化
在分布式系统中,因为数据被扩散到了各个地区的数据中心,因而利用架构师往往须要理解每个站点的地位,在程序逻辑上找到最近的地位,以便将须要调用的存储数据绑定为利用的一部分。那么,分布式 SQL 能够在其数据表中,基于某些字段对数据进行天文分区,进而让数据更靠近用户侧。这就是所谓的数据库的数据主权 (data sovereignty) 问题。据此,开发人员能够确保用户对其信息的低提早拜访,从而最大水平地缩小数据在云端传输的费用和流量的开销。
7. 多云 (Multi-cloud) 模式
分布式 SQL 数据库的一个独特特色是:半自治单元 (semi-autonomous units),它们能够参加到较大的零碎中。也就是说,每个单元都可能自行部署,而后退出到 CockroachDB 集群之类更大的零碎中。通过该特色,分布式 SQL 数据库能够更好地扩大到真正的多云环境中,而不仅仅依赖于单个网络,来实现数据的散发。在此模式下,参与者(participant) 的云服务类别将不再受到限制,它们能够位于任何中央,任何一种公共云、公有云、甚至是单个的本地 (on-premise) 实例。显然,这对于咱们在分布式混合与多云环境中的各类利用来说,都是至关重要。
分布式 SQL 的根本要求
上述七项特色堪称分布式 SQL 在云端环境中所独有的。然而,说到底它依然是一种数据库,因而也该当具备数据库的如下基本功能:
- 可管理性:用户能够应用一组命令行、或基于图形化的工具,来轻松地装置和配置指标数据库。用户通过针对运行环境的管制、数据生命周期的治理、以及惯例的备份与还原,以实现数据表的创立,schema 的定义与实现,索引与分区的设置,以及 DDL 的重建等。
- 可优化:DBA 能够深刻理解数据库在查问响应方面的性能,使用基于老本的优化器 (cost-based optimizer) 等高级性能,进而实现查问效率的优化。
- 具备安全性:与企业的其余常用软件相似,安全性是一个不容忽视的环节。数据库应提供认证、受权和可问责性,这样的 AAA 机制。而且,此类性能不应该只独立数据库外部,而该当与具备身份治理和治理性能的集中式管控系统集成一起,以便对流转在整个零碎中各个级别的数据 (包含表、行和列等级别) 设置一致性的策略。
- 可集成:显然,数据库须要可能通过通过测试的、或已知的驱动程序,与前端利用相集成,以实现批量获取或导出数据等服务。与此同时,数据库还应通过与 ETL(Extract-Transform-Load)工具的配合应用,将捕捉到的数据,与数据流剖析、或云端存储等更高级的服务相集成。
当然,上述所谓“根本”性能要求,其实并不简略,它们旨在提供更加成熟的、针对企业级利用的数据库。
总结
作为一种新兴的类别和演变的方向,分布式 SQL 数据库还须要在数据一致性和本地化等方面,进一步配合云端环境来不断改进。毕竟,在严苛的生产环境中,此类数据库会碰到更多无关性能和效率等方面的理论问题。
前文提到的 CockroachDB,是一种云原生的分布式 SQL 数据库。它能够帮忙各种企业级利用,将最根本的工作负载和一些关键性的工作迁徙到云端,并实现了对于各种高级云端原生环境的策略编排。您能够作为理解分布式 SQL 的一个切入口进行试用。