1. 场景描述
Greenplum 用了大半年了, 要给部门其他同事做下分享, 写了个 ppt, 其中看到 "Greenplum 是一款典型的 Shared-Nothing 分布式数据库系统.", 看到 Shared-Nothing 架构, 以前只从字面上知道就是不共享, 但是对数据库架构了解的不多, 怕别人问起来就尴尬了, 就补了下课, 记录下吧.
2. 解决方案
数据库构架设计中主要有: Shared Everthting,Shared Disk,Shared Nothing 等.
2.1 Shared Everthting
一般是单体主机, 共享 CPU/memory/io, 单节点 的 sqlsever,MySQL,oracle 等关系型数据库都是 Shared Everthting, 实例或者机器出故障了, 整个服务就停用了, 可用性差点.
2.2 Shared Disk
感觉这个概念就是针对 oracle RAC 来的, 简单来说就是多个实例共享数据 (磁盘), 架构图:
说明: 应用实例可以有多个, 可以是服务器, 也可以是一个服务器多个服务, 简单说这种情况下, 实例只要不是全部挂了, 就还能访问, 但是数据库磁盘挂了, 整个服务就不可用了.
2.3 Shared Nothing
大数据时代的到来, 一般都是这个套路了, 就是各玩各的 (CPU, 内存, 存储都不共享), 最后汇总展示.
2.3.1 hadoop
(2) 说明
(a)namenode, 名字节点, 要管理元数据信息 (Metadata), 注意, 只存储元数据信息.
(b) datanode, 数据节点. 用于存储文件块. 为了防止 datanode 挂掉造成的数据丢失, 对于文件块要有备份, 一个文件块有三个副本.
hadoop 默认是三个副本, 这样即使其中一个 datanode 出故障了, 也没关系, 还能正常提供服务.
2.3.2 言归正传, Greenplum
(1)Greenplum 架构图
(2) 说明
(a)Master 主机负责: 建立与客户端的连接和管理; SQL 的解析并形成执行计划; 执行计划向 Segment 的分发收集 Segment 的执行结果; Master 不存储业务数据, 只存储数据字典.
(b)Segment 主机负责: 业务数据的存储和存取; 用户查询 SQL 的执行.
示例中假如有 400 万数据, 4 个 segment host 各自存储 100 万数据, CPU, 内存, 数据都不共享, 根据 master 执行计划, 返回数据到 master 节点, 由 master 节点汇总返回 client, 另外 greenplum 是双备份机制.
说明: 其实这些都是概念性的东西, 只是方便大家快速理解而已, 不用太纠结, 再说了现在 MySQL,oracle rac 等也好多都集群部署了, 有点混合的意思了.
I'm 「软件老王」, 如果觉得还可以的话, 关注下呗, 后续更新秒知! 欢迎讨论区, 同名公众号留言交流!
来源: https://www.cnblogs.com/ruanjianlaowang/p/11294742.html