2010-12-01 22 views
10

Estoy aprendiendo a usar SQLAlchemy conectado a una base de datos SQL para 12 tablas relacionales estándar (por ejemplo, SQLite o PostgreSQL). Pero me gustaría usar Redis con Python para algunas tablas, particularmente para la rápida manipulación de conjuntos de Redis. Me doy cuenta de que Redis es NoSQL, pero ¿puedo integrar esto con SQLAlchemy para el beneficio de la sesión y el manejo de subprocesos que tiene SQLAlchemy?Cómo integrar Redis con SQLAlchemy

¿Hay un dialecto de Redis SA? No pude encontrarlo, lo que probablemente significa que me falta un punto básico. ¿Hay una mejor arquitectura que debería considerar para usar dos tipos diferentes de base de datos?

+0

¿cuál es su caso de uso? –

Respuesta

13

Si bien es posible configurar un ORM que coloque datos en redis, no es una idea particularmente buena. Los ORM están diseñados para exponer las características estándar de SQL. Muchas cosas que son estándar en SQL, como consultar columnas arbitrarias, no están disponibles en redis a menos que haga mucho trabajo adicional. Al mismo tiempo, redis tiene características tales como la manipulación de conjuntos que no existen en SQL estándar, por lo que no serán utilizados por el ORM.

Su mejor opción es, probablemente, a escribir el código para interactuar directamente con Redis en lugar de tratar de utilizar una abstracción inadecuado - En general, usted encontrará que el código para obtener los datos de Redis es un poco más simple que el código SQL que justifica el uso de un ORM.

9

Redis es muy bueno en lo que hace, almacenando valores clave y realizando simples operaciones atómicas , pero si quiere usarlo como una base de datos relacional ¡realmente va a SUFRIR !, como yo ... y aquí es mi historia ...

He hecho algo así, haciendo varios objetos para abstraer todas las partes internas de Redis que exponen las consultas primitivas (llamé a los filtros en mi código), obtengo, configuro, actualizo, y muchos más métodos que puede esperar de un ORM y, de hecho, si se trata solo de localhost, no se sentirá lento su aplicación, puede utilizar el redis como una base de datos relacional, pero si en algún momento intenta mover su base de datos a otro host, que representará una gran cantidad de problemas en términos de transmisión de red, termino con las clases rediseñadas utilizando redis y sus pipas, que hacen que mi programa sea un 900% más rápido, lo que hace que mi programa sea utilizable en la red local, de todos modos estoy empezando a mover mi biblioteca de base de datos a postgres.

La lección de esta historia es que nunca tratar de hacer una base de datos relacional con el modelo de valor clave, funciona muy bien en las operaciones básicas, pero el precio de no tener la posibilidad para que las relaciones en el servidor viene con un alto costo .

Volviendo a su pregunta, no conozco ningún proyecto para hacer un adaptador a sqlalchemy para redis, y creo que nadie va a estar realmente interesado en algo así, debido a la naturaleza de cada proyecto.

+2

+1, por contar mi historia :( – Behrooz