分布式SQL数据库新的演变方向

数据库体系结构发展的下一步是分布式SQL。在这里看看一些特征。前端

分布式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数据库除了可以调节资源的争用,还可以提供与单实例数据库相同的事务隔离级别。ide

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的一个切入口进行试用。

原文转自:http://suo.im/61qgLg 做者:陈峻

相关文章
相关标签/搜索