0100class.mql 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. -- DB 仅存储数据库连接信息,不处理数据
  2. CREATE DB IF NOT EXISTS mdbxdb (
  3. -- 数据库驱动类型,单引号或双引号标记的字符串,
  4. -- 目前支持的类型有 sqlite|mysql ,新的类型需要更新 odbserver
  5. DRIVER : 'sqlite',
  6. -- 数据源定义,单引号或双引号标记的字符串,
  7. -- 不同数据库类型格式不一样,参考相关数据库驱动文档
  8. SOURCE : "file:data/paper_trade_record_620?cache=shared",
  9. -- 附加选项,JSON对象,
  10. -- 通过 odbserver 支持的,不同数据库类型支持的选项可能不同
  11. OPTION : {
  12. "makedir": "auto" -- sqlite 支持,自动创建数据库文件所在目录
  13. }
  14. -- mysql示例
  15. -- driver : "mysql",
  16. -- source : "user:password@tcp(127.0.0.1:3306)/dbname"
  17. )
  18. ;
  19. -- 创建 MDB 相关测试类
  20. -- MDB 统一处理不同数据库类型的数据存取
  21. -- 上面创建的 DB 与 BucketType 对应,兼容早期的内建 BucketType(tsdb|logs|bitlog|promdb|vector)
  22. create class if not exists /mdbx () with namespace='mdbx'
  23. ;
  24. -- 全量映射(也可以指定固定条件映射部分数据),
  25. -- 实际类中没有数据
  26. -- 查询时自动赋值默认类属性:
  27. -- class: 类名/mdbx/dba1,
  28. -- id: 组合映射表主键为字符串,
  29. -- name: 与id相同,
  30. -- day: 当前日期,
  31. -- vtime: 当前时间
  32. -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
  33. -- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 有且只有 一个元素
  34. -- 支持 bucket 链式表达式
  35. create class if not exists /mdbx/dba1 (
  36. rdb bucket {
  37. -- 全表映射
  38. "type" : "mdbxdb",
  39. -- 指定表名
  40. "table" : "T__project_0_1000119_0_harness_0_draft__paper_0_trade_0_record"
  41. },
  42. ) with nickname='mdbx_dba1'
  43. ;
  44. -- 条件映射
  45. -- 类中需要有数据,按指定条件映射数据,条件与类数据有关联
  46. -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
  47. -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
  48. -- 支持 bucket 链式表达式
  49. create class if not exists /mdbx/dba2 (
  50. xvarchar varchar,
  51. xint int,
  52. xbigint bigint,
  53. xdouble double,
  54. xdate date,
  55. xrdb bucket {
  56. -- 条件映射
  57. "type" : "mdbxdb",
  58. -- 指定结构化查询信息表、字段、条件
  59. -- TODO 后期可解析 sql 语句,方便应用开发
  60. "table" : "T__project_0_1000119_0_harness_0_draft__paper_0_trade_0_record",
  61. "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
  62. "conds" : {
  63. "and": [{ -- 多条件组合
  64. "like": ["trade_record_id","%000010001%"]},{ -- 常量条件
  65. "=": ["source_line_no", {"field":"xint"}]} -- 变量条件
  66. ]}, -- sql函数支持
  67. "orderby" : ["字符串", {"name":"vtime","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
  68. -- TODO "groupby","having"
  69. } "rdb test",
  70. xmap map<varchar, varchar>,
  71. xlist list<varchar>,
  72. xset set<varchar>,
  73. indexes(xvarchar, xint, xbigint, xdouble, xmap, xlist, xset),
  74. keys(xvarchar)
  75. ) with nickname='mdbx_dba2'
  76. ;