GitHub - fsaintjacques/recordlite

主要观点:RecordLite 是一个用于声明式维护半结构化数据 SQLite 表和视图的库(及可执行文件),基于 Backtrace 的 sqlite_protobuf 库。它将半结构化记录存储到 SQLite 表中,一列是原始负载(JSON 或 Protobuf),通过提取函数从原始列定义虚拟列的视图,可告知 RecordLite 视图及其索引的样子,它会生成幂等的 DDL 语句。
关键信息

  • 可通过go get安装recordlite可执行文件或作为 go 模块依赖安装。
  • 利用半结构化数据和单个 BLOB 列,只需修改动态视图而无需修改表的模式。
  • 为给定记录表生成伴生视图,可选择性地为经常投影和用于过滤的列创建索引,视图不拥有数据,修改视图相对便宜,更新索引则需重新计算。
    重要细节
  • 示例中先定义schema.json,创建表和视图定义,模拟向记录中添加数据,然后修改schema.json更新视图定义,再次查询可看到新的索引列。如定义了"name": "records", "columns": [{"name": "status", "expr": "json_extract(raw, '$.status')", "with_index": true}, {"name": "color", "expr": "json_extract(raw, '$.attrs.color')", "with_index": true}]等内容。
阅读 7
0 条评论