2012-03-04 1 views
4

FlaskフロントエンドでPythonでマルチプレイヤーゲームを開発していますが、NoSQLのやり方についてもっと学ぶ機会として使っています。FlaskアプリケーションでのRedisとRDBMSの共存(うまくいけば協力)

レディスは、サーバー側のセッションや他の一時的なデータの保存など、このアプリに必要なもののいくつかに適しているようです。どのゲームが進行中で、誰がオンラインになっているかなどがあります。Flask/Redisのレシピもいくつかあります。

しかし、データアカウントには、ユーザーアカウント、完成したゲームのログなど、従来のRDBMSの中に住んでいたかったものがいくつか残っています。これらのことはできませんが、 RDBMSはそれらに適していると思うし、Redisはすべてを記憶に入れたいので、ディスク上のこのデータの一部を「倉庫保管」するのは理にかなっているようだ。

この2つのデータストアを幸せに一緒に暮らす方法は、私にとってはあまり適していません。 ORMがデータモデルの一部であるすべてのデータを所有したいので、SQLAlchemyやRediscoicのようなORMを使用するのは間違いないようですが、ORMからクラスを取得する必要があるのは必然です(例えば、「ユーザーはRDBMSにありますが、ゲームはRedisにあり、ゲームにはユーザーが参加しています」

RedisのようなNoSQLストアを使ってPython Webアプリケーションを展開した経験がある人はいますか物事とRDBMSを他の人のために持っているならば、それらを一緒に働かせるための戦略はありますか?

答えて

3

最後に文字列、数字などの値を格納するだけなので、ORMを使用しても問題ありません。あなたは進行中のゲームを持つことができ、選手のIを含むレディスでその状態を維持することができますIDはSQL playerテーブルから取得します.IDは単なる一意の整数です。

+0

OK、SQLストアからのプライマリキーの格納には妥当性があります。私の出発点はRedisデータモデルのORMとしてrediscoを使用していました.RediscoマッピングされたデータモデルクラスがSQLalchemyでマップされたデータモデルクラスへの参照を持つと失われ始めました。私はおそらく私はちょうど1つのORMか他を選び、1つからの一意の識別子を別のものの外来キーとして扱うならば、おそらく最良だと思います。 – tonycpsu

+0

好きな場合は両方のORMを使用してください。しかし、ORM間でモデルを相互参照するには、明示的な外部キーを使用せず、単純な整数フィールドを使用し、参照されるオブジェクトの主キーで「手動で」それらを設定します。 –

+0

それはかなりきれいに聞こえる - 私はそれを撃つだろう。ありがとう。 – tonycpsu

関連する問題