Ho bisogno di memorizzare centinaia di migliaia (in questo momento, potenzialmente molti milioni) di documenti che partono vuoti e vengono aggiunti frequentemente, ma non vengono mai aggiornati in altro modo o cancellati. Questi documenti non sono correlati in alcun modo e devono essere accessibili solo tramite un ID univoco.Memoria su larga scala per i documenti aggiunti in modo incrementale?
Gli accessi in lettura sono alcuni sottoinsiemi del documento, che inizia quasi sempre a metà percorso in qualche posizione indicizzata (ad esempio "documento 4324319, salva # 53 alla fine").
Questi documenti iniziano molto piccoli, a diversi KB. Generalmente raggiungono una dimensione finale di circa 500 KB, ma molti raggiungono 10 MB o più.
Attualmente sto utilizzando MySQL (InnoDB) per archiviare questi documenti. Ciascuno dei salvataggi incrementali viene semplicemente scaricato in una grande tabella con l'ID del documento a cui appartiene, quindi leggere parte di un documento è simile a "seleziona * da salva dove document_id = 14 e save_id> 53 ordina da save_id", quindi manualmente concatenandolo tutti insieme nel codice.
Idealmente, mi piacerebbe che la soluzione di archiviazione fosse facilmente scalabile orizzontalmente, con ridondanza tra i server (ad esempio, ogni documento memorizzato su almeno 3 nodi) con un facile recupero dei server bloccati.
Ho visto CouchDB e MongoDB come possibili sostituzioni per MySQL, ma non sono sicuro che entrambi abbiano un senso per questa particolare applicazione, anche se sono aperto alla convinzione.
Qualsiasi input su una buona soluzione di archiviazione?
Hai ricevuto molti commenti. Se ne trovi uno accettabile, contrassegnalo come risposta. –