Quando si sceglie un archivio dati valore-chiave su un DB relazionale? Quali considerazioni vanno nel decidere l'una o l'altra? Quando è il mix di entrambi i percorsi migliori? Si prega di fornire esempi se è possibile.Quando utilizzare un archivio dati valore-chiave rispetto a un DB relazionale più tradizionale?
risposta
In base alla mia esperienza, se si sta anche chiedendo se utilizzare pratiche tradizionali o esoteriche, passare alla tradizione. Mentre le pratiche esoteriche sono sexy, stimolanti e divertenti, il 99,999% delle applicazioni richiede un approccio tradizionale.
per quanto riguarda relazionali vs KV, la domanda che dovrebbe porci è:
Perché dovrei nondesidera utilizzare un modello relazionale per questo scenario: ...
Dato che non hai descritto lo scenario, è impossibile per chiunque dirti perché non dovresti usarlo. La ragione "catch all" per KV è la scalabilità, che non è un problema ora. Conosci le regole dell'ottimizzazione?
- Non farlo.
- (solo per esperti) Non farlo ora.
KV è un altamente soluzione ottimizzata per scalabilità che molto probabilmente sarà completamente unecessary per l'applicazione.
Questo commento non risponde alla domanda. Quando e perché qualcuno dovrebbe scegliere di utilizzare uno store KV su un db relazionale? – aridlehoover
Un database relazionale tradizionale presenta problemi di ridimensionamento oltre un punto. Dove quel punto dipende un po 'da quello che stai cercando di fare.
Tutti (la maggior parte?) Dei fornitori di cloud computing stanno fornendo archivi di dati di valore chiave.
Tuttavia, se si dispone di un'applicazione di dimensioni ragionevoli con una struttura di dati complicata, il supporto derivante dall'utilizzo di un database relazionale può ridurre i costi di sviluppo.
Vorrei sottolineare che il punto è molto grande, conosco molti database multi-terrabyte che funzionano molto bene (devono essere progettati e gestiti correttamente e avere l'hardware corretto da scalare). – HLGEM
I sistemi di database a valori-chiave, gerarchici, di riduzione delle mappe o di grafici sono molto più vicini alle strategie di implementazione, sono fortemente legati alla rappresentazione fisica. La ragione principale per scegliere uno di questi è se c'è un argomento convincente sulle prestazioni e si adatta molto bene alla tua strategia di elaborazione dei dati. Attenzione, le query ad hoc di solito non sono pratiche per questi sistemi, e è meglio decidere in anticipo sulle query.
I sistemi di database relazionali cercano di separare il modello logico, orientato al business dalla sottostante rappresentazione fisica e dalle strategie di elaborazione. Questa separazione è imperfetta, ma comunque abbastanza buona. I sistemi relazionali sono grandi per gestire i fatti ed estrarre informazioni affidabili da raccolte di fatti. I sistemi relazionali sono anche grandi per le query ad-hoc, che gli altri sistemi sono notoriamente cattivi. Questo è un grande adattamento nel mondo degli affari e in molti altri posti. Ecco perché i sistemi relazionali sono così diffusi.
Se si tratta di un'applicazione aziendale, un sistema relazionale è quasi sempre la risposta. Per altri sistemi, è probabilmente la risposta. Se si ha più di un problema di elaborazione dati, come alcune pipeline di cose che devono accadere e si dispone di enormi quantità di dati, e si conoscono tutte le query in anticipo, un altro sistema potrebbe essere giusto per te.
Se i tuoi dati sono semplicemente un elenco di cose e puoi ricavare un identificatore univoco per ciascun articolo, allora un KVS è una buona corrispondenza. Sono implementazioni ravvicinate delle semplici strutture di dati che abbiamo appreso nell'informatica di matricola e non consentono relazioni complesse.
Un semplice test: puoi rappresentare i tuoi dati e tutte le sue relazioni come una lista collegata o tabella hash? Se sì, un KVS potrebbe funzionare. Se no, hai bisogno di un RDB.
È ancora necessario trovare un KVS che funzioni nel proprio ambiente. Il supporto per KVS, anche i più importanti, non è affatto vicino a PostgreSQL e MySQL/MariaDB.
- 1. Archivio dati non relazionale incorporato (nosql)
- 2. Quando utilizzare MVC4 Web-API rispetto a un servizio Web HTTP tradizionale?
- 3. Quando utilizzare approxfun rispetto a
- 4. NewSQL rispetto all'ottimizzazione/sharding tradizionale
- 5. Quando utilizzare una proprietà rispetto a un metodo?
- 6. Quando utilizzare le sottoquery SQL rispetto a un join standard?
- 7. Come scrivere un'estensione Devise (per utilizzare un archivio dati personalizzato)
- 8. Quando utilizzare IModelBinder rispetto a DefaultModelBinder
- 9. Quando utilizzare Marionette rispetto a Backbone puro
- 10. Quando utilizzare un ORM (Sequel, Datamapper, AR, ecc.) Rispetto a puro SQL per query
- 11. Cinese semplificato e tradizionale rispetto alle regioni
- 12. Quando è opportuno utilizzare un tipo associato rispetto a un tipo generico?
- 13. Utilizzando un database relazionale per Schemaless dati - Best Practices
- 14. Quando utilizzare template rispetto all'ereditarietà
- 15. Posso associare moduli a un archivio dati Dojo?
- 16. Come è possibile scuotere il pensiero del database relazionale per progettare un archivio dati di archiviazione tabella azzerato?
- 17. Perché dovrei voler utilizzare un database non relazionale?
- 18. Prestazioni MDX rispetto a T-SQL
- 19. Buone pratiche CouchDB: tutte le entità in un singolo db rispetto a un nuovo db per ogni entità?
- 20. Database relazionale progettazione: utilizzare modelli di dati gerarchici o evitarli?
- 21. Prestazioni di Ruby con più thread rispetto a un thread
- 22. Quando è appropriato utilizzare un array di celle rispetto a una struct in Matlab?
- 23. Quando utilizzare "import * as Foo" rispetto a "import Foo"?
- 24. aggiungi file a un archivio senza leggere/riscrivere l'intero archivio
- 25. MySQL DB più dati per il campo
- 26. Gli utenti devono essere indirizzati a nodi dati specifici quando si utilizza un archivio dati eventualmente coerente?
- 27. Lucene come archivio dati
- 28. Backbone relazionale - non può istanziare più di un ,,,
- 29. Blocco del programma SystemVerilog rispetto al banco di prova tradizionale
- 30. Un archivio è ancora un archivio senza unità di lavoro?
Non mi piace il commento sopra. È come se tu suggerissi che nessuno, ad eccezione di Google/Yahoo/Twitter, dovrebbe usare NOSQL. È ridicolo. –