對於某些關係表,我使用Python和SQLAlchemy。爲了存儲一些更大的數據結構,我使用Cassandra。我寧願只使用一種技術(cassandra)而不是兩種(cassandra和PostgreSQL)。關聯數據是否可以存儲在cassandra中?我可以在Cassandra CQL中使用SQLAlchemy嗎?
回答
不,Cassandra是一個NoSQL存儲系統,不支持像連接這樣的基本SQL語義,更不用說SQL查詢了。 SQLAlchemy專門用於SQL語句。 CQL只是類SQL,而不是實際的SQL本身。
從the Cassandra CQL documentation引用:
雖然CQL有許多相似之處,SQL,也有一些根本性的分歧。例如,CQL適用於Cassandra數據模型和體系結構,因此仍不允許類似SQL的操作,例如對使用隨機分區的集羣上的行進行JOIN或範圍查詢。
你當然可以自由存儲在卡桑德拉所有你的數據,但是這意味着你必須重新思考如何存儲數據,並再次找到它。您不能使用SQLAlchemy將該數據映射到Python對象。
如前所述,Cassandra不支持JOIN設計。使用Pycassa映射代替:http://pycassa.github.com/pycassa/api/pycassa/columnfamilymap.html
playOrm支持在noSQL上JOIN,因此您可以將關係數據放入noSQL,但它目前在java中。我們一直在考慮從服務器上爲您的程序公開S-SQL語言。 你會感興趣嗎?
的S-SQL是這樣的(如果你不使用的分區,你甚至不需要SELECT語句件事情之前)...
PARTITIONS T(:PARTID)選擇T FROM TABLE as t INNER JOIN t.security as s WHERE s.securityType =:type and t.numShares =:shares「)
這允許關係數據在noSQL環境中,並且如果您對數據進行分區,則可以按比例以及快速查詢和快速連接。
如果你喜歡,我們可以快速編寫一個原型鍵入服務器,它暴露了您在S-SQL請求中發送的接口,並且我們將某種形式的json返回給您。我們希望它與SQL結果集不同,當圖像中存在左連接和內連接時,這是一個非常糟糕的主意。
即。我們會返回一個結果加入像這樣(讓你可以設置一個最大的結果,實際工作)...
TABLEA A行 - tableB的row45 - tableB的row65 - tableB的排78 TABLEA C行 - tableB的row46 - tableB row93
注意,我們不返回多行A,因此如果您有最大結果2,您將得到行A和行C,如在ODBC/JDBC中,您只會獲得rowA兩次,第65行,因爲這是表返回時的樣子(當你使用任何類型的OO語言時,這種行爲很愚蠢)。
只是讓playOrm團隊知道,如果你需要的playOrm的GitHub網站上的任何內容。
院長
即使它在Java中,是否可以與SQLAlchemy一起使用? – AME
我們的想法是'最終'暴露一個JDBC接口,所以答案會是「是的,最終」。我們希望將S-SQL內置到我們的外部的所有noSQL存儲中。 –
這就是我的問題,你會感興趣......我應該說ODBC,而不是JDBC(即最終我們想要爲所有語言公開一個跨語言連接)。 –
- 1. 可以使用Cassandra Collections嗎?
- 2. 在Heroku上可以使用SQLAlchemy嗎?
- 3. 我可以在sqlalchemy中使用MYSQL空間擴展嗎?
- 4. 我可以在使用SQLAlchemy的查詢中運行查詢嗎?
- 5. 我可以使用sqlalchemy在RowProxy中分配值嗎?
- 6. 我可以使用lambda在SQLAlchemy中創建查詢嗎?
- 7. CQL/Cassandra回滾?
- 8. Cassandra - CQL OR Operator
- 9. Cassandra:是否可以使用CQL調用行中的時間戳條目?
- 10. 用cassandra-cql錯誤計數(*)
- 11. F中的Cassandra CQL映射#
- 12. Cassandra cql shell腳本
- 13. Cassandra CQL格式器
- 14. 我可以在cassandra中創建以下列家族嗎?
- 15. Cassandra和使用cql插入列
- 16. 使用cql從python插入cassandra
- 17. 如何列出Cassandra cql結果?我必須解析JSON嗎?
- 18. 我們可以使用SQLAlchemy獲取postgres數據庫轉儲嗎?
- 19. 我們可以通過cassandra java驅動程序使用sqoop嗎?
- 20. 我可以使用Cassandra存儲對象嗎?
- 21. Cassandra DB:可以在Cassandra數據庫中存儲XML文件嗎?
- 22. 使用cassandra-cli或CQL修改cassandra列族主鍵
- 23. Sqlalchemy - 我們可以在關係定義中使用日期比較嗎?
- 24. 我可以在ORM事件回調中使用SQLAlchemy關係嗎?總是無
- 25. 我們可以在cassandra中停止datastax-agent進程嗎?
- 26. 如何在cassandra CQL中使用like查詢?
- 27. 如何使用Cassandra在CQL中查看SOLR動態字段?
- 28. 使用cql在cassandra中將值設置爲null
- 29. 在cassandra(astyanax)中使用cql準備語句時出錯
- 30. 如何使用cql在cassandra的列族中動態添加列
但是沒有cassandra支持sql-like cql嗎? – AME
@AME:與SQL本身不一樣。 :-)例如,沒有JOIN操作。 –