Uso Python con SQLAlchemy para algunas tablas relacionales. Para el almacenamiento de algunas estructuras de datos más grandes uso Cassandra. Preferiría usar solo una tecnología (cassandra) en lugar de dos (cassandra y PostgreSQL). ¿Es posible almacenar los datos relacionales en Casandra también?¿Puedo usar SQLAlchemy con Cassandra CQL?
Respuesta
No, Cassandra es un sistema de almacenamiento NoSQL, y no es compatible con la semántica fundamental de SQL como, por ejemplo, las consultas SQL. SQLAlchemy funciona exclusivamente con sentencias de SQL. CQL es solo SQL, no es SQL en sí mismo.
citar the Cassandra CQL documentation:
Aunque CQL tiene muchas similitudes con SQL, hay algunas diferencias fundamentales. Por ejemplo, CQL se adapta al modelo de datos y la arquitectura de Cassandra, por lo que aún no se permiten operaciones similares a SQL, como JOIN o consultas de rango sobre filas en clústeres que usan el particionador aleatorio.
Usted, por supuesto libre para almacenar todos los sus datos en Casandra, pero eso significa que tiene que volver a pensar en cómo se almacenan los datos y encontrar de nuevo. No puede usar SQLAlchemy para mapear esos datos en objetos de Python.
Como se mencionó, Cassandra no admite JOIN por diseño. Utilice la asignación de Pycassa en su lugar: http://pycassa.github.com/pycassa/api/pycassa/columnfamilymap.html
playOrm admite JOIN en noSQL para que PUEDA poner datos relacionales en noSQL, pero actualmente está en Java. Hemos estado pensando en exponer un lenguaje S-SQL de un servidor para programas como el suyo. ¿Te interesaría eso?
El S-SQL sería el siguiente (si no se utiliza particiones, ni siquiera necesita algo antes de la pieza instrucción SELECT) ...
PARTITIONS t (t): Idpart SELECT FROM TABLE como t INNER JOIN t.security como s WHERE s.securityType =: type y t.numShares =: shares ")
Esto permite datos relacionales en un entorno noSQL Y SI realiza una partición de sus datos, puede escalar como muy bien con consultas rápidas y uniones rápidas.
Si lo desea, podemos codificar rápidamente un protocolo escriba el servidor que expone una interfaz a la que envía solicitudes S-SQL y le devolvemos alguna forma de json. Nos gustaría que fuera diferente a los conjuntos de resultados de SQL, lo cual era una muy mala idea cuando las uniones izquierda y las combinaciones internas están en la imagen.
es decir. volveríamos resultados en una unión como tal (por lo que se puede establecer un máximo resultados que realmente funciona ...)
tablaA fila A - TableB row45 - TableB row65 - fila TableB 78 tablaA la fila C - TableB row46 - tableB row93
AVISO de que no devolvemos varias filas A para que si tiene un resultado máximo 2 obtenga la fila A y la fila C donde, como en ODBC/JDBC, obtenga SOLAMENTE rowA dos veces con row45 y fila 65 porque así es como se ve la tabla cuando se devuelve (lo cual es algo estúpido cuando estás en un idioma OO de cualquier tipo).
simplemente hazle saber al equipo de PlayOrm si necesitas algo en el sitio web playOrm github.
Dean
¿Podría ser utilizado con SQLAlchemy incluso en Java? – AME
Nuestra idea es 'exponer' eventualmente una interfaz JDBC, por lo que la respuesta sería "sí, eventualmente". Nos gustaría ver que S-SQL esté integrado en todos los almacenes noSQL que sean externos a ellos. –
y esa fue mi pregunta para usted ... sería interesante ... Debería haber dicho ODBC, no JDBC (es decir, eventualmente queremos exponer una conexión de lenguaje cruzado para todos los idiomas). –
- 1. Cuenta incorrecta (*) con cassandra-cql
- 2. Cassandra CQL: No se puede insertar
- 3. Cassandra CQL - comandos Update para no crear nueva fila
- 4. Cómo usar las consultas cql para obtener diferentes tipos de datos de cassandra con el cliente de java hector
- 5. ¿Cómo puedo usar los UUID en SQLAlchemy?
- 6. ¿Qué biblioteca cliente PHP usar con Cassandra?
- 7. ¿Es seguro usar SQLalchemy con gevent?
- 8. cassandra con scala
- 9. ¿Cómo puedo perfilar una aplicación con SQLAlchemy?
- 10. Configurando Django para usar SQLAlchemy
- 11. CQL: ¿cómo verificar si el espacio de claves existe?
- 12. ¿Existe un .NET CQL Parser?
- 13. CQL: no se puede anular Verificar en "Dónde" Cláusula
- 14. SQLalchemy especifica qué índice usar
- 15. procedimientos almacenados con sqlAlchemy
- 16. Cómo integrar Redis con SQLAlchemy
- 17. mysql Compress() con sqlalchemy
- 18. ¿Vale la pena usar sqlalchemy-migrate?
- 19. Conectando y jugando con Cassandra en Java
- 20. Cassandra CLI: especifica el nombre de la clave primaria
- 21. (solo) generar código SQL con SqlAlchemy
- 22. Datos espaciales con mongodb o cassandra
- 23. Herencia de Postgres con SQLAlchemy
- 24. Apache Cassandra integración con Apache Solr
- 25. Hector para Cassandra
- 26. Transacción de Cassandra con ZooKeeper - ¿Funciona?
- 27. ¿Puedo asignar valores en RowProxy usando sqlalchemy?
- 28. Borrando fila con Flask-SQLAlchemy
- 29. CASO CUANDO con ORM (SQLalchemy)
- 30. Inserción masiva con SQLAlchemy ORM
¿Pero no tiene cassandra compatibilidad con sql-like cql? – AME
@AME: SQL-like no es lo mismo que SQL. :-) No hay operaciones JOIN, por ejemplo. –