필요하면 SQLite도 document store가 돼
SQLite는 3.38부터 JSON1 extension을 기본으로 품고 나와. TEXT 컬럼에 JSON을 넣어두고 SQL 함수로 뒤질 수 있어.
json_extract(col, '$.path')— JSON path로 값을 꺼내.json_each(col)와json_tree(col)— JSON 요소를 하나씩 훑게 해주는 테이블 함수야.json_set(col, '$.path', value)와json_remove,json_replace— 값을 고쳐.json_array,json_object,json_group_array— JSON을 만들어.
2024년 1월에 나온 3.45부터는 JSONB도 돼. 접근할 때마다 다시 파싱하지 않아도 되는 binary 표현이야. 컬럼이 크거나 자주 뒤진다면 JSONB로 저장해.
Tip: 꺼낸 JSON path 위에 표현식 인덱스를 걸면 query가 빨라져.
CREATE INDEX idx_meta_status ON events(json_extract(meta, '$.status'))처럼. 그러면 WHERE json_extract(meta, '$.status') = 'pending'이 인덱스를 타.