Sto cercando un database corrisponde ai criteri richiesti:Esiste qualcosa come Redis DB, ma non limitato alla dimensione della RAM?
- può essere non-persistente;
- Quasi tutte le chiavi di DB devono essere aggiornati una volta ogni 3-6 ore (100m + tasti con dimensione totale di 100GB)
- Possibilità di selezionare rapidamente i dati di chiave (o chiave primaria)
- Questo deve essere un DBMS (così LevelDB non va bene)
- Quando i dati vengono scritti, gruppo DB deve essere in grado di servire le query (singoli nodi possono essere bloccati però)
- non in memoria - il nostro set di dati supererà i limiti di RAM
- Ridimensionamento orizzontale e replica
- Supporto completo riscrittura e di tutti i dati (MongoDB non lo fa spazio libero dopo l'eliminazione dei dati)
- C# e il supporto Java
Ecco il mio processo di lavoro con tale banca dati: Abbiamo un gruppo di analisi che produce dischi 100M (50 GB) di dati ogni 4-6 ore. Il dato è un "key - array [20]". Questi dati devono essere distribuiti agli utenti attraverso un sistema front-end con una frequenza di 1-10k di richieste al secondo. In media, viene richiesto solo il ~ 15% dei dati, il resto verrà riscritto in 4-6 ore quando viene generato il set di dati successivo.
quello che ho provato:
- MongoDB. Sovraccarico di Datastorage, costi elevati di deframmentazione.
- Redis. Sembra perfetto, ma è limitato alla RAM e i nostri dati lo superano.
Quindi la domanda è: c'è qualcosa come Redis, ma non limitato con la dimensione della RAM?
Non dimenticare di applicare una risposta! – FGRibreau
È possibile superare la barriera di scalabilità della RAM implementando il sharding sul lato dell'applicazione, utilizzando Redis Cluster (v3.0) o lasciando che gli esperti lo gestiscano (es. Redis Labs;)) –