2011-10-31 32 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