dremio SourceMetadataManager 服务简单说明
SourceMetadataManager 对于dremio 来说是一个比较重要的东西,它是包含在ManagedStoragePlugin中的一个能力
所以每个存储扩展都包含了一个SourceMetadataManager,而且ManagedStoragePlugin 会利用SourceMetadataManager
的能力管理系统元数据
SourceMetadataManager 的职责
主要是进行source 元数据的同步,主要包含了即席查询,以及后台刷新,即席查询的主要是在添加source 以及测试场景,后台
是基于任务调度执行的,同时还包含了对于元数据的存储(kvstorage)
类图
说明:SourceMetadataManager包含了两大类即席刷新以及,后台任务刷新,从上图也可以看出来
即席查询元数据处理
从上图也可以看出依赖关系,实际上就是一个实现RefreshRunner的子类,包含了几个数据刷新,以及存储元数据的方法
注意依赖了一个MetadataBridge 设计比较有意思(实现了一个锁,确保ManagedStoragePlugin与元数据管理的安全)
refreshDatasetNames 的实现就类用了每个存储扩展包的元数据接口定义了,如果实现了SupportsListingDatasets 就可以获取列表了
具体是如下一个接口的实现
public interface SupportsListingDatasets {
/**
* Returns a listing of dataset handles, where each handle represents a dataset in the source.
*
* @param options options
* @return listing of dataset handles, not null
*/
DatasetHandleListing listDatasetHandles(GetDatasetOption
throws ConnectorException;
}
其他函数功能参考详细参考源码,同时后台任务的处理与类似,只是是基于任务调度执行的
一个参考sql 执行调用链
- schema 获取的
说明
以上关于SourceMetadataManager只是简单的介绍,同时比较零碎,后期提供应该会结合组件将功能串起来
参考资料
sabot/kernel/src/main/java/com/dremio/exec/catalog/SourceMetadataManager.java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-03-08 pgspider Citu 副本以及节点移除简单学习
2020-03-08 Citus 官方docker demo 中membership-manager原理简单说明
2020-03-08 pgspider Citus docker 镜像使用
2019-03-08 nginx unit 1.8 支持基于java servlet 的开发模型
2019-03-08 试用 openresty/lua-resty-shell
2018-03-08 grpc rust 项目基本使用
2016-03-08 Jquery使用ajax以及angularjs 动态模板加载并进行渲染