2011-10-31 87 views
2

如果这个问题过于笼统,或者我还没有找到通过搜索找到的解决方案,我很抱歉。完全抽象对象的数据源?

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

我想知道是否有任何允许插入任何后端的项目(或者更普遍的说是设计模式的示例)。我相信要从一个sql后端切换到一个mongo后端(例如)需要大量的编码,但是如果有一些众所周知的策略来减少这种痛苦,我会非常好奇听说他们。

非常感谢任何答案!

回答

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擅长的其他字段。

+0

嘿,谢谢你的回答。我想我的问题更多:“是否有一种已知的方法来保持模型完全不知道数据来自何处?某种模型 - 数据接口模式?”尽管如此,我认为我可能会过度思考,并且SQL将足以解决我在不久的将来遇到的任何问题,尤其是考虑到您最后的陈述。再次感谢! – Hoopes