1.介绍
实现数据分片需要包含以下功能:
- 分片映射管理:是一个特殊的数据库。存储分片相关的元数据。
- 路由:当接收到一个请求时,应用程序需要根据相关的key值从 分片映射管理器中获取映射的数据库,进行数据查询或修改。
- 多分片查询:当一个请求涉及到多个分片时,需要对查询结果进行排序合并等。
2.分片映射
2.1 列表分片映射
维护一个表用于单独的键值和分片数据库的关联。
键 | 分片位置 |
---|---|
1 | databaseA |
2 | databaseB |
3 | databaseA |
2.2 范围分片映射
范围分片映射中,键范围由 [Low Value, High Value) 对描述,其中 Low Value 是范围中的最小键,而 High Value 是第一个大于范围的值。
键 | 分片位置 |
---|---|
[1,50) | databaseA |
[50,100) | databaseB |
[100,150) | databaseA |
3.分片映射管理器
分片映射管理器是分片映射的集合。
- 全局分片映射:指定一个数据库作为其分片映射和映射的存储库。
- 局部分片映射:每个分片数据库 内部维护一个其分片的子表,用于应用程序验证本地缓存的有效性。
- 应用程序缓存:存储最近检索到的路由信息。