7 คะแนน โดย xguru 2020-11-28 | 6 ความคิดเห็น | แชร์ทาง WhatsApp
  • วิธีใช้ 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 ความคิดเห็น

 
nicewook 2020-11-30

จะใช้งานแบบนี้ได้ไหมครับ? ดูเหมือนว่าจะได้ทั้งข้อดีของ RDBMS และความยืดหยุ่นแบบ NoSQL สำหรับการเพิ่มหรือเปลี่ยนฟิลด์เล็กน้อยด้วย

  1. อันดับแรกใช้ SQLite

  2. หากต้องเพิ่มฟิลด์ ก็ใช้งานเป็น document DB แบบนี้

 
galadbran 2020-11-30

อาจจะไม่เหมือนกับ generated columns ที่กล่าวถึงเสียทีเดียว แต่ postgresql, mysql ก็มีคอลัมน์ชนิด json และมีการรองรับการคิวรีสำหรับชนิดนั้นอยู่แล้ว จึงน่าจะใช้งานในลักษณะคล้ายกันได้

 
xguru 2020-11-30

อย่างที่คุณบอก น่าจะใช้สำหรับเพิ่มฟิลด์ผู้ใช้แบบคัสตอมอะไรทำนองนั้นได้ครับ

 
ffdd270 2020-11-29

อืม.. ในบรรดา Document DB ไม่มีฐานข้อมูลที่ออกมาสำหรับใช้งานแบบ embedded เหมือน SQLite บ้างเหรอครับ/คะ? พอดี SQLite มีพื้นฐานเป็น SQL เลยรู้สึกกดดันนิดหน่อย OTL อย่าง MongoDB เวอร์ชัน Lite อะไรทำนองนั้น หรือจะเป็น MangoDB ก็ว่าไป(...)

 
xguru 2020-11-30

สำหรับคีย์แวลูแบบเรียบง่าย ใช้ RocksDB https://github.com/facebook/rocksdb

อย่างที่คุณกล่าวไว้ ถ้าใช้เป็น Document DB ก็มี UnQLite https://unqlite.org/

ซึ่งว่ากันว่าทั้งเร็วและใช้งานเขียนได้สะดวกพอสมควร

 
ffdd270 2020-12-01

โอ้ ขอบคุณมากครับ/ค่ะ งั้นนอกจาก SQLite แล้ว คงต้องลองใช้พวกนี้ดูบ้างแล้วนะครับ/ค่ะ