分布式数据-概述
目录
数据库分布在多台设备上的好处:
- 可拓展性: 数据量、读取负载、写入负载超出了单台机器处理能力。
- 容错、高可用:单台机器(或多台、网络、整个数据中心)出现故障仍然能继续工作。
- 延迟:全球范围内部署多个服务器,用户从最近的数据中心获取服务。
扩展负载
- 垂直扩展(vertical scaling or scaling up):买更强大的机器。
- 方法1: 共享内存架构,许多处理器,内存和磁盘可以在同一个操作系统下相互连接,快速的相互连接允许任意处理器访问内存或磁盘的任意部分。所有的组件都可以看作一台单独的机器(ps:大型机中,尽管任意处理器可以访问内存的任意部分,但是总有一些内存区域与处理器更近,称为非均匀内存访问,解决方案是分区,使每个处理器主要访问临近内存)。缺点,成本的增长是非线性的。
- 方法2: 共享磁盘架构,使用多台具有独立处理器和内存的机器,但将数据存储在机器之间共享的磁盘阵列上,这些磁盘通过快速网络连接(ps:网络附属存储 NAS ,或存储区网络 SAN)。这种架构常用于数据仓库,竞争和锁定的开销限制可伸缩性。
- 水平拓展(horizontal scaling or scaling out): 也是一种无共享架构,买更多的机器。在这种架构中,运行数据库软件的每台机器 / 虚拟机都称为 节点(node)。每个节点只使用各自的处理器,内存和磁盘。节点之间的任何协调,都是在软件层面使用传统网络实现的。(ps:它带来了额外的复杂度)。
复制和分区
复制(Replication): 不同的节点上保存数据的相同副本。提供了冗余,也有助于改善性能。
分区(Partitioning):将一个大型数据库,拆分成较小的子集(称为分区,partitions),从而将不同的分区指派给不同的节点(nodes,也叫 分片, 即sharding)。
它们经常同时使用。