7P by xguru 2020-11-28 | favorite | 댓글 6개

- 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

이렇게도 사용가능할까요? RDBMS의 장점을 취하면서도 마이너한 필드 추가, 변경의 NoSQL 확장성을 가져갈 수 있을것 같은데요

1. 일단은 SQLite 를 사용한다.
2. 필드를 추가해야 할 경우에 이처럼 도큐먼트 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 말고 얘네들도 한번씩 써봐야 겠네요.