2013-10-07 7 views
5

私が公開したいアプリケーションをビルドしていますが、私はPythonでそのアプリケーションを記述します。 特定のデータベースsql/nosqlのアプリケーションへの使用をロックしたくありません。 データを格納するSQL/NOSQLの方法を適用しないように、アプリケーション層またはモデル層を設計する方法を教えてください。PythonにはSQLとNoSQL用のORMがあります

両方のタイプのストレージで再生されるORMはありますか?私は見つけませんでした。 通常はsqlalchemyを使用して、必要に応じて人々がMySQL/PostgreSQL/MSSQL/etcを使用できるようにしますが、NOSQLを追加することは当初考えていたよりも複雑に思えます。

私はのようないくつかの要件があります。私は、任意のストレージバックエンドを強制したくない

  • を、これはアプリを使用してから人々を怖がらないようにするためです。あなたは、私が建築これらの要件は、私は助けを感謝することができますどのように任意のアイデアを持っている場合は
  • はそれが

を(インストール時またはアップグレード手順)データスキーマの移行をサポートしている必要があります。 は、それがこのような構造を作成することは可能です:いいえそこ

+-----+ 
    + app + 
    +-----+ 
     | 
+-------------+ 
+ Data Access + 
+-------------+ 
     | 
+-----------+ 
+ SQL/NOSQL + 
+-----------+ 

おかげ

答えて

3

はそのようなものではありません。

ORMまたはRDBMSは、下位のデータベースを抽象化するための最小限の標準としてSQLに依存することができます。ほとんどのORMは、Python DB API(すべてのRDBMS Pythonバインディングによって多かれ少なかれ完全に実装されています)の上に構築されています。

NoSQLでは、標準クエリ言語も標準ドライバAPIもありません。

したがって、両方の世界で機能するものはありません。

NoSQL言語の共通クエリ言語を定義する方法があります。

は、例えば

http://www.jsoniq.org/

JsonIQ

があるしかし、現実にはあなたを助けること過言ではありません。

+0

答えていただきありがとうございます.NoSQLをSQLより優先させる方がよいかどうかを判断する必要があります。私はjsoniqを見ます。 – DoRivard

0

JSONiqのwww.28.io実装を試してください。クラウドサービスまたはオンデマンドとして利用可能です。

0

抽象レイヤに最も近いのはdjango-nonrelです。これは、Mongo、GoogleのNoSQLデータベース、その他いくつかのものをサポートするdjangoのフォークです。

一度は有望でしたが、djangoコミュニティは一般的にNoSQLを追加するという考えを拒否していたため、後退しました。

関連する問題