Ho letto alcuni articoli che affermano che RDBMS come MySQL non è adatto allo scalabile, ma NoSQL come MongoDB può dividere bene. Desidero sapere quale funzione fornita da RDBMS non può essere eseguita correttamente.Perché NoSQL dice che il RDBMS tradizionale non è adatto allo scalabile
risposta
maggior parte dei sistemi RDBMS garantiscono la cosiddetta ACID properties. La maggior parte di queste proprietà si riduce alla consistenza ; ogni modifica sui dati trasferirà il database da uno stato coerente a un altro stato coerente.
Ad esempio, se si aggiornano più record in una singola transazione, il database assicurerà che i record coinvolti non saranno modificati da altre query, purché la transazione non sia stata completata. Quindi durante la transazione, più tabelle possono essere bloccate per la modifica. Se tali tabelle sono distribuite su più frammenti/server, ci vorrà più tempo per acquisire i blocchi appropriati, aggiornare i dati e rilasciare i blocchi.
Le CAP theorem stati che un sistema distribuito (cioè scalabile) non può garantire tutte le seguenti proprietà al tempo stesso:
- Coerenza
- disponibilità
- tolleranza di ripartizione
RDBMS i sistemi garantiscono la coerenza. Sharding rende il sistema tollerante al partizionamento. Dal teorema segue che il sistema non può quindi garantire la disponibilità. Ecco perché un RDBMS standard non può scalare molto bene: non sarà in grado di garantire la disponibilità. E a che serve un database se non riesci ad accedervi?
I database NoSQL riducono la coerenza a favore della disponibilità. Ecco perché sono migliori in termini di scalabilità.
Non sto dicendo che i sistemi RDBMS non possono scalare affatto, è solo più difficile. This article delinea alcuni dei possibili schemi di sharding e i problemi che potresti incontrare. La maggior parte degli approcci sacrifica la coerenza, che è una delle caratteristiche più importanti dei sistemi RDBMS e che impedisce il ridimensionamento.
query che coinvolgono più frammenti sono complesse (f.e. join tra tabelle in diversi frammenti)
Cosa succede se non uso mai unire in RDBMS? RDBMS diventerà shard facilmente? In tal caso, non sembra necessario implementare un nuovo database chiamato NoSQL. – shuitu
I RDBMS sono pensati per essere un sistema di gestione per il database 'relazionale'. E le relazioni tra i dati sono mostrate da JOINs tra tabelle. Se non stai usando JOINs significa che il tuo database non è relazionale, quindi puoi spostare NoSQL che sono negozi di valore/chiave. –
Perché tizi NoSQL e dudettes non piace unisce: http://www.dbms2.com/2010/05/01/ryw-read-your-writes-consistency/
- 1. Perché NoSQL è migliore per "scalare" rispetto a RDBMS?
- 2. Perché OODBMS non è diffuso come RDBMS?
- 3. Perché Node.js è scalabile?
- 4. Perché il validatore w3 dice che onClick non è valido?
- 5. Perché XAMPP non è adatto alla produzione?
- 6. Perché JavaScript dice che un numero non è un numero?
- 7. Perché Java EE è scalabile?
- 8. NoSQL/RDBMS ibrido con integrità referenziale (elimina cascata)?
- 9. Perché SQLite dice che instr non esiste?
- 10. Visual Studio 2015 dice che il cast è ridondante. Perché?
- 11. Quanto è scalabile il Jetty?
- 12. libGDX è adatto allo sviluppo di applicazioni solo per desktop?
- 13. perché la struttura del sollevatore è scalabile?
- 14. Perché questo metodo di ricerca non è scalabile?
- 15. Perché ReSharper mi dice che questa espressione è sempre vera?
- 16. Perché il libro dice che devo lanciare malloc?
- 17. Perché il mio test più scalabile non verrà compilato? (Scala.MatchError)
- 18. Perché eclipse dice che null è un tipo primitivo?
- 19. Perché Visual Studio mi dice che il metodo AddJsonFile() non è definito nella classe di configurazione?
- 20. Perché questo codice dice che l'eco è disattivato?
- 21. Perché python dice che non ho "nessun modulo chiamato venv"?
- 22. Ubuntu dice virtualenv non è installato, ma pip dice che è
- 23. Perché VS2015RC dice "Il ViewBag non esiste nel contesto attuale", dove VS2013 non dice errori?
- 24. Apache non si avvia - dice che il modulo httpd è caricato ma non è in esecuzione
- 25. Quanto è scalabile Grails?
- 26. Quanto è scalabile ZeroMQ?
- 27. perché la gente dice che python è lento perché è interpretato? Ha file .pyc
- 28. Perché Firebug dice aFixed() non è una funzione?
- 29. Google App Engine: qual è il suo RDBMS?
- 30. Cosa può fare un RDBMS che Neo4j (e database di grafici) non può?
stai dicendo "condiviso", o "Shard"? – StingyJack
O a scelta? (come in Lucene)? – bmargulies
[Shard] (http://en.wikipedia.org/wiki/Shard_%28database_architecture%29), come nel condividere il tuo database in partizioni separate. –