|
7 r$ `* s1 H6 F' D% z7 A) S2 D
引入 | 图解那些分布式数据库中的 DBMS
# S9 A b: ~/ [; b7 Y: m! m
7 F) ]* ^$ j! e. t0 d8 u$ s
* b) c- b2 v9 c8 G5 q0 s# K! g 开篇:想必大家都有一个疑问?何为分布式数据库?OLTP,OLAP,HTAP?它又能够给我们带来什么?
% R; i4 Q. H9 S' H4 _& } 8 R Q2 k$ S; O: U
背景:在数据库技术 DBMS 领域,尤其是针对其中很多核心技术组成部分攻关的突破,国产化数据库一直都起着模范带头作用。许多国内互联网公司,包括现在很多成熟的技术框架,数据库都来自于国外。早期,依赖于核心技术的引进,在引进的基础上做上层应用,进而不断迭代。而现在核心技术自研,数据库自研等成了技术攻关的新浪潮。阿里曾一直提出“去 IOE ”的概念-其中 IBM 是服务器提供商,Oracle 是数据库软件提供商,EMC 则是存储设备提供商。 9 R" a/ K F" w- T
思考:
* I" \3 C1 r4 k" L 1、当使用 K8、Docker 容器化编排技术受到限制,假若 Oracle、MySql 数据存储等数据库软件不再向我们提供正常的服务?
) s, p# `, K k- u- ^$ n; t 2、在我们的项目工程中,若是没有了这些数据库技术去提供正常的服务,如何能够去及时地采取补救的措施,使得业务能够平滑过渡,做到让用户无感知体验? ( @6 |2 }: H6 g& n/ T) f$ T
3、从传统关系型数据库到非关系型数据库,NOSQL ,NewSQL 再到数据湖,以及兼顾 OLAP 跟 OLTP 的各种分布式数据库-HTAP(混合事务/分析处理),在拥有自己的数据存储解决方案基础之上,现有技术框架体系是否能够较好适配,能否做到更好地兼容? 3 ~/ R2 P5 ~( ^8 P5 V9 U
场景:在现有渠道产品上的适配,推进国产化数据库进程,包括信创自主可控等领域,都值得作为技术人的我们去深思......
. n- n9 ?4 m' n) _4 h! m& ~ 诚然,技术多元化是一个趋势,多语言并存,多数据库适配,多环境兼容......
8 q* U, l# n: k/ U$ P; [6 u 现状:Oracle,ElasticSearch,MySQL 架构 # p# l: |( \" n4 f1 N3 U% R0 ^
目前,在 Oracle 中多个业务库中,数据规模已经非常庞大,MySQL 中多个业务库,其单表数据量都已超过千万级别,数据每天在不断的增长...... . ~5 O5 U% u, J9 o+ N# Q
* O$ ^9 M4 W- W0 K 尤其,在许多老旧的项目中,Oracle 视图数据量非常大,DMP 文件数百G,数据存储成本极其昂贵,这里也提供下大数据量的一些数据库导入导出方式(相比较工具导入导出或许速度更快一个数量级)
: N/ ^. r& d8 H' f5 R MySQL: / E) h% v) g: m5 @" u! F: L+ F; i# P& h
备份数据库命令:
5 n$ B0 U4 r U( C mysqldump -u root -p 数据库名 > /home/user/2021.12.26.sql;
2 H" z' m- m9 N) g5 P3 N* k; ` 1 W' h, S& `+ I1 \0 |" Z
只需导出表结构: 2 a4 c0 t! U- a' g' B7 U
mysqldump -u applyun -p -d bi > /home/applyun/bi.sql;# N5 c+ S3 \0 W
0 ~; A/ E) }" z. e1 w 数据库迁移导入:
1 O1 Q+ e# c7 X0 Z% O* I# L mysql -u root -p 数据库名 < /home/user/2021.12.26.sql;) F6 H, V! _- T( r! _" j2 Y3 W' r
0 m0 d- e( ]& \! b% Q4 R! { Oracle: ' w4 k3 ^9 w. ]5 V) o
数据库迁移导入:
- J/ b6 D* q$ t. l5 V! k9 D imp yd_dev_tmp/user@ip/orcl file=/home/oracle/xxx.dmp ignore=y full=y;9 m; ^" z( l5 E9 P
! A$ G I4 b' ~
& n- P, r; @2 k z6 @ 成功导入数据泵. dmp 文件。(其中,可通过su - oracle进入oracle目录,dmp文件可上传到/home/oracle路径) # Y6 J3 ~& C5 W A9 A9 n9 j* F
猜想: 4 q" W' g. Q: C, {
当下的数据库技术体系,正如春秋时期百家争鸣的局面,已然无法像传统关系型数据库那样三足鼎立,各个大厂,尤其是互联网,根据其自身业务需求体系定制化了很多产品,像 OceanBase ,TiDB ,Vertica,ClickHouse,Greenplum...... ! F. J+ x4 H. ?2 [; j z* w3 P/ `2 D
那么,拥有这么多的选择权,是不是意味着学习的成本会不断抬高,我们需要了解扩充的知识面更多?上述仅列举了正在项目中移植预研的几款 DBMS,更多详情请回顾->数仓进阶 | 记一次OLAP分析引擎演进思考过程 - I2 C" Y* Q, S" C3 _; u
构思:
9 V$ s( \ C3 g) M5 I" h1 D 当我们的业务系统发展到一定规模,不论是累计数据量,亦或用户并发量。早期,通过单体架构进行设计,应付自如,再大就是分库分表,解决数据库单点瓶颈(I/O)。 9 K0 j7 |& I! l/ X- r7 K* @
随着业务持续发展,单机有着明显的单点效应,并且单机的容量跟性能都是极其局限的。
: U1 l3 x( [# C; X1 ~ 进一步,对某些应用进行水平扩容,渐渐的,虽然各个应用服务器CPU都正常,但是你会发现还是有很多慢请求依然存在,究其缘由-单点数据库性能瓶颈?
8 Y8 c ^# N ]0 E+ e 更进一步,数据库集群-主从架构,大部分读操作可直接访问从库,减轻主库的负担,但依旧还是无法解决主库写的瓶颈?
, p2 G( C& P/ q0 {& h 接下来,就是上述提到的分库分表,分库分表可作水平拆分-对表进行进一步拆分,垂直拆分-不同功能表放置不同的库,按业务功能进行拆分。
$ U2 I+ |; u! a. O0 ` 然而,当相同的应用扩展越多,每个数据库的链接数,长久以往必会让数据库本身的资源再度成为瓶颈,简言之,资源隔离性依然不彻底->未形成单元化的雏形。
g! [) \1 f& H* j 9 h5 c& e1 U; T3 R5 m9 F
再谈经典,
& ]$ O0 a) C {4 W Google 三驾马车,在分布式系统工程实践领域:
2 I) f* d% _/ m9 ?8 d 《Google File System》、《Google MapReduce》、 # t _! }0 `, B" a9 e8 q
《Google BigTable》在很大程度上奠定了业界大规模分布式存储系统的理论基础. : S# X3 M7 h" O8 A, A5 T
回到 CAP 理论,想必在分布式领域中这个著名的定理都有所耳闻,即 C 为数据一致性,A 为服务可用性,P 为服务对网络分区故障的容错性。 + K9 Z) t0 j. f4 I+ ^" w" ~. R9 d, d
谈及 CAP,这里暂不详赘,各有各自不同深度层次的见解,但这里需要说明下的就是选择 CP 的分布式系统,并不代表可用性就完全没有了,比如像我们常用的中间件,为了增加可用性保障,往往提供了分片集群-复制的一些方案。
/ X2 g! z9 \: x' b: e# {9 _" k 包括常说的 BASE 理论-对 CAP 理论的延伸,核心思想-即使无法做到强一致性(Strong Consistency),但我们的应用可以采用适合的方式达能够到最终一致性(Eventual Consitency)。
% Z0 |+ i& s) v$ z6 s 从上述提到由单点现状->分布式架构演进构思的过程中,出现诸多不同阶段性痛点,想必这也是为什么那么多分布式数据库产品如雨后春笋般不断涌出?
' n) o" W- M! S; _; q; ~9 x& e OceanBase-中国第一款自主研发的分布式数据库(简称OB) 7 K4 s, w( P }- ] Q4 D [, P& n
企业级分布式关系数据库
, Q! ]* m9 e+ \ {# L- b a)数据强一致
$ X4 g2 I0 N+ I+ Q+ j b)高可靠
5 H: f; t2 }- ~! y6 ^0 N/ l 分区-副本机制
+ G6 |/ J# r4 d7 X1 R( w/ w; ^ c)高性能
7 \" J4 s4 M1 E! J0 ~ Paxos协议,在数据强一致的情况下,具有极高的可用性及性能 - d1 o8 I1 @2 u. m7 h0 C/ y
d)在线扩展 % q# p5 h, U1 I" D% d1 g
当集群存储容量或是处理能力不足时,可以加入新的 OBServer
5 B2 f) V7 Q6 K& j$ z% E e)高度兼容 SQL 标准和主流关系数据库 ! p3 G! E" d+ f0 a3 u6 w* f4 ]- H
f)低成本
3 U8 M# ^" u6 _9 |% Z& c1 p! L0 q CPU、操作系统、数据库 0 u2 V5 q" [' o; H. [8 ~) b
如何既兼顾处理 TP 场景的能力,又具备 AP 场景的分析能力?
. Q4 ?' q2 I, X' t! t5 _3 G2 N6 Z 想必 HTAP 架构希望打破 TP 和 AP 的边界,虽然存在很多技术难关需要攻克,一直在路上,期待 OceanBase(OB)一直会有新的突破......
4 s& e& \8 N" c, Y; O+ E 延伸思考:HTAP(混合事务/分析处理),相比 OLTP、OLAP 能够给我们带来?OceanBase 又是如何支持 HTAP? 5 m, b- v+ e# B
在高并发海量数据场景下,是否能让系统中诸多计算节点同时运行 OLTP 类型的应用和复杂的 OLAP 类型的应用......
2 F( t1 ? i1 c) b& F1 g
3 U. H# p* e5 L9 R1 ~. c0 c0 |0 Z. y) T/ ~% w6 u
, A) ?% B* J2 o' K! D& R: B1 Q0 K) i! Y9 v' k! Y/ v9 l
|