การใช้ SQLite เป็น Document DB
(dgl.cx)-
วิธีใช้ SQLite ให้ทำงานเหมือน Document DB ด้วย Generated Columns และฟังก์ชันที่เกี่ยวกับ JSON
-
ผสาน
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
หากต้องเพิ่มฟิลด์ ก็ใช้งานเป็น document DB แบบนี้
อาจจะไม่เหมือนกับ generated columns ที่กล่าวถึงเสียทีเดียว แต่
postgresql,mysqlก็มีคอลัมน์ชนิดjsonและมีการรองรับการคิวรีสำหรับชนิดนั้นอยู่แล้ว จึงน่าจะใช้งานในลักษณะคล้ายกันได้อย่างที่คุณบอก น่าจะใช้สำหรับเพิ่มฟิลด์ผู้ใช้แบบคัสตอมอะไรทำนองนั้นได้ครับ
อืม.. ในบรรดา Document DB ไม่มีฐานข้อมูลที่ออกมาสำหรับใช้งานแบบ embedded เหมือน SQLite บ้างเหรอครับ/คะ? พอดี SQLite มีพื้นฐานเป็น SQL เลยรู้สึกกดดันนิดหน่อย OTL อย่าง MongoDB เวอร์ชัน Lite อะไรทำนองนั้น หรือจะเป็น MangoDB ก็ว่าไป(...)
สำหรับคีย์แวลูแบบเรียบง่าย ใช้ RocksDB https://github.com/facebook/rocksdb
อย่างที่คุณกล่าวไว้ ถ้าใช้เป็น Document DB ก็มี UnQLite https://unqlite.org/
ซึ่งว่ากันว่าทั้งเร็วและใช้งานเขียนได้สะดวกพอสมควร
โอ้ ขอบคุณมากครับ/ค่ะ งั้นนอกจาก SQLite แล้ว คงต้องลองใช้พวกนี้ดูบ้างแล้วนะครับ/ค่ะ