Sto costruendo un'app il cui sistema DB sarà cruciale e deve essere scalabile poiché tutto il suo valore sarà nei dati.Sistema DB ibrido: NoSQL per dati, SQL per le relazioni. La migliore pratica?
Sto facendo un sistema di votazione dal vivo.
Sto bene con SQL e MongoDB, quindi non è quasi un fattore di decisione (anche se io tendo a come la struttura MongoDB e JS di più in questi tempi :))
Ma da tutto ciò che ho letto sul web , Mi sento ancora a disagio con la mia decisione.
Quello che voglio fare è quello di combinare i vantaggi di entrambi:
- Avere NoSQL Documenti per gli oggetti (utenti, oggetti, etc.) Commenti
- Avere tabelle SQL per i rapporti (tabella utente-Items , User-Comments etc.)
- duplicando il risultati del voto in un documento NoSQL ogni volta che c'è un voto o in un intervallo regolare (per guadagnare velocità anche in mostra risultati voto)
Grande ADVA I ntages che vedo sono:
- Quando si esegue una query su un documento (ad es. un utente per visualizzare il suo profilo), ho tutti i vantaggi NoSQL (velocità, tutto in un unico luogo, flessibilità dello schema ecc.)
- Quando si fanno statistiche (ad esempio numero di voti), ho tutti i vantaggi di SQL
- parallelizzazione: posso prendere il voto in SQL e dei documenti in modalità asincrona
- leggere veloce, scrivere slowish (e non importa nel mio caso)
- integrità rapporto è sempre conservato
le mie domande sono:
- È una buona pratica farlo? Il web sembra piuttosto timido su di esso
- Sto ottimizzando le arachidi, anche con carico DB elevato? (Confrontando documento recupero alla piena SQL e query come select * from tabella in cui primary_key = XXX)
Buona domanda. Ho giocato con la stessa idea per un po 'di tempo usando varie tecnologie NoSQL. Potrebbe rispondere più tardi una volta che ho un po 'di tempo per scrivere davvero una risposta. –
Se ho capito bene, vuoi usare MongoDB come una sorta di cache? Da quello che hai descritto, non penso che sia una cattiva idea, devi solo assicurarti che MongoDB sia coerente con il tuo RDBMS a livello di applicazione (aumento della complessità del codice per velocità sostanzialmente) – LMeyer