5

L'ultima mania nei database sembra essere incentrata su database non relazionali. Perché? Sembra una cosa controproducente. Ad esempio, ha molto più senso per me esprimere i miei dati in modo relazionale (codice di esempio in Django + SQL per le tabelle):Perché dovrei voler utilizzare un database non relazionale?

SQL:

create table post (id int primary key auto_increment, 
     name varchar, 
     created datetime); 

create table comment(id int primary key auto_increment, 
     text text, 
     post_id int, 
     created datetime, 
     foreign key post_id references post(id)); 

La potenza di SQL è che questa informazione può essere espressa in quindi in molti modi. Certo, l'intero problema di mappatura degli oggetti esiste, ma lo considero una caratteristica e non un problema. Con SQL, posso recuperare tutti i commenti distinti di un determinato post che sono più vecchi di ieri, raggruppare tutti quelli insieme e generare statistiche. Lo stesso può essere fatto per i database non relazionali?

Sembra inoltre che abbia un impatto significativo sulle prestazioni per l'utilizzo di un database non relazionale come MongoDB perché si otterrebbe immediatamente un intero grafo di oggetto, piuttosto che ciò di cui si ha minimamente bisogno.

Qualcuno può spiegarmi quali sono i vantaggi dell'utilizzo di un database non relazionale?

+0

http://stackoverflow.com/questions/441441/why-should-i-use-document-based-database-instead-of-relational-database – hplbsh

risposta

5

Date un'occhiata al CAP Theorem

E i PACELC interpretation

database relazionali tendono a fare una serie di compromessi, e non-relazionali tendono a rendere un diverso insieme di compromessi. Per i massicci set di dati distribuiti, a volte non è più sensazionale.

C'è anche un senso in cui i database non relazionali possono eliminare un sacco di dolore ORM, ma di nuovo ci sono sempre dei compromessi. In alcuni casi d'uso, l'archiviazione non relazionale può essere più veloce, poiché tutti i dati per una particolare gerarchia possono essere archiviati più vicini sul disco. Si noti inoltre che i database non relazionali dispongono ancora di funzionalità di query.

Alla fine, si tratta di fare la serie appropriata di trade-off per la tua particolare situazione d'uso.