| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- -- DB 仅存储数据库连接信息,不处理数据
- CREATE DB IF NOT EXISTS msqldb (
- -- 数据库驱动类型,单引号或双引号标记的字符串,
- -- 目前支持的类型有 sqlite|mysql ,新的类型需要更新 odbserver
- DRIVER : 'sqlite',
- -- 数据源定义,单引号或双引号标记的字符串,
- -- 不同数据库类型格式不一样,参考相关数据库驱动文档
- SOURCE : "file:data/testdb?cache=shared",
- -- 附加选项,JSON对象,
- -- 通过 odbserver 支持的,不同数据库类型支持的选项可能不同
- OPTION : {
- "makedir": "auto" -- sqlite 支持,自动创建数据库文件所在目录
- }
- -- mysql示例
- -- driver : "mysql",
- -- source : "user:password@tcp(127.0.0.1:3306)/dbname"
- )
- ;
- -- 创建 MDB 相关测试类
- -- MDB 统一处理不同数据库类型的数据存取
- -- 上面创建的 DB 与 BucketType 对应,兼容早期的内建 BucketType(tsdb|logs|bitlog|promdb|vector)
- create class if not exists /mdb () with namespace='mdb'
- ;
- -- 固定映射(指定固定条件或无条件映射数据),
- -- 当主类中没有数据时,查询时自动赋值默认对象属性:
- -- class: 类名/mdb/dba1,
- -- id: 组合映射表主键为字符串,
- -- name: 与id相同,
- -- day: 当前日期,
- -- vtime: 当前时间
- -- 映射表查询结果按 id 匹配关联主对象
- -- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象
- -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
- -- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素
- -- 支持 bucket 链式表达式
- create class if not exists /mdb/dba1 (
- rdb bucket {
- -- 必须:固定映射
- "type" : "msqldb",
- -- 必须:指定表名
- -- TODO 前期 指定结构化查询信息,方便实现,后期可解析 sql 语句,方便应用开发
- "table" : "T__matrix__test___422YX2FPSXSLVDA9",
- -- 可选:字段信息,不指定或指定空数组时,选择全部字段,相当于 "*"
- "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
- -- 可选:固定条件信息,不指定条件或指定空对象时,按无条件处理
- -- 注意:固定条件指的是不包含变量条件,即与主对象中的字段不存在任何指定关系
- "conds" : {
- "and": [{ -- 多条件组合
- "like": ["文本","%合法%"]},{ -- 常量条件
- "or": [{
- "=": ["name", "7884235075310994619"]},{ -- 常量条件
- "=": ["字符串", "*abc*"]},{
- "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", "2026-10-10"]}]}]}, -- sql函数支持,不校验参数语法
- -- 可选:默认按主键顺序排序
- "orderby" : ["字符串", {"name":"vdouble","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
- -- TODO "groupby","having"
- },
- ) with nickname='dba1'
- ;
- -- 条件映射
- -- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
- -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
- -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
- -- 支持 bucket 链式表达式
- create class if not exists /mdb/dba2 (
-
- xvarchar varchar,
- xint int,
- xbigint bigint,
- xdouble double,
- xdate date,
- xrdb bucket {
- -- 必须:映射名
- "type" : "msqldb",
- -- 必须:指定表名
- -- TODO 前期 指定结构化查询信息,方便实现,后期可解析 sql 语句,方便应用开发
- "table" : "T__matrix__test___422YX2FPSXSLVDA9",
- -- 可选:字段信息,不指定或指定空数组时,选择全部字段,相当于 "*"
- "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
- -- 必须:带有变量的条件信息
- -- 变量指的是主类字段,以 json对象 形式表示,{"field":"xvarchar"}
- "conds" : {
- "and": [{ -- 多条件组合
- "like": ["文本","%合法%"]},{ -- 常量条件
- "or": [{
- "=": ["name", {"field":"xvarchar"}]},{ -- 变量条件,条件中的字段对象指的是主类字段
- "=": ["字符串", {"field":"xvarchar"}]},{
- "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", {"field":"xdate"}]}]}]}, -- sql函数支持,不校验参数语法
- -- 可选:默认按主键顺序排序
- "orderby" : ["字符串", {"name":"vdouble","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
- -- TODO "groupby","having"
- } "rdb test",
- xmap map<varchar, varchar>,
- xlist list<varchar>,
- xset set<varchar>,
-
- indexes(xvarchar, xint, xbigint, xdouble, xmap, xlist, xset),
- keys(xvarchar)
- ) with nickname='dba2'
- ;
|