-- DB 仅存储数据库连接信息,不处理数据 CREATE DB IF NOT EXISTS mdbxdb ( -- 数据库驱动类型,单引号或双引号标记的字符串, -- 目前支持的类型有 sqlite|mysql ,新的类型需要更新 odbserver DRIVER : 'sqlite', -- 数据源定义,单引号或双引号标记的字符串, -- 不同数据库类型格式不一样,参考相关数据库驱动文档 SOURCE : "file:data/paper_trade_record_620?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 /mdbx () with namespace='mdbx' ; -- 固定映射(指定固定条件或无条件映射数据), -- 当主类中没有数据时,查询时自动赋值默认对象属性: -- class: 类名/mdbx/dba1, -- id: 组合映射表主键为字符串, -- name: 与id相同, -- day: 当前日期, -- vtime: 当前时间 -- 映射表查询结果按 id 匹配关联主对象 -- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象 -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型 -- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素 -- 支持 bucket 链式表达式 create class if not exists /mdbx/dba1 ( rdb bucket { -- 固定映射 "type" : "mdbxdb", -- 必须:指定表名 "table" : "T__project_0_1000119_0_harness_0_draft__paper_0_trade_0_record", "fields": ["id","project_1000119_harness_draft_trades_on","system"] }, ) with nickname='mdbx_dba1' ; -- 条件映射 -- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致 -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定 -- 支持 bucket 链式表达式 create class if not exists /mdbx/dba2 ( xvarchar varchar, xint int, xbigint bigint, xdouble double, xdate date, xrdb bucket { -- 条件映射 "type" : "mdbxdb", -- 指定结构化查询信息表、字段、条件 -- TODO 后期可解析 sql 语句,方便应用开发 "table" : "T__project_0_1000119_0_harness_0_draft__paper_0_trade_0_record", "fields": ["source_line_no", "trade_record_id", "system"], "conds" : { "and": [{ -- 多条件组合 "like": ["trade_record_id","%000010001%"]},{ -- 常量条件 "=": ["source_line_no", {"field":"xint"}]} -- 变量条件 ]}, -- sql函数支持 "orderby" : ["source_line_no"] -- 指定排序,保证 last row 输出稳定结果 -- TODO "groupby","having" } "rdb test", xmap map, xlist list, xset set, indexes(xvarchar, xint, xbigint, xdouble, xmap, xlist, xset), keys(xvarchar) ) with nickname='mdbx_dba2' ;