OLTP \u0026 OLAP \u0026 HTAP3种数据库类型终于有人疏解白了_数据库_数据
01关系型数据库&NoSQL数据库&NewSQL数据库
下图展示了关系型数据库、NoSQL数据库、NewSQL数据库的发展过程。
1. 关系型数据库
关系型数据库也称为SQL数据库,最早的数据库发展可以追溯至1970年IBM研发的第一个SQL数据库System R,这也是最早的SQL数据库,再后来1980~1990年这段韶光呈现出来了一些SQL数据库产品,例如Oracle、DB2、SQL Server、PostgreSQL、MySQL等。
到2000年旁边,关系型数据库越来越丰富,涌现了很多迄今一贯在发挥主要的组件,例如MySQL、Oracle等。
SQL数据库按照以“行”为单位的二维表格存储数据,这种办法最符合现实天下中的实体,同时通过事务的支持为数据的同等性供应了非常强的担保。因此SQL数据库紧张适宜的场景是读多写少的场景。
关系型数据库中为了适配不同的运用处景,常日会将存储引擎设计为插件式的接口。然而主流的存储引擎,仍旧是读多写少的特点。以MySQL为例,InnoDB存储引擎被广泛利用,它通过B+树来存储索引和数据。B+树这种数据构造,由于其独特的特性使得查询的性能非常高。
B+树存储引擎适用于须要高效的数据查找、范围查询和顺序访问的场景。它在关系型数据库中被广泛运用,如MySQL的InnoDB存储引擎和Oracle的B+树索引。然而,B+树存储引擎对付频繁的数据插入和删除操作可能会有一定的开销,由于这会触发节点的分裂和合并操作。
2. NoSQL数据库
在面对海量数据存储、高并发访问的场景下,关系型数据库的扩展性和性能会受到限定。随着互联网的飞速发展,到2000年旁边,存储海量数据、高并发处理读写的需求变得非常明显。这对SQL数据库提出了巨大寻衅。为理解决这个问题,涌现了支持数据可扩展性、终极同等性的NoSQL数据库。因此,NoSQL数据库可以看作是基于SQL数据库的毛病而出身的一种新产品。
NoSQL组件普遍选择捐躯繁芜SQL的支持及ACID事务功能,以换取弹性扩展能力和更高的读写性能。这类系统紧张存储半构造化或非构造化数据。根据存储的数据种类,NoSQL数据库紧张分为基于文档存储的文档数据库(Document-based Database)、基于键-值存储的键值数据库(Key-Value Database)、图数据库(Graph-based Database)、时序数据库(Time Series Datebase)、宽列式存储(Wide Column-based Store)以及多模数据库(Multi-Model Database)。
不同类型的NoSQL数据库特性如下图所示。
NoSQL数据库范例的特点是具备很高的读写性能,但数据同等性担保较弱。绝大多数的NoSQL数据库适宜写多读少、写多读多的场景。以列式数据库、时序数据库而言,它们通过LSM的思想,供应了非常高的写入性能。这类系统的存储引擎广泛意义上也称为LSM Tree存储引擎,这些系统单机的存储引擎有RocksDB、LevelDB等。此外再以键值数据库为例,它们绝大部分通过利用哈希表这种数据构造,外加内存介质存储数据。实现非常高的读写性能。Redis便是这类系统的范例代表。
3. NewSQL数据库
虽然NoSQL数据库办理了关系型数据库存储的毛病,但它也没法完备替代掉关系型数据库。在NoSQL数据库涌现后的一段韶光内,互联网软件的构建基本上都是结合二者来供应做事。在不同的场景下选择不同的数据库进行存储数据。虽然这样的互助办法很好,但是在这样的模式下,一个用户可能会由于场景的不同而存储多份相同的数据到不同的数据库中,当用户量级和存储数据量很小的情形下没什么问题。一旦量级发生变革就会引发出新的问题。
随着存储数据量的不断增加,造成资源的摧残浪费蹂躏和本钱的上升不容忽略。于是工业界和学术界都在探求更好的办理方案,直到2010年旁边,出身了NewSQL数据库(也称为分布式数据库)。它的出发点是结合关系型数据库事务同等性,又具备NoSQL数据库的扩展性及访问性能。这无疑给系统的设计及实现带来了更大的寻衅,NewSQL数据库不仅要考虑单机环境下高效存储的问题,还须要考虑多机情形下数据复制、同等性、容灾、分布式事务等问题。目前NewSQL数据库范例的代表作有TiDB、OceanBase、CockroachDB等。NewSQL数据库中绝大部分的系统还是采取LSM 树存储引擎,来实现系统高性能的写入。
02OLTP&OLAP&HTAP比拟
在当代数据管理领域,OLTP、OLAP和HTAP是常见的数据库类型,它们各自针对不同的数据处理场景和需求。本文将对这三种数据库进行比拟,以帮助读者更好地理解它们的特点和适用性。
1. OLTP数据库
OLTP数据库(联机事务处理)是专门设计用于处理事务性事情负载的数据库系统。它们被广泛运用于业务运用程序,如在线购物、银行交易和订单处理等。OLTP数据库的紧张特点是高并发、低延迟和高事务吞吐量。它们通过支持ACID(原子性、同等性、隔离性和持久性)特性来确保数据的同等性和可靠性。OLTP数据库常日采取规范化的数据模型,以支持高效的事务处理和即时的数据更新。
OLTP数据库紧张的功能是处理用户在线实时的要求,直接为用户供应做事,因此这类数据库常日对处理要求的时延哀求比较高,绝大部分的要求正常情形下会在毫秒级完成。OLTP数据库很多,除了大家最熟习的关系型数据库(如MySQL、Oracle)外,还有Redis、MongoDB等这些非关系型数据库。绝大部分的OLTP数据库则是采取B树、B+树乃至哈希表来构建存储引擎。
2. OLAP数据库
OLAP数据库(联机剖析处理),它们专注于支持决策支持和剖析事情负载。OLAP数据库用于处理大量数据的繁芜剖析查询和报表天生。OLAP系统的关键特点是高度可扩展、支持繁芜的剖析操作和供应灵巧的数据聚合能力。为了实现这些特性,OLAP数据库常日采取了针对剖析查询优化的分外数据构造,如多维数据模型(如星型或雪花模型)和列存储技能。此外,OLAP数据库还供应了灵巧的查询措辞和数据切片、切块、钻取等功能,以支持交互式的数据剖析和探索。
OLAP数据库在功能上侧重于对数据或者任务进行离线处理,它不直接对用户供应做事。OLAP系统对要求的处理常日比OLTP慢得多,一样平常在秒级、分钟级乃至小时级,常日在数据统计、报表剖析、推举系统数据聚合剖析等场景用的比较多。这一类数据库范例的代表有HBase、Teradata、Hive、Presto、Druid、ClickHouse等。互联网企业每每都须要利用OLTP和OLAP。因此为了知足这两类需求,常日须要结合多个别系一起开拓利用。这样的做法当然是可行的,而且基本也是采取这种办法进行实现。绝大部分的OLAP数据库是采取LSM树构建存储引擎。
3. HTAP数据库
随着数据处理需求的不断演化,须要存储的数据量爆炸式增长,在这种模式下直接带来的存储本钱问题成为新的抵牾点,人们开始探索是否能出身一种数据库将OLTP和OLAP这两类运用合二为一呢?于是,HTAP(稠浊事务/剖析处理)数据库应运而生。HTAP数据库旨在将OLTP和OLAP的功能集成到同一个数据库系统中,以知足实时剖析和事务处理的需求。HTAP数据库通过在同一数据库上同时支持事务处理和剖析查询,肃清了数据复制和数据移动的需求,供应了更高的数据同等性和实时性。HTAP数据库常日采取了内存打算、分布式架构和智能查询优化等技能,以担保高性能和灵巧性。这类数据库既可以处理在线事务处理,又可以处理在线剖析处理。可以认为HTAP=OLTP+OLAP。HTAP的紧张代表有TiDB、OceanBase、CockroachDB等。
在选择数据库时,须要考虑详细的业务需求和性能哀求。如果您须要处理大量的事务性事情负载,如在线交易,那么OLTP数据库是一个空想的选择。如果您的需求是进行繁芜的数据剖析和报表天生,那么OLAP数据库可能更适宜。而如果您须要同时知足实时剖析和事务处理的需求,那么HTAP数据库是一个值得考虑的选项。
总而言之,OLTP、OLAP和HTAP数据库各自针对不同的数据处理场景和需求。理解它们的特点和适用性,可以帮助您在选择数据库时做出明智的决策,并确保知足业务的需求和性能哀求。
03总结
如果以组件的类型是关系型数据库还是非关系型数据库,并结合做事的场景是OLTP还是OLAP来对业界各种存储组件进行划分的话,可以得到如下图所示的结果。关系型数据库中既有为OLTP设计的,也有为OLAP设计的,同时还有新兴发展起来兼容二者的HTAP数据库。这些系统都有各自适用的业务场景,它们在存储引擎选型时,每每会根据适用场景来决定。如果是读多写少的场景,常日会选择B+树、哈希表来构建存储引擎。而如果是写多读少的场景,每每会选择LSM树来构建存储引擎。
本文摘编自《深入浅出存储引擎》。
本文系作者个人观点,不代表本站立场,转载请注明出处!