Usi generali
-
Se si dispone di strutture dati che non sono chiaramente definite nel momento in cui si effettua il sistema. Tendo a mantenere le impostazioni dell'utente in nosql, ad esempio. Un altro esempio era un sistema in cui gli utenti dovevano essere in grado di aggiungere campi in fase di esecuzione - molto doloroso in un RDBMS e una brezza in NoSQL.
-
Se la struttura del modello è in gran parte centrata su uno o pochi oggetti del modello e la maggior parte delle relazioni sono in realtà oggetti figlio degli oggetti del modello principale. In questo caso scoprirai che avrai un bisogno abbastanza piccolo di join effettivi. Ho trovato che il sistema di gestione dei contatti può essere implementato abbastanza bene in nosql per esempio. Una persona può avere più indirizzi, telefoni ed e-mail. Invece di metterli in una tabella separata, diventano tutti parte dello stesso modello e tu hai un oggetto di una persona.
-
Se vuoi trarre vantaggio dal clustering dei tuoi dati su più server invece di avere un server monolitico, che è comunemente richiesto da RDBMS.
-
Cache. Anche se si desidera mantenere un RDBMS come database principale, può essere utile utilizzare un database NoSQL per memorizzare i risultati delle query nella cache o conservare i dati, ad esempio i contatori.
-
Archiviazione di documenti. Se vuoi archiviare documenti coerenti, in un database alcuni dei database NoSQL (come MongoDB) sono effettivamente specializzati nell'archiviazione di quelli.
E i join?
Onestamente, all'inizio la cosa del no join mi sembrava abbastanza spaventosa. Ma il trucco è smettere di pensare in SQL. Devi effettivamente pensare con l'oggetto che hai in memoria quando esegui la tua applicazione. Questi dovrebbero più o meno essere salvati nel database NoSQL come area.
Poiché è possibile memorizzare il grafico dell'oggetto completo, con oggetti figlio, la maggior parte della necessità di join viene eliminata. E se trovi che ne hai bisogno, dovrai mordere il proiettile e recuperare entrambi gli oggetti e unirti al codice dell'applicazione.
Fortunatamente, la maggior parte dei driver può fare la tua adesione, se imposti correttamente lo schema.
Per ulteriori letture in realtà raccomando Martin Fowler .