我可以和卡桑德拉CQL一起使用SQLAlchemy吗?

2024-05-17 03:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我将Python与SQLAlchemy一起用于一些关系表。为了存储一些更大的数据结构,我使用Cassandra。我宁愿只使用一种技术(cassandra),而不是两种(cassandra和PostgreSQL)。是否也可以将关系数据存储在cassandra中?


Tags: 数据结构sqlalchemy关系postgresql技术cassandra关系数据
3条回答

playOrm支持noSQL上的JOIN,因此您可以将关系数据放入noSQL中,但它目前在java中。我们一直在考虑从服务器上为像您这样的程序公开S-SQL语言。你会感兴趣吗?

S-SQL应该是这样的(如果不使用分区,在SELECT语句块之前甚至不需要任何内容)。。。

分区t(:partId)从表中选择t作为t内部连接t.security作为s,其中s.security type=:type和t.numShares=:shares“)

这允许在noSQL环境中使用关系数据,如果您对数据进行分区,那么您还可以通过快速查询和快速连接进行很好的扩展。

如果您愿意,我们可以快速编写一个原型服务器代码,该服务器将公开一个接口,您可以在其中发送S-SQL请求,然后我们将某种形式的json返回给您。我们希望它不同于SQL结果集,当左联和内部连接出现在图片中时,这是一个非常糟糕的主意。

也就是说,我们会在这样的连接上返回结果(这样您就可以设置实际工作的最大结果)。。。

表A行-表B行45 -表B第65行 -表格B第78行 表A第C行-表B第46行 -表B第93行

注意,我们不返回多个行A,因此如果您有max results 2,您将得到行A和行C,在ODBC/JDBC中,您将只得到两次行A,行45和行65,因为这是返回表时的外观(在任何类型的OO语言中,这都有点愚蠢)。

只要让playOrm团队知道你是否需要playOrm github网站上的任何东西。

院长

不,Cassandra是一个NoSQL存储系统,不支持基本的SQL语义,比如连接,更不用说SQL查询了。SQLAlchemy只适用于SQL语句。CQL只是类似SQL的,而不是实际的SQL本身。

引用the Cassandra CQL documentation

Although CQL has many similarities to SQL, there are some fundamental differences. For example, CQL is adapted to the Cassandra data model and architecture so there is still no allowance for SQL-like operations such as JOINs or range queries over rows on clusters that use the random partitioner.

当然,您可以在Casandra中存储所有数据,但这意味着您必须重新考虑如何存储数据并再次找到它。不能使用SQLAlchemy将数据映射到Python对象中。

如前所述,Cassandra不支持按设计连接。改用Pycassa映射:http://pycassa.github.com/pycassa/api/pycassa/columnfamilymap.html

相关问题 更多 >