7 puntos por xguru 2020-11-28 | 6 comentarios | Compartir por WhatsApp
  • Cómo usar SQLite como si fuera una base de datos de documentos usando Generated Columns y funciones relacionadas con JSON

  • Combinando GENERATED ALWAYS y 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 comentarios

 
nicewook 2020-11-30

¿También se puede usar así? Parece que permitiría aprovechar las ventajas de un RDBMS y, al mismo tiempo, obtener la flexibilidad de NoSQL para agregar o modificar campos menos comunes.

  1. Por lo pronto, usar SQLite.

  2. Cuando haya que agregar campos, usarlo como una base de datos documental de esta manera.

 
galadbran 2020-11-30

Puede que no sea igual a la columna generada que se mencionó, pero PostgreSQL y MySQL ya ofrecen columnas de tipo JSON y consultas para ese tipo, así que parece que también se pueden usar de forma similar.

 
xguru 2020-11-30

Como dijiste, parece que se podría usar para cosas como agregar campos de usuario personalizados y ese tipo de usos.

 
ffdd270 2020-11-29

Mmm... ¿no habrá alguna DB de documentos que haya salido para objetivos embebidos, como SQLite? SQLite me da un poco de presión porque en el fondo es SQL, OTL. Algo así como una versión Lite de MongoDB. Algo como MangoDB (...).

 
xguru 2020-11-30

Para algo simple de clave-valor, está RocksDB https://github.com/facebook/rocksdb

Como mencionaste, para usarlo como base de datos de documentos está UnQLite https://unqlite.org/

Dicen que más o menos esos son rápidos y cómodos de usar.

 
ffdd270 2020-12-01

Oh, gracias. Ahora tendré que probar estos también, no solo SQLite.