cube.js schema 定义多datasource 说明

实际上我以前有写过类似的使用比较简单,以下明确说明下

参考cube schema 定义

const {MySqlDriver,MySqlQuery} = require("mymysql-cubejs-driver")
const {DremioDriver,DremioQuery} = require("mydremio-cubejs-driver")
module.exports = {
    // 此方法对于自定义driver 还是比较重要的,会暴露一个dbType的属性信息
    dialectFactory: (context) => {
        if(context.dbType==="mymysql") {
            return MySqlQuery
        }
        if(context.dbType==="mydremio"){
            return DremioQuery
        }
 
    },
    dbType: ({ dataSource } = {}) => {
        console.log("dbTyped",dataSource)
        if(dataSource==="web") {
            return "mymysql"
        }
        if(dataSource==="dremio"){
            return "mydremio"
        }
        // default 很重要,不然你的代码肯定会有问题的,通过代码也可以看到,而且官方文档也有说明
        if(dataSource==="default"){
            return "mymysql"
        }
    },
    driverFactory: ({dataSource}={}) => {
        console.log("driverFactory",dataSource)
        if(dataSource==="web"){
            return new MySqlDriver({})
        }
        if(dataSource==="dremio"){
            return new DremioDriver({
            })
        }
        // default 很重要,不然你的代码肯定会有问题的,通过代码也可以看到,而且官方文档也有说明
        if(dataSource==="default"){
            return new MySqlDriver({
            })
        }
    }
};

说明

以上代码使用了自定义driver,遵循了cube.js 自定义driver 的开发模式<name>-cubejs-driver
同时上边的default 也是一个比较重要的点,我们需要添加default 实现,dialectFactory 对于我们自己开发的
driver 是一个比较重要的,说明以前开发的dremio 以及mysql,cratedb 的driver 我也已经修改为遵循cube.js
标准的名称了(如果driver 提供了静态的dialectClass 也就不是必须的了。。。)

参考资料

https://cube.dev/docs/schema/reference/cube#data-source
https://cube.dev/docs/multitenancy-setup#multiple-schema-and-drivers

posted on   荣锋亮  阅读(162)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-11-18 restql 学习三 查询语言简单说明
2019-11-18 restql 学习二 几种查询模式
2018-11-18 ksonnet 一个简化编写以及部署kubernetes的工具
2017-11-18 luvit 被忽视的lua 高性能框架(仿nodejs)
2017-11-18 lapis 处理接收到的json 数据
2017-11-18 luarocks yum 安装引起的lapis lua 包查找问题(centos7版本)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示