Redis
 sql >> Database >  >> NoSQL >> Redis

Qual è il motore di database orientato ai documenti più efficiente per archiviare migliaia di documenti di medie dimensioni?

Dipende molto dal caso d'uso specifico. Se vuoi essere in grado di interrogare i tuoi documenti su qualcosa di diverso dal loro ID, non dovresti scegliere Redis. Con Redis dovresti implementare il tuo schema di indicizzazione, e questo è semplicemente superfluo.

In realtà ci sono pochissimi casi in cui Redis sarebbe un'opzione migliore per quello che penso sia il tuo caso d'uso (non che ci sia qualcosa di sbagliato in Redis, uso spesso sia Redis che Mongo, ma per cose diverse). Mi sembra che tu abbia oggetti che possono essere rappresentati come hash. Sia Mongo che Redis possono memorizzare hash, ma Mongo può fare molto di più. Con Mongo puoi cercare un documento in uno qualsiasi dei suoi campi, puoi aggiungere un indice per velocizzarlo e il campo non deve nemmeno essere una stringa, può essere un numero, una data, un elenco, persino un documento (o un elenco di documenti) e tutti i documenti non devono rientrare nella RAM (sebbene ciò cambierà al termine della funzione di archiviazione del disco di Redis). Redis non ha nulla di tutto ciò. Dovresti implementare tu stesso gli indici per poter cercare, non puoi archiviare nient'altro che stringhe (che a volte è davvero scomodo) e non puoi archiviare nient'altro che hash flat (senza ricorrere a implementare o utilizzare qualche tipo di mappatura strato come Ohm).

Hai menzionato anche la velocità. Redis è incredibilmente veloce e anche Mongo non è male, tuttavia, per il tuo caso d'uso l'utilizzo di Mongo potrebbe essere più veloce. Nota che dico usando Mongo, non che Mongo stesso sarebbe più veloce. Il fatto è che, se vai con Redis e vuoi ancora essere in grado di cercare un documento usando un campo che non è la chiave primaria, dovresti, come ho detto sopra, implementarlo tu stesso. Una ricerca dovrebbe quindi fare almeno due richieste a Redis, una per cercare nell'indice e una per ottenere il documento. Se una ricerca produce più di un documento, dovresti fare una richiesta per ciascun documento individualmente. Il sovraccarico di fare tutte queste richieste probabilmente renderebbe l'utilizzo di Redis peggiore dell'utilizzo di Mongo. Nella mia esperienza, qualsiasi cosa diversa dalla più semplice cache, coda o simili deve fare più di una richiesta a Redis per ottenere tutto ciò di cui ha bisogno.

Quindi, con le poche informazioni a mia disposizione, consiglio MongoDB.