分级存储
1.30.18 版本开始,DolphinDB 引入了分级存储策略(仅适用于集群模式),即将一部分较旧的数据转存至本地其他磁盘卷(通常是更低速的磁盘卷)或云端(S3)。较旧的数据(冷数据)通常不会被用户频繁查询或计算,但是存储在本地会占用大量磁盘资源,因此将不常用的数据存储在云端,或将其从高速磁盘(如 ssd)转存至较低速的磁盘(如 hdd),可以有效节约资源开销。
分级存储架构:
热数据(volumes)→ 冷数据(coldVolumes)→ 过期数据(删除)
相关配置:
冷数据磁盘卷配置项 coldVolumes
coldVolumes = file://home/mypath/hdd, s3://bucket1/data
存储冷数据的文件目录。可指定多个路径,路径间用逗号隔开。该参数支持配置为本地路径或者 s3 路径。请注意: * Linux 系统下本地路径需以标识符 “file://” 开头 * Windows 系统下本地路径(假设在 D 盘)以标识符 “file:/D:/” 开头 * s3 路径需以 “s3://” 开头,其格式为 “s3://{BucketName}/{s3path}”,其中 “s3path” 不可为空
注意:
不同数据节点需要配置不同的 coldVolumes 路径,可通过宏定义实现,如:coldVolumes=s3://bucket/ddb/<ALIAS>。
若配置项中包含 s3 路径,则需要在配置文件同步增加 s3 的相关配置。
需要确保配置的 s3 路径下无其他数据文件。
存储在 s3 的分区权限为 READ_ONLY(只读)。
s3 相关配置项
//插件配置
pluginDir=plugins
preloadModules=plugins::awss3
//s3相关配置
s3AccessKeyId
s3SecretAccessKey
s3Region
搭建 AWS s3 云存储服务器,可以参考 https://aws.amazon.com/cn/getting-started/guides/setup-environment/
分级存储策略:
通过函数 moveHotDataToColdVolume 和 setRetentionPolicy 均可以将冷数据转存至 coldVolumes。两者指定的冷数据转存策略的区别如下:
区分点 |
moveHotDataToColdVolume |
setRetentionPolicy |
---|---|---|
触发方式 |
强制触发一次数据迁移。 |
系统为每个数据库分配固定的检查时间点。当到达每个数据库的检查时间点时,系统会检查库中是否存在需要迁移的数据,若存在,则进行迁移。每天每个数据库仅被检查一次。 |
迁移数据的时间范围 |
迁移数据的范围由参数 checkRange 指定,为 [当前时间 - hoursToColdVolumes - checkRange, 当前时间 - hoursToColdVolumes) |
只迁移 10 天的数据,范围为 [当前时间 - hoursToColdVolumes - 10 天, 当前时间 - hoursToColdVolumes) |
在实际场景应用分级存储策略时,建议用户在第一次转存大量历史数据时,先通过 setRetentionPolicy 配置合理的自动转存策略,再通过 moveHotDataToColdVolume 进行批量迁移,最后由系统自动迁移冷数据。