一、背景:
trino对于数据源的注册方式为静态注册,在服务启动前需要配置好相关数据源的信息,当添加新的数据源时需要停止服务进行数据源的静态注册然后在重启服务;由于该操作可能会中断正在执行的任务,因此生产环境中这种方式是不可取的。为此再生产环境中需要进行数据源的动态配置,以满足生产环境的需求。在github trino issue Dynamic Catalogs #12709(https://github.com/trinodb/trino/issues/12709)中有相关trino动态数据源的相关推送,我们也依次为依据进行trino动态数据源的调研。
二、动态数据源存储核心接口
trino435版本有关数据源的存储分为静态存储和动态存储,其中动态存储的核心接口为:CatalogStore,包含如下方法:
方法名 | 返回值类型 | 形参 | 描述 |
---|---|---|---|
getCatalogs | Collection<StoredCatalog> | 无 | 获取全部的catalog |
createCatalogProperties | CatalogProperties | String catalogName, ConnectorName connectorName, Map<String, String> properties | 从原始的properties创建catalog properties |
addOrReplaceCatalog | void | CatalogProperties catalogProperties |