0

私たちは慈善のためのプラットフォームを構築しており、起こっているすべての活動を記録したいと考えています。例えば

  • John Doe (リンク) は、必要な子供たちをプロジェクトするために 20 ドルを寄付しました (リンク)
  • John Doe (リンク) がチーム Architects (リンク) に参加しました
  • John Doe (link) は Dane Doe (link) と友達になりました
  • プロジェクトチルドレン(リンク)が新しい写真(写真)を投稿しました...

つまり、Facebook の壁に似ています。質問は、これを Azure に保存する方法ですか? 現在、Azure SQL を使用しており、特定のフィールドを JSON に保存してから、別のフィールドに基づいてアクティビティをレンダリングしています。しかし、そのデータなどを検索することはできません。これは本当に悪いことです。

そのために最適なTable Servicesをチェックしました。唯一の問題は、パフォーマンスと注文です。多くの人は、インデックスのないフィールドで検索するのは本当に遅いと言いました+順序付けが必要です(ここではデフォルトの順序付けが何であるかわかりませんが、おそらくASC-どこかでDESCが必要で、他の場所ではASCが必要です)。

他の人は、データをどこかに保存し、lucene にデータのインデックスを付けるためだけに、Lucene.net を使用することを提案しました。次に、簡単に検索して注文できます。唯一の問題はインデックスの更新です (プラットフォームで何かを行うとすぐに表示される必要があるため、1 時間ほどでインデックスを再構築することはできません)。おそらくインデックスを更新して、その日付よりも新しいレコードのインデックスを再作成できることはわかっています。それはうまくいくかもしれません。

3 番目のオプションは、mongodb のような nosql データベースをインストールすることです。しかし、オンラインで読むと、それが機能するかどうかは誰も確認されていません. しかし、Azure ストアに mongodb があることに気付きました。

何を指示してるんですか?誰かがこれに似た問題を抱えていて、どのように解決しましたか?

4

3 に答える 3

0

Neo4Jのようなグラフ データベースの使用を見たことがありますか?

これは、Azure で実際に運用されている neo4j アプリのビデオです: http://blog.tatham.oddie.com.au/2012/06/18/new-talks-neo4j-in-a-net-world-and- youre-in-production-now-what/

于 2012-11-23T02:47:12.210 に答える
0

現実的には、リレーショナル データベース テーブルのインデックスはサブテーブルそのものです。それを念頭に置いて、Azure テーブル ストレージでインデックスを維持することは、実際には、インデックスとして機能する追加のテーブルまたは行を持つことの問題です。NoSQL パラダイムで放棄するのは、実際にはリレーショナル データベースの ACID プロパティであり、アプリケーションで処理する必要があるものです。(これを行う方法は、実際にはこの回答の範囲を超えており、要件によって異なります)。

質問に答えると、効率的なクエリを有効にするために両方のリンクを保存する必要があります。たとえば、個人と友人のリンクには両方の関連付けが必要です。それらは同じテーブルにあるか、2 つの別々のテーブルにある可能性があります。John Doe – Dane Doe, Friend と Dana Doe – John Doe, Friend のようなものです。次に、John と Dana の両方にインデックスを作成し、効率的なクエリですべての友人を取得できるようにします。

スケーラビリティが本当に必要ない場合は、Table Storage ルートではなく Azure SQL ルートを使用することをお勧めします。ACID プロパティは、アプリケーション層で実装するのが難しく、リレーショナル データベースを非常に信頼できるものにしているのは ACID です。

于 2012-11-22T19:20:31.560 に答える
0

lucene.net は優れたソリューションであり、ほぼリアルタイムの検索を提供できます。「Lucene in action」という本を読んでください。これはJava版を対象としていますが、.net版でもほとんどのことは同じです。それがあなたを助けることができるかどうか見てください。

于 2012-11-22T11:07:32.353 に答える