主要观点: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}]
等内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。