-1

Erlang で Reddit クローンを作成しています。いくつかの erlang Web フレームワークの使用を検討していますが、これは問題ではありません。

データベースの選択に問題があります。

使い方;

私は複数の専用 reddit を持っています。例、科学、面白い、企業、スポーツ。それらをサブredditと見なすことができます。各サブ reddit にはカテゴリがあります。

ユーザーは次の情報を投稿できます。

タイトル、カテゴリタグ、説明、カテゴリ、 将来の日付

画像、リンクを追加します。ビデオ

Reddit と同様に、ユーザーはストーリーに投票してコメントすることができます。コメントにも投票システムがあります。

どのように問題;

どの NoSQL データベースを使用すればよいかわかりません。サイトには Mysql のスケーラビリティの問題があります (信頼できるので、SQL を提案しないでください)。それ以上ではないにしても、約 10,000 ~ 20,000 の同時接続があります。

今私が必要とするもの;

1) ユーザーがスポーツ サブレディットにアクセスします。

NFL カテゴリやサッカー ワールド カップ カテゴリなど、未来の日付を持つすべてのストーリーを見たいと思うでしょう 。

しかし、人々はがらくたを投稿する可能性があるため、将来の日付で並べ替える必要がありますが、5 票以上の投稿で結果をフィルター処理してから、最も近い今後のイベントを表示する必要があります。

したがって、週末に試合があり、次の試合が 3 週間前の場合は、最も近い試合を最初に行う必要があります。

2)上記の問題は、1つのデータベースを使用しています

1) subreddit: Sportですべての投稿を検索します。2) NFLカテゴリのすべての投稿を検索します。3)将来の日付を持つすべての投稿を検索します。これらの投稿を投票数の多い順に並べ替え、今日に最も近い日付のストーリーを表示します。

私はcouchdbが良い候補のように見えると思いますが、よくわかりません

しかし、Cassandra、Hbase、Riak、neo4j はどうですか?

私はこれを理解しようとして夢中になっています。

大量のユーザーをスケーリングして処理できるものが必要です。

4

1 に答える 1

2

カサンドラはあなたのためにうまくいくはずです。「ユーザーはさまざまな方法で表示されるものに投票する」というのは、Diggが行っていることと非常によく似ています(そして彼らは完全にCassandraに移行しています)。

Cassandraでのゲームの名前は非正規化です。したがって、カテゴリまたはサブレディットごとに、投稿を含む行があります。一度に比較的少数の記事をクエリしている場合は、投稿情報(投票数を含む)自体を非正規化せずに、それをマルチゲットすることでおそらく逃げることができます。より大きなバッチの場合は、それを各投稿列に複製して、余分な取得を行う必要がないようにする必要があります。

TimeUUIDのようなものを使用して列を時間的に並べ替える場合、「今日の日付以降のカテゴリXのすべてを私に与えてください」は簡単です。次に、投票数のクライアント側で並べ替えます。(サーバー側を並べ替えてみませんか?スケーリングしないためです。)

于 2009-12-08T14:42:27.497 に答える