我正在学习如何将连接到SQL数据库的SQLAlchemy用于12个标准关系表(例如SQLite或PostgreSQL)。但是,我想使用Redis和Python来处理几个表,特别是Redis的快速集合操作。我知道Redis是NoSQL的,但是我能不能把它和SQLAlchemy集成在一起,以利于SQLAlchemy的会话和线程处理呢?
有没有Redis SA方言?我找不到它,这可能意味着我遗漏了一些基本点。有没有更好的架构可以让我使用两种不同类型的数据库?
发布于 2010-12-02 10:16:05
虽然可以设置一个将数据放入redis的ORM,但这不是一个特别好的主意。ORM旨在公开标准的SQL特性。SQL中的许多标准功能,比如对任意列的查询,在redis中是不可用的,除非您做了大量额外的工作。同时,redis具有标准SQL中不存在的集合操作等特性,因此ORM将不会使用这些特性。
您最好的选择可能是编写代码直接与redis交互,而不是尝试使用不适当的抽象-通常,您会发现从redis中获取数据的代码比使用ORM的SQL代码简单得多。
发布于 2010-12-02 15:44:39
Redis非常擅长存储键值和进行简单的原子操作,但是如果你想把它用作一个关系数据库,你真的要吃亏了,就像我曾经做过的那样。这是我的故事。
我已经做了一些类似的事情,创建了几个对象来抽象所有的redis内部,公开原语查询(我在我的代码中调用了过滤器),get,set,update和更多你可以从ORM中期待的方法,事实上,如果你只处理localhost,你不会感觉到你的应用程序中有任何缓慢的地方,你可以使用redis作为关系数据库,但如果你在任何时候试图将你的数据库移动到另一个主机,这将在网络传输方面代表许多问题,我最终得到了一堆使用redis和他的管道的重新破解的类。这使我的程序快了900%,使其在本地网络中可用,不管怎样,我正开始将我的数据库库转移到postgres。
这段历史的教训是,永远不要尝试用键值模型来创建关系数据库,在基本操作上效果很好,但无法在服务器中建立关系的代价是高昂的。
回到你的问题,我不知道有任何项目可以为redis做sqlalchemy的适配器,而且我认为没有人会真正对这样的东西感兴趣,因为每个项目的性质。
https://stackoverflow.com/questions/4324407
复制相似问题