代码结构
Contents
代码结构#
Hybridse SQL 引擎#
hybridse/
├── examples // demo db和hybrisde集成测试
├── include // 代码的include目录,里边结构和src基本一致
├── src
│ ├── base // 基础库目录
│ ├── benchmark // benchmark相关
│ ├── case // 测试case相关
│ ├── cmd // 封装的demo等
│ ├── codec // 编解码相关
│ ├── codegen // llvm代码生成相关
│ ├── llvm_ext // llvm符号解析相关
│ ├── node // 逻辑计划、物理计划中的节点定义, 表达式、类型节点定义
│ ├── passes // sql优化器
│ ├── plan // 生成逻辑计划
│ ├── planv2 // zetasql语法树转化成节点
│ ├── proto // protobuf定义
│ ├── sdk // sdk相关
│ ├── testing // 测试相关
│ ├── udf // udf和udaf的注册生成等
│ └── vm // sql物理计划和执行计划的生成以及sql编译和执行人口
└── tools // benchmark相关
在线存储引擎和对外服务接口#
src/
├── apiserver // apiserver相关
├── base // 基础库目录
├── catalog // catalog相关
├── client // ns/tablet/taskmanager client的接口定义和实现
├── cmd // CLI以及openmldb二进制生成相关
├── codec // 编解码相关
├── log // binlog和snapshot格式以及读写
├── nameserver // nameserver相关
├── proto // protobuf相关定义
├── replica // 主从同步
├── rpc // 封装brpc请求
├── schema // shema和索引解析生成
├── sdk // sdk相关
├── storage // 存储引擎
├── tablet // tablet中接口的实现
├── test // 测试相关
├── tools // 封装一些小工具
└── zk // zookeeper client的一些封装
Java 模块#
java/
├── hybridse-native // sql引擎swig自动生成的代码
├── hybridse-proto // sql引擎相关proto
├── hybridse-sdk // sql引擎封装的sdk
├── openmldb-batch // 离线的planner,把sql的逻辑翻译成spark的计划
├── openmldb-batchjob // 执行离线任务相关
├── openmldb-common // java sdk中的一些公用代码,基础库
├── openmldb-import // 数据导入工具
├── openmldb-jdbc // java sdk
├── openmldb-jmh // 用作性能和稳定性测试相关
├── openmldb-native // swig自动生成的代码
├── openmldb-spark-connector // spark的connector实现,用来读写OpenMLDB
└── openmldb-taskmanager // 离线任务管理模块
Python SDK#
python
├── openmldb
│ ├── dbapi // dbapi接口封装
│ ├── native // swig自动生成的代码
│ ├── sdk // 调用底层c++接口代码
│ ├── sqlalchemy_openmldb // sqlalchemy接口封装
│ ├── sql_magic // notebook magic
│ └── test // 测试相关