BigQuery存储系统:原理、优化与应用
1. 存储系统概述
高效的存储是数据库管理系统成功的关键之一。BigQuery的快速性能很大程度上源于其独特的数据存储方式,从底层存储硬件(采用大规模分布式文件系统)到文件格式(自定义列存储),其存储栈(包括元数据和存储数据)都针对分析速度进行了优化。
1.1 存储数据分布
BigQuery可存储EB级数据,这些数据分布在数十个区域的数百万个物理磁盘上。底层存储系统的主要目标是实现分布式数据的快速访问,并确保任意两个表能够相互连接,即它们需位于同一位置。
1.2 数据写入与耐久性
当数据加载到BigQuery时,会被写入Capacitor文件并存储在Colossus上。Colossus采用纠删编码存储数据,即使大量磁盘出现故障或损坏,数据依然持久。为确保数据的耐久性和可用性,数据会被复制到同一区域的另一个可用区。对于多区域的BigQuery位置,还会在区域外存储副本,以应对重大灾难。
2. 物理存储:Colossus
2.1 系统简介
Colossus是Google广泛使用的分布式存储系统,它是Google文件系统(GFS)的演进版本。通过创建更灵活的元数据系统并消除单点故障,Colossus解决了GFS在可扩展性、灵活性和可靠性方面的诸多问题。
2.2 数据编码
- 复制编码 :简单地将数据复制多份存储。通常认为存储三份数据较为安全,只要有良好的替换策略,数据丢失的概率极低。但复制文件成本较高,因为需要存储完整的数据副本。