数据库的历史-分布式数据库

发布时间 2023-12-18 22:48:14作者: 济南小老虎

数据库的历史-分布式数据库


分布式数据库

数据库承载的东西越来越多.
很容易进就超过了单机能够存放的极限. 
并且就算没超过单机存放的极限, 插入/查询的性能也是无法保证的. 

解决单机解决不了的问题, 其实就是scale-up 和 scale-out 之争
小型机,大型机就是典型的scale-up的方案. 
通过不停地堆料, 能够支撑更多的业务. IBM的POWER P970 还有ZEC13就是个例子. 

但是单机总有极限,并且如果损坏的话宕机成本非常高.
所以在google等开源领袖的带领下.更多的采用分布式的解决方案. 

分布式数据库应运而生. 

按照网上的很多资料, 分布式数据库又分为 PGXC模式和 bigtable模式(newSQL)模式 

PGXC泛指底层还是使用关系型数据库的内核, 通过增加协调器,GTM,统一时钟等方式实现share-nothing的数据库.
尽可能多的承载数据,提高性能. 
但是缺点就是GTM是一个瓶颈点,可能无法走到线性的扩展. 

bigtable 也就是常说的newSQL模式则是基于Google的bigtable的理念而来.
底层采用KV数据库存储数据. 上层通过一个SQL解析引擎实现对外暴露接口.
其实hadoop hbase 也算是这种类型的数据库. 
最近很火的像是TiDB,OceanBase,都是此类. 

PGXC模式的数据库

1. PGXC 日本的公司发展的一款数据库, 基于PG数据库进行研发, 主要是增加时钟,增加GTM,增加协调器等. 
2. 我理解Greenplum和OpenGauss的PG版本也一半属于PGXC模式.
   他们也是基于PG的内核进行研发的数据库, 在外面增加了一层事务管理,SQL解析等. 
3. TDSQL 腾讯的数据库: 云和恩墨的总结为:
    2020年12月腾讯云数据库品牌升级,腾讯云原有的TDSQL、TBase、CynosDB三大产品线将统一升级为“腾讯云企业级分布式数据库TDSQL”。
    全新升级后的腾讯云TDSQL将涵盖分布式、分析型、云原生等多引擎融合的完整数据库产品体系。
    TDSQL MySQL版为原TDSQL,
    TDSQL PostgreSQL版为原TBase OLTP版及HTAP版;
    TDSQL-A PostgreSQL 版为原TBase OLAP版,并新增 ClickHouse 版;
    TDSQL-C为原CynosDB。

    TDSQL MySQL版是基于 MariaDB 内核 ,结合 mysql-proxy、ZooKeeper 等开源组件实现的数据库集群系统,并且基于 MySQL 半同步的机制。

    拥有自主研发的企业级分布式数据库TDSQL,100%兼容MySQL和PostgreSQL,Oracle兼容性达95%以上,
    包含三大产品系列,分别为
    分析型数据库TDSQL-A (Tencent Analytical Database)、
    云原生数据库TDSQL-C (Tencent CloudNative Database)
    分布式数据库TDSQL (Tencent DistributedDatabase),全方位满足政企业务需求。

NewSQL数据库

Google从创建公司到现在一直是开源世界无可争议的领袖. 
他的几篇论文促成了大数据库 hadoop 的生态.
自己开源的K8S有凑成了云原生的基石.
AIGC这一块仅是稍稍落后于OpenAI公司. 但是并没有太大的差距.
在ML和DL的领域, Google的领导力毋庸置疑. 

分布式数据库NewSQL的这一流派, 其实就是诞生于Google的 bigtable. 

通过KV数据库存储data,然后通过解析层进行解析和查询. 

1. TiDB 平凯星辰公司的开源数据库. 
    创始人是 Redis 集群 Codis的作者.
    他们开源了 TiKV组件用于存储键值对, 存储数据库. 
    TiKV基于levelDB-rocksdb进行了深度的定制开发.
    TiDB数据库用于进行SQL解析查询. TiFlash用于模拟clickhouse 的方式进行AP查询
    另外pingcap 还是chaos-mesh的核心布道者, 对混沌测试有很大的领导作用. 
    数据库已经发展到了TiDB7.5左右, 已经兼容支持 mysql8的数据库. 
    需要注意 TiDB是使用raft方式实现的分布式一致性. 

2. OceanBase 阿里巴巴-蚂蚁金服-北京奥星贝斯科技. 
    阿里巴巴其实有多套数据库产品, 不仅有OceanBase还有ParlorDB等产品.
    OceanBase 主要是在蚂蚁金服经受住了双11等流量洪峰的考验, 在金融类有较大的占用率.
    2022年开始开源,最新发布了 OceanBase 4.2.1也基本上实现了对 mysql8的兼容支持. 

    OceanBase的底层存储也是基于KV数据库,但是是自研的产品. 
    OceanBase其实也支持多种部署模式, 兼容Oracle模式和MySQL模式.
    他是需要通过创建租户时进行指定, 创建后无法修改. 

    需要注意开源版仅支持MySQL模式, 商业版本才支持Oracle模式. 
    与TiDB不同, OceanBase使用的是Paxos协议实现的部分是一致性. 
    不过两种数据库都是基于 LSM数 memtable sstable 的存储模式. 

3. CockroachDB  参考了google spanner 论文 的开源实现.
    应该是国外的公司. 这里不太了解.

4. Clickhouse 俄罗斯的开源数据库, 但是因为俄乌战争, 把自己挪到了荷兰.
    国内的影响力不如之前, 但是在耗尽CPU时的性能无人能出其右. 

5. 华为的GaussDB 数据库. 华为的GaussDB其实也分为多种, 也有多种不同的模式.
    甚至还包含 Redis,所以没法一概而论. 有产品线,有版本,有模块. 

不是总结的总结

开源数据库自己了解的还是比较少

其实任何产品优化到最后都是对存储和读取的优化. 
能够更快的存储,更快的读取才能提供更好的性能和客户感受. 

开源数据库其实更吃资源配置, 他们不像传统数据库,从HDD时代一路走来
索引, 优化器, 语法,优化的不能在优化. 

开源分布式数据库大部分都是基于内存和依靠更多的硬件设备来保证不会同时宕机保证数据的可用和可恢复.

两者的性能不能在一条线上比较
传统数据库, 在给定硬件平台下, 只要不是特别多,都会比分布式数据库的性能要好一些.
但是传统数据库毕竟无法做到scale-out的平滑扩展. 

开源的分布式数据库这时就能够很好的实现十倍的硬件多产生3-5倍的经济效益. 

优秀的产品都不能将就性价比, 将就性价比就不会有最优秀的产品.