Ho circa 200 milioni di nuovi oggetti in arrivo e una politica di conservazione di 90 giorni, quindi mi rimangono 18 miliardi di record da memorizzare sotto forma di coppie chiave-valore.
Chiave e valore saranno entrambi una stringa. Si tratta fondamentalmente di una mappatura tra un identificativo univoco per l'oggetto nell'applicazione all'identificatore univoco per l'oggetto nell'archiviazione effettiva dell'oggetto.
Esiste un'applicazione che carica oggetti in un sistema operativo Web. Per ogni oggetto caricato, crea una stringa di 16 caratteri, ad esempio DataID. Il sistema operativo Web stesso crea una stringa di 40 caratteri, ad esempio ObjectID. Quindi quello che sto cercando di fare è creare un mapping tra DataID - > ObjectID per 18 miliardi di oggetti. Non conosco il meccanismo utilizzato per creare gli ID.
Dovrò occuparmi di:
write(key,value)
read(key)
delete(key,value)
Sto cercando idee per un modo ottimale per implementarlo. Dovrebbe essere ottimizzato per letture e amp; scrive. L'ottimizzazione dello spazio è secondaria.
So che Hadoop / NoSQL è un modo per andare, e probabilmente un'altra soluzione verrà distribuita nelle tabelle di hash, ma alcune altre opzioni mi aiuteranno a decidere quale sia la soluzione migliore. Un database relazionale non è un'opzione in quanto non disponiamo di un RDBMS esistente nell'ambiente corrente.