分级存储

1.30.18 版本开始,DolphinDB 引入了分级存储策略(仅适用于集群模式),即将一部分较旧的数据转存至本地其他磁盘卷(通常是更低速的磁盘卷)或云端(S3)。较旧的数据(冷数据)通常不会被用户频繁查询或计算,但是存储在本地会占用大量磁盘资源,因此将不常用的数据存储在云端,或将其从高速磁盘(如 ssd)转存至较低速的磁盘(如 hdd),可以有效节约资源开销。

  • 分级存储架构:

热数据(volumes)→ 冷数据(coldVolumes)→ 过期数据(删除)

相关配置:

  1. 冷数据磁盘卷配置项 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(只读)。

  1. s3 相关配置项

//插件配置
pluginDir=plugins
preloadModules=plugins::awss3

//s3相关配置
s3AccessKeyId
s3SecretAccessKey
s3Region

搭建 AWS s3 云存储服务器,可以参考 https://aws.amazon.com/cn/getting-started/guides/setup-environment/

  • 分级存储策略:

通过函数 moveHotDataToColdVolumesetRetentionPolicy 均可以将冷数据转存至 coldVolumes。两者指定的冷数据转存策略的区别如下:

区分点

moveHotDataToColdVolume

setRetentionPolicy

触发方式

强制触发一次数据迁移。

系统为每个数据库分配固定的检查时间点。当到达每个数据库的检查时间点时,系统会检查库中是否存在需要迁移的数据,若存在,则进行迁移。每天每个数据库仅被检查一次。

迁移数据的时间范围

迁移数据的范围由参数 checkRange 指定,为 [当前时间 - hoursToColdVolumes - checkRange, 当前时间 - hoursToColdVolumes)

只迁移 10 天的数据,范围为 [当前时间 - hoursToColdVolumes - 10 天, 当前时间 - hoursToColdVolumes)

在实际场景应用分级存储策略时,建议用户在第一次转存大量历史数据时,先通过 setRetentionPolicy 配置合理的自动转存策略,再通过 moveHotDataToColdVolume 进行批量迁移,最后由系统自动迁移冷数据。