前言:
曾经在使用Oracle的过程中,一度遭遇共享存储带来的瓶颈,扩展十分困难,想象也有一个分布式的数据,但是大数据那时候很火,缺不能支持OLTP,以及对SQL的支持,
特别希望出现一种数据库,既有分布式存储的特性,又有关系型数据库的特性。俗称分布式的关系型数据库。要支持看横向和纵向扩展,自从OceanBase的问世,关系型数据库的分布式存储格局被打开,还上升到了数据中心容灾方案的数据库架构,
早闻支付宝用的是自己的数据库,并且手机里面的支付宝还给了大家非常好的用户体验。这个国产的重量级数据库现在终于进入我的视野。未来数据库的市场道路必然是国产化。
Oceanbase摘要笔记:
OceanBase 数据库可以在通用服务器上运行,不依赖于特定的高端硬件,能够有效降低用户的硬件成本。
OceanBase 数据库使用的基于 LSM-Tree 的存储引擎,能够有效地对数据进行压缩,并且不影响性能,可以降低用户的存储成本。
什么是 LSM-Tree ?
可参考以下网址:https://blog.csdn.net/u010454030/article/details/90414063
OceanBase 数据库支持的字符集有
binary、utf8mb4、gbk、utf16、gb18030。
OceanBase 数据库支持的排序方式有 utf8mb4_general_ci、utf8mb4_bin、binary、gbk_chinese_ci、gbk_bin、utf16_general_ci、utf16_bin、utf8mb4_unicode_ci、utf16_unicode_ci、gb18030_chinese_ci、gb18030_bin。
OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、事务引擎、存储引擎,运行在普通 PC 服务器组成的集群之上,具备可扩展、高可用、高性能、低成本等核心特性。
Zone 是一个逻辑的概念,它包含了 1 台或者多台运行了 OBServer 进程的服务器(以下简称 OBServer)。每一个 Zone 上包含一个副本(全功能副本或者日志副本)
由于 OceanBase 数据库的数据副本是以分区为单位的,所以同一个分区的数据会分布在多个 Zone 上。
Zone的功能:
每个 Zone 会提供两种服务:总控服务(RootService)和分区服务(PartitionService)。其中每个 Zone 上都会存在一个总控服务,运行在某一个 OBServer上,整个集群中只存在一个主总控服务,其他的总控服务作为主总控服务的备用服务运行。总控服务负责整个集群的资源调度、资源分配、数据分布信息管理以及 Schema 管理等功能。
OceanBase 数据库的存储引擎采用了基于 LSM-Tree 的架构,把基线数据和增量数据分别保存在磁盘(SSTable)和内存(MemTable)中,具备读写分离的特点。对数据的修改都是增量数据,只写内存。所以 DML 是完全的内存操作,性能非常高。读的时候,数据可能会在内存里有更新过的版本,在持久化存储里有基线版本,需要把两个版本进行合并,获得一个最新版本。