很多企业都需要处理来自多个数据源的复杂数据,因此需要利用数据库管理系统来存储和管理数据。现在,有很多不同类型的数据库系统,而找到一个正确的数据库不是一件容易的事。这需要考虑业务需求,以便选择正确的数据库管理系统。
企业使用关系数据库管理系统(RDBMS)来存储和管理他们的数据。然而,这些系统无法处理海量的复杂数据,无法满足当今数据库用户的需求。因此,很多企业都在寻找能够在保持传统数据库系统重要特性的同时,也能提供可伸缩性、可用性和高性能的数据库系统。数据库软件供应商也已经确定了这一需求,并开发了NewSQL数据库来弥补传统数据库系统的缺陷。
NewSQL数据库在不放弃传统数据库优势的前提下解决了问题。NewSQL关系数据库管理系统为OLTP提供了与NoSQL系统相同的可伸缩性能,在保证传统数据库系统的ACID的同时,也能处理在线事务的读写工作负载。NoSQL数据库使用的数据结构与关系数据库中使用的数据结构不同,这使得NoSQL数据库中的某些操作更快。
什么是 NewSQL 数据库
NewSQL数据库是现代SQL数据库,它解决了与传统联机事务处理(OLTP)RDBMS相关的一些主要问题。它们在保持传统数据库管理系统优点的同时,力求实现NoSQL数据库的可伸缩性和高性能。换句话说,NewSQL数据库是一种特殊的关系数据库系统,它结合了传统数据库OLTP 和NoSQL的高性能和可伸缩性。它们保持了传统DBMS的ACID(原子性、一致性、隔离性和持久性)。ACID事务特性确保了完整的业务流程、并发事务、系统故障或错误时的数据完整性,以及事务前后的一致性。
NewSQL数据库在内部设计方面有所不同,但它们都是运行在SQL上的rdbms。它们使用SQL来接收新信息,同时执行许多事务,并修改数据库的内容。NewSQL系统的主要包括新的技术架构、透明的数据分片中间件、SQL引擎和数据库即服务(DBaaS)。
分区/分片:几乎所有的NewSQL数据库管理系统都是通过将数据库划分为不同的子集(称为分区或分片)来扩展的。数据库中的表被水平地分割成几个分片,这些分片的边界基于列值来划分,来自不同表的相关片段被连接以创建分区。
副本: 此功能允许数据库用户创建和维护数据库以及副本。数据库的副本存储在与主站相连接的远程站点或距离很远的站点。用户可以同时更新副本,也可以更新一个节点并将结果状态转移到其他副本
辅助索引(二级索引): 辅助索引允许数据库用户通过使用主键以外的其他值有效地访问数据库记录。
并发控制: 此功能可解决多用户系统中当多个用户同时访问或修改数据时可能出现的问题。NewSQL系统使用此功能来确保同步事务,同时保持数据完整性。
故障恢复:NewSQL数据库有一种故障恢复的机制,使它们能够在系统崩溃时恢复数据到一致的状态。
其中一些好处包括:
数据库分区减少了系统的通信开销,从而可以轻松地访问数据。即使出现系统故障或错误,ACID事务也可以确保数据的完整性。NewSQL数据库可以处理复杂的数据。NewSQL系统具有高度可伸缩性。常用的NewSql Vitess(开源)
Vitess 是一个分布式 MySQL 工具集,它可以自动分片存储 MySQL 数据表,将单个 SQL 查询改写为分布式发送到多个 MySQL Server 上,支持行缓存(比 MySQL 本身缓存效率高)与复制容错等。Vitess 4.0 中有许多改进,可以使新用户更容易使用,可以很容易的在k8s上部署Vitess,从单一的 MySQL 或 MariaDB 迁移到Vitess 成为可能,而应用对此有所感知。
CockroachDB免费)
CockroachDB 蟑螂数据库)是一个可伸缩的、支持地理位置处理、支持事务处理的数据存储系统。CockroachDB 提供两种不同的的事务特性,包括快照隔离(snapshot isolation,简称SI)和顺序的快照隔离(SSI)语义,后者是默认的隔离级别。
蟑螂是一个分布式的K/V数据仓库,支持ACID事务,多版本值存储是其首要特性。主要的设计目标是全球一致性和可靠性,从蟑螂的命名上是就能看出这点。蟑螂数据库能处理磁盘、物理机器、机架甚至数据中心失效情况下最小延迟的服务中断;整个失效过程无需人工干预。蟑螂的节点是均衡的,其设计目标是同质部署(只有一个二进制包)且最小配置。CockroachDB 无需重新配置,也无需进行大规模的架构大修 就可以水平扩展,只需在集群中添加一个新节点就可以了,CockroachDB就会处理底层的复杂性。
只需向集群添加新节点即可进行扩展自动平衡和分配分段的范围,不是分片在所有节点上均匀地优化,以提升服务器利用率TiDB (企业版收费)
TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。但是从使用情况来看,它对硬件要求较高。目前也分社区版和企业版。
ClustrixDB收费)
MariaDB 2018年收购了ClustrixDB,它目前是一个类MYSQL的关系数据库, 可以很容易的从MySQL迁移 到ClustrixDB。ClustrixDB与MySQL客户机兼容,但与mazon Aurora不同,它是分布式的,可以扩展写操作,并且不会产生单独的IO和存储费用,它从底层就支持web、移动和物联网(IoT)等具有最极端的可扩展性要求的应用程序,并且是在不损害关键特性的情况下做到这一点,数据库需要为带有关键型任务应用程序提供对可靠数据访问服务:事务和SQL。
MemSQL(收费)
MemSQL最大的卖点就是性能,同时兼容兼容MySQL。MemSQL,2012年12月14日发布,是世界上最快的关系数据库,能实现每秒150万次事务。MemSQL是一个分布式的、高度可伸缩的SQL数据库,可以在任何地方运行。我们使用熟悉的关系模型为事务性和分析性工作负载提供最高性能.MemSQL是一个可扩展的SQL数据库,它不断地吸收数据,为您的业务一线执行操作分析。使用ACID事务每秒接收数百万个事件,同时以关系SQL、JSON、地理空间和全文搜索格式分析数十亿行数据。
NuoDB(商用需要授权)
NuoDB 是世界上首个也是唯一一个具有专利的、弹性可伸缩的SQL关系数据库,主要用于去集中化的计算资源。我们完全从头开始设计这么一个全新的数据库,100% ACID 保证以及兼容 SQL 标准规范。支持复杂数据库管理任务如分区、缓存集群和性能调优等等。
Altibase(商用收费)
ALTIBASE 数据库完美结合了,并提出了一个新概念—Hybrid DBMS。ALTIBASE 提供高性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。
VoltDB(商用收费)
VoltDB是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性(ACID)。它是Postgres和Ingres联合创始人Mike Stonebraker领导开发的下一代开源数据库管理系统。它能在现有的廉价服务器集群上实现每秒数百万次数据处理。VoltDB大幅降低了服务器资源 开销,单节点每秒数据处理远远高于其它数据库管理系统。不同于NoSQL的key-value储存,VoltDB能使用SQL存取,支持传统数据库的 ACID模型。VoltDB代码采用GPLv3授权,支持订阅费用从15,000美元起步。
Citus(商用收费)
Citus面向高速简单的事务,高吞吐量批量加载以及高速亚秒级分析查询。它还集成了cstore/hll等很多插件。一个限制是在某些情况下它不支持所有SQL查询或复杂事务。CitusDB采用PostgreSQL的插件形式not a fork),即享受PostgreSQL的强大支持,又同时拥有分布式数据库能力。Citus的企业版是要收费的。