2010-12-01 30 views
10

私は、12の標準リレーショナルテーブル(SQLiteやPostgreSQLなど)用にSQLデータベースに接続されたSQLAlchemyを使用する方法を学んでいます。しかし、私はRedisをPythonでいくつかのテーブル、特にRedisの高速セット操作で使用したいと考えています。私はRedisがNoSQLだと認識していますが、これをSQLAlchemyに統合することで、SQLAlchemyのセッションとスレッド処理の利益を得ることができます。RedisとSQLAlchemyを統合する方法

Redis SAの方言はありますか?私はそれを見つけることができませんでした、おそらく私はいくつかの基本的な点を欠いていることを意味します。 2つの異なるタイプのデータベースを使用するために私が見なければならないより良いアーキテクチャがありますか?

+0

あなたのユースケースは何ですか? –

答えて

13

データを赤字にするORMを設定することは可能ですが、それは特に良い考えではありません。 ORMは、標準のSQL機能を公開するように設計されています。任意の列に対するクエリなど、SQLの標準である多くの機能は、余分な作業が多い場合を除き、赤字では使用できません。同時に、redisには、標準SQLには存在しないため、ORMで使用されないセット操作などの機能があります。

あなたの最良の選択肢は、不適切な抽象化を使用しようとするのではなく、redisと直接対話するコードを記述することです - 一般に、redisからデータを取得するコードは、 ORMを使用することを正当化する。

9

Redisはキー値を格納して単純なアトミックなアトミックなものを作っていますが、それをリレーショナルデータベースとして使用したいのであれば、本当にSUFFERになるでしょう!私の話です...

私は、プリミティブクエリ(私のコードではフィルタと呼ばれる)を公開しているすべてのredis内部を抽象化し、取得し、設定し、更新し、さらに多くのメソッドを作成するために、あなたはORMから期待することができ、実際にはあなたがアプリケーションを遅く感じることはないでしょうが、あなたがリレーショナルデータベースとして使うことができますが、いつでもあなたのデータベースを別の場所に移動しようとするならばホスト、それはネットワーク伝送の点で多くの問題を表すでしょう、私は終わりますredisと彼のパイプを使用して再ハッキングされたクラスを使用して、プログラムをローカルネットワークで使用できるように900%高速化しましたが、とにかく自分のデータベースライブラリをpostgresに移動し始めました。

この歴史の教訓は、キーと値のモデルとリレーショナルデータベースを作るためにしようとしないことです基本的な操作で素晴らしい作品が、あなたのサーバー内のリレーションを作成する可能性 を持っていないの価格が高コストが付属しています。

質問に戻ると、私はredisのためにsqlalchemyにアダプタを作成するプロジェクトは知らないし、各プロジェクトの性質上、誰も本当にそのようなものに興味を持ちそうにないと思います。

+2

+1、私の話を伝えるために:( – Behrooz

関連する問題