2012-06-05 12 views

Respuesta

25

Existen muchos beneficios potenciales y posibles inconvenientes del uso de Redis en lugar de un RDBMS clásico. Son bestias muy diferentes de hecho.

centrarse sólo en los posibles inconvenientes:

  • Redis es una tienda en memoria: todos sus datos deben caber en la memoria. RDBMS generalmente almacena los datos en discos y almacena en caché parte de los datos en la memoria. Con un RDBMS, puede administrar más datos de los que tiene la memoria. Con Redis, no puedes.

  • Redis es un servidor de estructura de datos. No hay lenguaje de consulta (solo comandos) y no hay soporte para un álgebra relacional. No puede enviar consultas ad-hoc (como puede usar SQL en un RDBMS). El desarrollador debe prever todos los accesos a los datos y deben diseñarse rutas de acceso a los datos adecuadas. Se pierde mucha flexibilidad.

  • Redis ofrece 2 opciones de persistencia: instantáneas regulares y archivos de solo unir. Ninguno de ellos es tan seguro como un servidor transaccional real que proporciona registro de rehacer/deshacer, suma de comprobación de bloque, recuperación puntual, capacidades de retrospectiva, etc.

  • Redis solo ofrece seguridad básica (en términos de derechos de acceso)) en el nivel de instancia. Todos los RDBMS proporcionan listas de control de acceso por objeto de grano fino (o administración de roles).

  • Una instancia única de Redis no es escalable. Solo se ejecuta en un núcleo de CPU en modo de un solo subproceso. Para obtener escalabilidad, se deben implementar e iniciar varias instancias de Redis. La distribución y la fragmentación se realizan en el lado del cliente (es decir, el desarrollador debe ocuparse de ellos). Si los compara con una instancia única de Redis, la mayoría de los RDBMS brindan mayor escalabilidad (generalmente proporcionan paralelismo en el nivel de conexión). Son multiprocesados ​​(Oracle, PostgreSQL, ...) o multiproceso (MySQL, Microsoft SQL Server, ...), aprovechando las ventajas de las máquinas de varios núcleos.

Aquí, sólo se han descrito los principales inconvenientes, pero tenga en cuenta que hay también un montón de ventajas en el uso de Redis (, buen soporte de concurrencia muy rápido, baja latencia, la canalización de protocolo, bien a implementar fácilmente optimista concurrente patrones, buena relación de usabilidad/complejidad, excelente soporte de Salvatore y Pieter, enfoque pragmático sin sentido, ...)

Para su problema específico (gráfico), le sugiero echar un vistazo a neo4J u OrientDB que son específicamente diseñado para almacenar datos orientados a gráficos.

Cuestiones relacionadas