3

コードをレビューしていて、膨大な時間を費やしていることに気付きました

  1. データベースから行を取得し、
  2. XMLとしてフォーマットし、
  3. ブラウザへのAJAX GET、そして
  4. 私のローカルデータストアとしてハッシュされたJavaScriptオブジェクトに変換します。

更新時には、プロセスを逆にする必要があります (XML の代わりに POST を使用する場合を除く)。

Redis を検討し始めたばかりなので、オブジェクトをサーバー上のキーと値のストアに保持し、JSON を使用して JS クライアントに直接転送するだけで、膨大な時間を節約できると考えています。しかし、私の弱い心は、SQL DB を離れることによって何をあきらめるかを予測できません (つまり、GROUP BY/HAVING クエリをあきらめるのが怖いです)。

私のデータについては、次のものがあります。

  • 多対多の関係、つまり obj-tags、obj-groups など。
  • そのような組み合わせによるオブジェクトのクエリ、つまり WHERE タグ IN ('a', 'b','c') AND グループイン ('x','y')
  • 自己結合、つまり各オブジェクトのすべてのタグ WHERE tag='a' (sql group_concat())
  • 多くの外部結合、つまり OUTER JOIN rating ON o.id = rating.obj_id
  • REDIS の強みと思われるフィード

Key-Value と SQL DB をうまく混在させるにはどうすればよいでしょうか?

たとえば、SQL RANGE クエリ (つまり、WHERE obj.id IN (1,4,6,7,8,34,876,9879,567,345, ...)、またはその逆?

アイデア/提案を歓迎します。

4

3 に答える 3

4

MongoDBをご覧になることをお勧めします。JSON スタイルのオブジェクトで動作し、インデックス作成やクエリなどの SQL が付属しています。Redis は、複雑なクエリではなく単純なルックアップが必要な場合に、リストやセットなどのデータ構造を保存するのに適しています。

于 2010-02-09T01:22:08.707 に答える
2

実際の問題がより明確になったので (つまり、あるレイヤー/表現から次のレイヤー/表現に移動するために繰り返し変換コードを書くのに多くの時間を費やしている)、おそらくこれを自動化する何かを書く (またはグーグル検索する) ことを検討できますか?

Google は「テーブルを XML に変換」(およびその逆) に対して多くの結果を返しますが、これは役に立ちますか? テーブルからキー/値のペアに直接移動する方が良いでしょうか? 一般化された方法でこの問題に取り組んでみましたか?

于 2010-02-08T11:06:29.687 に答える
0

あなたが「膨大な時間を費やしている」と言うとき、これは多くの開発時間のことですか、それとも計算時間のことを指していますか?

個人的には、RDBMS と非 RDBMS ソリューションを混在させることには慎重です。これは、2 つの異なるパラダイムが衝突したときにおそらく問題を引き起こすからです。

于 2010-02-05T10:26:58.567 に答える