-
Como usar o SQLite como se fosse um Document DB usando Generated Columns e funções relacionadas a JSON
-
Combinando
GENERATED ALWAYSejson_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 comentários
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.
Primeiro, usa-se o SQLite.
Quando for preciso adicionar campos, ele é usado como um banco de documentos, desta forma.
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.
Como você disse, acho que dá para usar para coisas como adicionar campos de usuário personalizados e afins.
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 (...).
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.
Oooh. Obrigado. Agora, além do SQLite, acho que vou ter que experimentar esses também de vez em quando.