开发一个cockroachdb 的cube.js 驱动
cube.js 官方有描述关于driver 开发的说明,以下是开发一个简单的cockroachdb 驱动
驱动开发说明
- copy 相关项目,比如mysql 的driver 实现,命名为@cubejs-backend/-driver
- 不能copy changelog.md
- 命名驱动类以及readme.md 信息完善
- 推荐使用纯js 的依赖
- 典型的实现query 以及testConnection 其他的可以通过BaseDriver 类继承
- 如果需要连接池,可以实现
generic-pool
其他语言包可以借鉴 - 确保驱动实现了
release
确保资源的释放 - 使用yarn 进行依赖的管理
- 添加驱动的实现到packages/cubejs-server-core/src/core/DriverDependencies.js
cockroachdb 开发说明
因为cockroachdb支持基于pg 协议的处理,所以可以直接使用pg协议,为了简单代码,我们实现BaseDriver 以及BaseQuery
代码都复用了pg 的
- 代码结构
- pacakge.json
{
"name": "@cubejs-backend/cockroach-driver",
"description": "Cube.js Cockroach database driver",
"author": "Cube Dev, Inc.",
"version": "0.26.38",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.js.git",
"directory": "packages/cubejs-cockroach-driver"
},
"engines": {
"node": ">=10.8.0"
},
"main": "driver/CockroachDriver.js",
"typings": "driver/index.d.ts",
"scripts": {
"lint": "eslint **/*.js"
},
"dependencies": {
"@cubejs-backend/schema-compiler": "^0.26.35",
"@cubejs-backend/query-orchestrator": "^0.26.38",
"@types/pg": "^7.14.5",
"moment": "^2.24.0",
"pg": "^8.2.1"
},
"license": "Apache-2.0",
"devDependencies": {
"eslint": "^6.8.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-node": "^5.2.1"
}
}
CockroachDriver.js:
代码直接copy 的pg的就是进行了名称的修改
添加了
static dialectClass() {
return CockroachQuery;
}
CockroachQuery.js copy 了pg 的进行名称的修改
- 添加deps
方便lookup 函数的使用 server-core
DriverDependencies.js
cockroach: '@cubejs-backend/cockroach-driver',
};
代码集成
可以使用yarn 的link 模式进行测试
.env 与其他db driver 是一样的
说明
我以前也写过关于驱动开发的说明,目前官方不太方便的是需要以及注册deps,否则就需要自己实现一个
dialectFactory 还是比较费事的
参考资料
https://github.com/cube-js/cube.js/blob/master/CONTRIBUTING.md
https://www.cnblogs.com/rongfengliang/p/14369653.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-02-27 postgres http fdw + plv8 处理数据
2020-02-27 pgspider http fdw http 相关的几个配置参数
2020-02-27 pgspider gzip fdw试用(集成gzip+http+graphql-engine)
2020-02-27 minio gateway 代理s3 存储
2020-02-27 pgspider http fdw试用
2019-02-27 GitLab Shell如何通过SSH工作
2019-02-27 Top PG Clustering HA Solutions for PostgreSQL