sql >> Base de Datos >  >> NoSQL >> Redis

¿Cuál es el motor de base de datos orientado a documentos más eficiente para almacenar miles de documentos de tamaño mediano?

Depende mucho del caso de uso específico. Si desea poder consultar sus documentos en algo que no sea su ID, entonces no debe elegir Redis. Con Redis, tendría que implementar su propio esquema de indexación, y eso es simplemente innecesario.

En realidad, hay muy pocos casos en los que Redis sería una mejor opción para lo que creo que es su caso de uso (no es que haya nada malo con Redis, a menudo uso tanto Redis como Mongo, pero para cosas diferentes). Me parece que tienes objetos que se pueden representar como hashes. Tanto Mongo como Redis pueden almacenar hashes, pero Mongo puede hacer mucho más. Con Mongo puedes buscar un documento en cualquiera de sus campos, puedes agregar un índice para acelerarlo, y el campo ni siquiera tiene que ser una cadena, puede ser un número, una fecha, una lista, incluso un documento. (o una lista de documentos), y todos los documentos no tienen que caber en la RAM (aunque eso cambiará cuando finalice la función de almacenamiento en disco de Redis). Redis no tiene nada de eso. Tendría que implementar índices usted mismo para poder buscar, no puede almacenar nada más que cadenas (lo que a veces es realmente inconveniente), y no puede almacenar nada más que hashes planos (sin recurrir a implementar o usar algún tipo de mapeo capa como Ohm).

También mencionas la velocidad. Redis es increíblemente rápido y Mongo tampoco está mal, sin embargo, para su caso de uso, usar Mongo puede ser más rápido. Fíjate que digo usando Mongo, no es que Mongo en sí sea más rápido. La cuestión es que, si opta por Redis y aún desea poder buscar un documento utilizando un campo que no es la clave principal, como mencioné anteriormente, tendría que implementar esto usted mismo. Luego, una búsqueda tendría que hacer al menos dos solicitudes a Redis, una para buscar en el índice y otra para obtener el documento. Si una búsqueda da como resultado más de un documento, deberá realizar una solicitud para cada documento individualmente. La sobrecarga de hacer todas estas solicitudes probablemente haría que usar Redis fuera peor que usar Mongo. En mi experiencia, cualquier cosa que no sea el caché, la cola o similar más simple necesita realizar más de una solicitud a Redis para obtener todo lo que necesita.

Entonces, con la información limitada a mi disposición, recomiendo MongoDB.