一个对象的完全抽象的数据源?

时间:2011-10-31 20:09:49

标签: python sqlalchemy

如果这个问题过于笼统,或者存在我尚未通过搜索找到的解决方案,我会事先道歉。

我正在使用web.py开发一个简单的REST服务器,而我的后端是mysql,所以我使用了sqlalchemy声明对象。一切都运行得非常好,但我发现自己与使用sqlalchemy当时支持的数据库紧密相关。如果我想切换到mongodb或其他东西,我的sqlalchemy特定的声明性类将不得不被重写或报废。

我想知道是否有任何项目(或者更常见的是设计模式的示例)允许您插入任何后端。我敢肯定,需要大量的编码才能从sql后端切换到mongo后端(例如),但如果有任何众所周知的策略来减少痛苦,我会很好奇听说他们。

非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

这可能有助于您为MongoDB选择ORM:

MongoDB ORM for Python?

我发现很难相信在ORM的引导下从关系到NoSQL数据库的任何转换都可以无缝地用于任何非平凡的项目。但是,如果你真的需要在某个时候进行迁移,那么有些ORM与SQLAlchemy具有相似的语义(Ming看起来很有希望,但我还没有用过它)。

您可能需要查看StackOverflow architecture described on High Scalability。简而言之,SQL数据库可以让您走得更远。

另请查看The Case Against ORM Frameworks In High Scalability Architectures,并考虑一旦需要向外扩展,是否要使用ORM。

还可以同时使用两者:一个SQL数据库,无论您需要哪些事务,一个NoSQL数据库用于记录,事件和NoSQL DB擅长的其他领域。