SQLite3.9からJSON関連の機能が追加されたのは
Sqlite 3.9 の Json1を試した
で詳しく紹介されている
今回、Node.jsでプログラミングしている際、データの保存を簡単にできないかと試していたら、SQLiteのJSONが想像以上に便利だったので、その部分を伝えたい
create table json_table(name text primary key,value json)
単純なテーブルの作成。データの型をjsonにしているが、SQLiteでは現時点でテキストデータとして保存される
2.データの挿入
replace into json_table values('aaaa',json_array(1,2,3));
replace into json_table values('bbbb',json_object('あいうえお','ABC'));
replace into json_table values('cccc','{"abcd":123}')
insertではなくreplaceで挿入しているのは、Node.jsからデータを書き換える際に変数のように使用するためだ。他のDBにも上書き挿入はあるが、SQLiteのreplace文が一番扱いが簡単だ
ちなみにJSONのデータを入力する際は、json_arrayやjson_objectで入れても良いし、文字列の形でもかまわない
3.データの抽出
3.1普通にselect
select * from json_table
今回、無茶苦茶便利だと思った結果がこれだ。json_group_objectを使うと、複数のレコードを1つのJSONオブジェクトとしてまとめてくれる。たったこれだけと思うかもしれない。しかし受け取り側で余計な処理を加えずに、一発でデータを取得できるのはとにかく便利なのだ
3.3配列一つにまとめて抽出
select json_group_array(json_object(name,json(value))) from json_table
JSONを扱うことに関しては、NoSQL系のDBを選択した方が便利かもしれない。しかしSQL系のDBもJSON機能が当たり前のように使えるようになった現在、後者を使った方が速度と利便性の良いとこ取り出来るのだ。特にJSONと相性の良い言語では、これを使わない手は無いと思う