NoSQL Utilizza scenari di casi o QUANDO utilizzare NoSQL [chiuso]


252

Con tutto l'hype sembra davvero difficile trovare informazioni affidabili su quando usarlo. Quindi pongo le seguenti domande e mi dispiace se queste sono domande davvero stupide in anticipo:

  1. Devo usare NoSQL per i dati utente? Ad esempio profili, nomi utente + password, ecc.
  2. Dovrei usare NoSQL per contenuti importanti? Ad esempio articoli, post di blog, inventario dei prodotti, ecc.

Sto assumendo di no? E penso che NoSQL sia solo per cose rapidamente accessibili da cui è OK perdere dati. Ma ho anche letto che le app NoSQL hanno una ridondanza integrata in modo da non perdere dati?

Inoltre, se i 2 esempi precedenti sono negativi, potresti darmi specifici casi d'uso aziendali in cui utilizzerei NoSQL? Vedo molte descrizioni generali ma non molti esempi del mondo reale. Le uniche cose a cui riesco a pensare sono i messaggi e le analisi da utente a utente.

Grazie!

Risposte:


183

È davvero una domanda "dipende". Alcuni punti generali :

  • NoSQL è in genere buono per i dati non strutturati / "schematici" - di solito, non è necessario definire esplicitamente lo schema in anticipo e può semplicemente includere nuovi campi senza alcuna cerimonia
  • NoSQL in genere favorisce uno schema denormalizzato a causa dell'assenza di supporto per JOIN nel mondo RDBMS. Quindi di solito avresti una rappresentazione piatta e denormalizzata dei tuoi dati.
  • L'uso di NoSQL non significa che potresti perdere dati. DB diversi hanno strategie diverse. ad es. MongoDB - puoi essenzialmente scegliere quale livello scambiare le prestazioni rispetto al potenziale di perdita dei dati - migliori prestazioni = maggiore portata per la perdita di dati.
  • Spesso è molto semplice ridimensionare le soluzioni NoSQL. L'aggiunta di più nodi per replicare i dati è un modo per a) offrire una maggiore scalabilità eb) offrire una maggiore protezione contro la perdita di dati se un nodo si arresta. Ma ancora una volta, dipende dal DB / configurazione NoSQL. NoSQL non significa necessariamente "perdita di dati" come inferisci.
  • IMHO, le query / report complessi / dinamici sono meglio serviti da un RDBMS. Spesso la funzionalità di query per un DB NoSQL è limitata.
  • Non deve essere 1 o l'altra scelta. La mia esperienza ha usato RDBMS insieme a NoSQL per alcuni casi d'uso.
  • I DB NoSQL spesso non hanno la capacità di eseguire operazioni atomiche su più "tabelle".

Hai davvero bisogno di guardare e capire quali sono i vari tipi di negozi NoSQL e come funzionano fornendo scalabilità / sicurezza dei dati ecc. È difficile dare una risposta generalizzata poiché sono davvero tutti diversi e affrontare le cose in modo diverso .

Per MongoDb, ad esempio, dai un'occhiata ai loro Casi d'uso per vedere cosa suggeriscono come usi "ben adatti" e "meno adatti" di MongoDb.


16
L'affermazione su NoSQL che non supporta i join è fuorviante. Alcuni database NoSQL sono in realtà molto migliori nei join rispetto ai database relazionali. Alcuni non li supportano affatto. Questa risposta sembra riguardare più MongoDB in particolare che NoSQL in generale.
Alan Plum,

1
Ottimo riassunto. @AlanPlum, a quali specifici database NoSQL ti riferisci?
Brian

2
@brian Sono un collaboratore di ArangoDB ( arangodb.com ), che è un mix di un database di documenti (pensa MongoDB) e un database grafico (pensa Neo4J) con non solo join economici ma anche transazioni reali. Detto questo, i database NoSQL non sono un gruppo omogeneo ed è impossibile generalizzare da qualsiasi database NoSQL all'intera "categoria".
Alan Plum,

Se ti trovi a considerare l'utilizzo di RDB perché "i join non sono supportati" in NoSQL, ti consiglio vivamente di guardare questo video da AWS re: Invent. Abbatte l'intero approccio NoSQL! Mi ha aiutato molto youtu.be/HaEPXoXVf2k
dillon.harless
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.