
第
5
期 庞天泽,等:分布 式 环 境 中 数 据 库 模 式 设 计 实 践
normalizationtodesi
g
ntheschemaforOceanBaseandtoim
p
rovethe
p
erformanceofOLAP.Fi
nall
y
,
weillustratetheefficienc
y
andeffectivenessofthedenormalizationdesi
g
nforOceanBasein
theem
p
iricalstud
y
b
y
usin
g
benchmarkTPCH.
犓犲
狔
狑狅狉犱狊
:
denormalization
;
distributeddatabase
;
OceanBase
;
TPCH
0
引
言
数据库按照表结构 来 组 织、存 储 和 管 理 数 据,被 广 泛 应 用 于 各 行 各 业,以 提 供 数 据 支
撑
[
1
]
.
数据库模型主要分为网状模型、层 次模 型、关 系模 型 和 面 向对 象 模 型 等
[
2
]
.
其 中,关系
模型使用二维表来描述数据间的关系,具有很好的数据独立性和简洁的数据组织结构
.
目前
主流数据库管理系统均采用关系 模 型 ,如
Oracle
[
3
]
、
DB2
[
4
]
、
M
y
S
q
l
[
5
]
等,这 类 传 统 的关 系 型
数据库采用集中式的管理模式,即数据的存储和处理一般都集中于一个节点上
.
而数据库厂
商则通过不断地提高节点的存储和处理能力
,来 应对 业 务 和 数据 量 的 增 长
.
但 是,由 于 近几
年互联网的快速发展,全球数据量正呈爆炸式增长,传统的集中式数据库难以承载海量数据
的存储和访问
.
为解决这一问题,分布式数据库是一个不错 的 选 择
.
在 分布 式 数 据 库中,系 统 通常 会 根
据数 据 分 片 和数 据 分 配 的策 略,将 数据 分 布 存 储在 多 个 节 点上
.
节 点之 间 通 过 网络 相 互 连
接,当数据库收到数据请求时,能够将请求发往 相应 的 节 点 进行 处 理 ,降 低 了单 个 节 点 的负
载
.
另外,在分布式数据库中,为了防止数据由于节点故障而造成丢失或无法访问,一般会为
数据创建多个副本,分别存储在不同的节点上
.
这样,即使有某个节点出现故障,也不会影响
数据库的正常使用,很大程度上提高了数据库的可靠性
.
分布式数据库很好地解决了集中数
据库的数据存储瓶颈,并提升了数据库的可靠性
.
但是在实际应用中,它仍存在一些问题
.
在
分布式数据库中,节点之间通过网络互连,数据 会跨 节 点 甚 至跨 地 域 分 布
.
如 果应 用 中 存 在
连接操作
,并且涉及的各张表数据分别存储在不同节点上,那么执行该应用时将会造成数据
的跨节点交互
.
特别是对于
OLAP
业务,数据量一般十分庞 大 ,连 接操 作 导致 的大 量 数据 交
互会产生巨大的网络传输开销,严重影响数据 库的 性 能
.
此 外,由 于 数据 分 布 存 储并 具 有 多
个副本,副本间的数据一致性需要数据库来维护,这也会给数据库的性能带来负面影响
.
在实践中,数据设计通常都会遵循范式
.
然 而,严格 的 范 式 设计 无 法 保 证数 据 库 在 任何
情况下都能有最优的性能
[
6
]
.
为减少数据冗 余,范式 设 计 的 数据 库 通 常 会包 含 大 量 的表 格,
因此,查询时可能需要连接多张表后才能获得需要的全部数据
.
而过多的连接操作是数据库
性能下降的主要因素
,特别是在大数据量情 况下,影 响 更 大
.
因 此,通 过 减少 表 的 数 量,同 时
增加数据冗余,尽量减少查询中的连接操作,从 而提 高 数 据 库性 能,这 正 是所 谓 的 反 范式 数
据库模式设计
.
尤其是在数据仓库业务中,由于数据量相对庞大,查询请求也较为复杂,反范
式设计可以很好地改善数据库性能,以满足业务需求
.
由于在分布式数据库中增加了网络传输开 销,传 统 的数 据 库 范 式设 计 方 法 带来 的 问 题
被放大
.
因此,反范式模式设计可能是分布式数据库的一个选择,这是因 为 :(
1
)分 布式 数 据
库通过多节点数据冗余提高系统可用性,数据的完整性不再是通过减少 冗 余来 实现;(
2
)反
范式模式设计降低了网络数据传输开销
,可以提高分布式数据库的性能
.
但是反范式模式设
计也有缺点,比如在
OLTP
中,数据库的增、删、改的操 作 十分 常见,较 多 的数 据冗 余 会增 加
192
评论