Esiste un tipo di applicazione di microblogging. Due principali database di base su cui è stato eseguito l'azzeramento sono: MySQL o MongoDB.Utilizzando MongoDB vs MySQL con molti campi JSON?
Ho intenzione di denormalizzare molti dati I.e. Un voto fatto su un post viene memorizzato in una tabella di votazione, inoltre viene incrementato un conteggio nella tabella principale dei post. Ci sono anche altre azioni coinvolte nel post (ad esempio, votare giù).
Se utilizzo MySQL, alcuni dati si adattano meglio a JSON che a schema fisso, per ricerche più veloci.
E.g.
POST_ID | activity_data
213423424 | { 'likes': {'count':213,'recent_likers' :
['john','jack',..fixed list of recent N users]} , 'smiles' :
{'count':345,'recent_smilers' :
['mary','jack',..fixed list of recent N users]} }
Esistono anche altri componenti dell'applicazione, in cui viene proposto l'utilizzo di JSON. Così, per aggiornare un campo JSON, la sequenza è:
Leggere il JSON in script python.
Aggiornare il JSON
Conservare il JSON di nuovo in MySQL.
Sarebbe stato singola operazione in MongoDB con operazioni atomiche come $push
, $inc
, $pull
ecc Inoltre struttura del documento di MongoDB adatta bene i miei dati.
Le mie considerazioni durante la scelta dell'archivio dati.
Per quanto riguarda MySQL:
- Stabile e familiare.
- Il backup e il ripristino sono facili.
- Alcune modifiche future dello schema possono essere evitate utilizzando alcuni campi come schemi JSON.
- Potrebbe essere necessario utilizzare il livello di memcache all'inizio.
- I BLOB JSON saranno statici in alcune tabelle come i messaggi principali, tuttavia verranno aggiornati molto in alcune altre tabelle come i voti Post e i Mi piace.
Per quanto riguarda MongoDB:
- più adatto per memorizzare lo schema meno dati come documenti.
- Il caching potrebbe essere evitato fino a una fase successiva.
- A volte l'applicazione può diventare intensiva in scrittura, MongoDB può funzionare meglio in quei punti in cui le scritture non sicure non rappresentano un problema.
- Non sicuro di stabilità e affidabilità.
- Non sono sicuro di quanto sia facile eseguire il backup e il ripristino.
Domande:
- Shall abbiamo scelto MongoDB se la metà dei dati è schemaless, e viene memorizzata come JSON se si utilizza MySQL?
Alcuni dei dati come i messaggi principali sono fondamentali, quindi verranno salvati utilizzando scritture sicure, i contatori ecc. verranno salvati utilizzando scritture non sicure. Questa politica è basata sull'importanza dei dati e l'intensità di scrittura è corretta?
Quanto è facile monitorare, eseguire il backup e ripristinare MongoDB rispetto a MySQL? Abbiamo bisogno di pianificare backup periodici (diciamo ogni giorno) e ripristinarli con facilità in caso di disastro. Quali sono le migliori opzioni che ho con MongoDB per renderlo una scommessa sicura per l'applicazione.
di stabilità, di backup, snapshot, il ripristino, più ampia adozione I.e.database durata nel tempo sono le ragioni mi puntano di utilizzare MySQL come RDBMS + NoSQL anche se un documento di archiviazione NoSQL potrebbe servire il mio scopo meglio.
Si prega di concentrare le proprie opinioni sulla scelta tra MySQL e MongoDB considerando il design del database che ho in mente. So che potrebbero esserci modi migliori per pianificare la progettazione del database con documenti RDBMS o MongoDB. Ma questo non è l'obiettivo attuale della mia domanda.
UPDATE: da MySQL 5.7 in poi, MySQL supporta una ricca nativo JSON tipo di dati che fornisce la flessibilità dei dati, nonché ricca interrogazione JSON.
https://dev.mysql.com/doc/refman/5.7/en/json.html
Seriamente non farlo. Non dovresti usare json in sql dato che non avrai la possibilità di interrogarlo. Se non hai bisogno di interrogare quei dati puoi usare qualsiasi formato binario (che include json). Mongodb usa json perché lo capisce e può interrogarlo. postgresql può supportarlo non ho provato. Ma in ogni caso dovresti usare mysql nel normale modo mysql. Non hai bisogno di nient'altro se non dopo aver un computer dedicato per servire e aumentare la quantità di scritture. Se vuoi provare mongodb crea un'app giocattolo o preparati a dedicare molto tempo alla manutenzione/apprendimento/bug o altra soluzione. –
@ acidzombie24 Non interrogherò o cercherò i dati all'interno di json. Vengono elaborati per la scrittura solo quando un'azione viene eseguita, ma sempre letti dalla chiave primaria come intero json. – DhruvPathak
hmm ok ma la mia ultima frase. Anche essere consapevoli di scritture sicure (che sta bloccando) e che 32 bit significa che il tuo db è limitato a 2 GB –