7 pontos por xguru 2020-11-28 | 6 comentários | Compartilhar no WhatsApp
  • Como usar o SQLite como se fosse um Document DB usando Generated Columns e funções relacionadas a JSON

  • Combinando GENERATED ALWAYS e json_extract

Publicidade

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

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

Publicidade

SELECT * FROM t WHERE d = 42;

{"d":"42"}|42

6 comentários

 
nicewook 2020-11-30

Será que dá para usar assim também? Parece que daria para aproveitar as vantagens de um RDBMS e, ao mesmo tempo, levar a flexibilidade de expansão de um NoSQL para adicionar ou alterar campos menos importantes.

  1. Primeiro, usa-se o SQLite.

  2. Quando for preciso adicionar campos, ele é usado como um banco de documentos, desta forma.

 
galadbran 2020-11-30

Talvez não seja exatamente igual à coluna gerada mencionada, mas PostgreSQL e MySQL já oferecem colunas do tipo JSON e consultas para esse tipo, então parece que também dá para usar de forma parecida.

 
xguru 2020-11-30

Como você disse, acho que dá para usar para coisas como adicionar campos de usuário personalizados e afins.

 
ffdd270 2020-11-29

Hmm... entre os bancos de dados de documentos, será que não existe algum DB lançado para uso embarcado, como o SQLite? O SQLite me intimida um pouco por ser SQL na essência, sabe? Tipo uma versão Lite do MongoDB. Algo como MangoDB (...).

 
xguru 2020-11-30

Para uso simples de chave-valor, RocksDB https://github.com/facebook/rocksdb

Como você mencionou, para uso como banco de dados de documentos, UnQLite https://unqlite.org/

parece ser rápido e fácil de usar.

 
ffdd270 2020-12-01

Oooh. Obrigado. Agora, além do SQLite, acho que vou ter que experimentar esses também de vez em quando.