visto che si parla di mongodb vorrei condividere una mia personale visione della gestione dei dati
partiamo dal fatto che mongodb è un database nato per la persistenza di oggetti json
il vantaggio del json è che si tratta di una struttura dati senza schema
questo ha dei vantaggi importanti di dinamicità e porta ad avere una certa libertà nel disegno di un database
questi sono dei vantaggi che un RDBMS non può avere
per contro rende più complicato gestire le relazioni e fare determinate query complesse
essendo uno schema libero questo è evidente, so anche che mongodb ha anche il suo "linguaggio" per ovviare (parzialmente) a questo problema; la realtà è che molta della logica che è possibile incapsulare nel db RDBMS in stored procedure, function, view, plsql, ecc... probabilmente deve essere portata fuori dal db ed implementata nel linguaggio client (con tutto quello che comporta)
recentemente molti RDBMS (postgres, mysql, mssql, ecc...) hanno introdotto il campo dati di tipo json
non solo il tipo, ma hanno anche potenziato il DML per poter lavorare con questi campi
poniamo quindi di avere una tabella documenti dove abbiamo un campo chiamato full_json_data di tipo json
ad esempio mysql permette una sintassi del genere
(il simbolo del $ indica la root dei dati json nel campo)
select
id_doc
, JSON_EXTRACT(full_json_data, "$.data_doc") as "data_doc"
, JSON_EXTRACT(full_json_data, "$.id_ordine") as "id_ordine"
, JSON_EXTRACT(full_json_data, "$.id_magazzino") as "id_magazzino"
, JSON_EXTRACT(full_json_data, "$.righe[0].id") as "id_articolo_1"
, JSON_EXTRACT(full_json_data, "$.righe[1].id") as "id_articolo_2"
, JSON_EXTRACT(full_json_data, "$.righe[2].id") as "id_articolo_3"
, JSON_EXTRACT(full_json_data, "$.righe[3].id") as "id_articolo_4"
from documenti
where id_azienda = 'ABC' and JSON_EXTRACT(full_json_data, "$.id_cliente") =5
order by id
ovviamente c'è anche il modo di trasformare automaticamente, con una funzione, il risultato di una SELECT in un oggetto JSON
secondo me questo approccio permette di mantenere l'uso delle potenzialità di un RDBMS e di affiancarlo alla dinamicità del json
basti pensare che la sintassi vista sopra permette di creare viste, funzioni, ecc... che accedono al json
purtroppo non tutti gli RDBMS hanno questa funzionalità
ma penso anche che mongodb, per ora, non riuscirà a mettere insieme i pregi dei 2 mondi
nomorelogic
Edit:
questo non vuole ovviamente dire di non usare mongodb
è una mia riflessione che viene dal mondo dove lavoro io: gestionali, ERP e simili
chiaramente non tutte le applicazioni sono di questo tipo
altre applicazioni non avranno bisogno dei pregi dei RDBMS
l'importante è prevederlo :)