7 điểm bởi xguru 2020-11-28 | 6 bình luận | Chia sẻ qua WhatsApp
  • Cách sử dụng SQLite như một Document DB bằng cách dùng Generated Columns và các hàm liên quan đến JSON

  • Kết hợp GENERATED ALWAYSjson_extract

Quảng cáo

CREATE TABLE t ( body TEXT, d INT GENERATED ALWAYS AS (json_extract(body, '$.d')) VIRTUAL);

INSERT INTO t VALUES(json('{"d":"42"}'));

Quảng cáo

SELECT * FROM t WHERE d = 42;

{"d":"42"}|42

6 bình luận

 
nicewook 2020-11-30

Có thể dùng theo cách này không? Có vẻ như vẫn tận dụng được ưu điểm của RDBMS, đồng thời mang theo tính mở rộng kiểu NoSQL cho việc thêm hoặc thay đổi các trường ít dùng.

  1. Trước hết dùng SQLite.

  2. Khi cần thêm trường thì dùng nó như một document DB theo cách này.

 
galadbran 2020-11-30

Có thể không hoàn toàn giống với generated column đã được nhắc đến, nhưng PostgreSQL và MySQL cũng đã cung cấp cột kiểu JSON và các truy vấn cho kiểu đó, nên có vẻ cũng có thể sử dụng theo cách tương tự.

 
xguru 2020-11-30

Đúng như bạn nói, có vẻ nó có thể được dùng cho mục đích như thêm các trường người dùng tùy chỉnh.

 
ffdd270 2020-11-29

Ừm.. trong số các document DB có cái nào được làm nhắm đến mục tiêu embedded như SQLite không nhỉ? Vì SQLite vốn dĩ gốc là SQL nên thấy hơi ngại OTL. Kiểu phiên bản Lite của MongoDB. Chẳng hạn như MangoDB (...)

 
xguru 2020-11-30

Với nhu cầu key-value đơn giản thì có RocksDB https://github.com/facebook/rocksdb

Như bạn nói, cho mục đích document DB thì có UnQLite https://unqlite.org/

được cho là khá nhanh và dễ dùng.

 
ffdd270 2020-12-01

Ồ, cảm ơn nhé. Giờ ngoài SQLite ra chắc cũng nên thử dùng mấy cái này xem sao.