SQLiteをドキュメントDBとして使う
(dgl.cx)-
SQLiteのGenerated ColumnsとJSON関連関数を使って、Document DBのように使う方法
-
GENERATED ALWAYSとjson_extractを組み合わせる
CREATE TABLE t ( body TEXT, d INT GENERATED ALWAYS AS (json_extract(body, '$.d')) VIRTUAL);
INSERT INTO t VALUES(json('{"d":"42"}'));
SELECT * FROM t WHERE d = 42;
{"d":"42"}|42
6件のコメント
こういう使い方も可能でしょうか? RDBMS の利点を活かしつつ、マイナーなフィールドの追加や変更に対して NoSQL の拡張性も持てそうなのですが。
まずは SQLite を使う。
フィールドを追加する必要がある場合は、このようにドキュメントDBとして使う。
言及されている生成カラムと同一ではないかもしれませんが、PostgreSQL や MySQL でもすでに JSON 型カラムとその型に対するクエリが提供されているので、似たように使うことはできそうです。
おっしゃる通り、カスタムのユーザーフィールド追加など、そういった用途に使えそうですね。
うーん……ドキュメントDBの中に、SQLiteみたいに組み込み用途向けのDBってないんでしょうか? SQLiteは根っこがSQLなのでちょっと身構えてしまって OTL。MongoDB の Lite バージョン、MangoDB みたいなものとか……(…)
単純なキー・バリュー用途なら RocksDB https://github.com/facebook/rocksdb
おっしゃる通り、ドキュメントDB用途なら UnQLite https://unqlite.org/
あたりが高速で使いやすいそうです。
おお、ありがとうございます。これからはSQLiteだけじゃなくて、これらも一度ずつ使ってみないとですね。