2012-01-09 7 views
9

すべての重要なデータを格納するためにpostgres(スレーブ付きの単一のデータベース)を使用するJAVA Webアプリケーションがあります。レディス、モンゴー、ヘーゼルキャスト?

ここでは、単一のサーバーセットアップから複数のサーバーに移行しているため、新しい要件を満たすためにいくつかの変更を加える必要があります。

1)ロードバランシングとパーティション許容のための非粘着セッションID。

2)すべてのWebサーバーからアクセスできる頻繁に読み取られるデータのキャッシュ(In Memory/Memcacheの代替)。

3)キュー(電子メール、SMS、クラスタ上で実行するタスク)。通常、それらはすべてxml APIまたはスクリーンスクレイピングで実行する必要があります。タスクの重複処理を回避
は重要ですが、時にはそれがAPIのリクエストとレスポンス(XMLたくさんの、行の多くが、列の数が少ない)の:-)

4)永続ストレージを発生することがあります。 (おそらく、データセットを小さく保つために古い要求と応答を取り除いてアーカイブする)。

5)共通の場所にログを記録する。テーブルは成長し続けるでしょう。また、私はそれらを停止せずに生産のログにアクセスするためのツールが必要になります。時間や検索文字列に基づいて何らかの検索が可能でなければなりません。

これらのすべての要件に対処し、可能な選択肢として、赤目、モンゴー、ヘイルキャスト(個人的な好みの順に)を見ている単一のソリューションが必要です。

その他の重要な考慮事項 1)われわれのコードへの侵入が少なくなる。 2)簡単なバックアップ/複製戦略。少なくともマスタースレーブ。 3)管理性、コミュニティ、試用版とテスト済み(運用中)。

この機能と要件のすべてまたはほとんどを実行できるのはどちらですか?

EDIT - 私はtomactのためのセッションマネージャを担保

  1. Redisのをやりました。
  2. キャッシュ用のレディース
  3. redisに裏打ちされたJesque(レスプスのJavaバージョン)。私はMongoDBの者の視点からこれらのいくつかに対処することができます
  4. Postgresの
  5. Log4j2

答えて

4

に裏打ちされたSLF4J。

最初に気付いたことは、単一のサーバーセットアップから複数のサーバーセットアップに移行していることです。 MongoDBはレプリケーションとシャーディングをセットアップするのが非常に簡単です。レプリケーションとシャーディングは、Mongoの他の機能と共に、あなたが何をするために何を達成するのかを助けることができます。

まず、それのための感触を得るために少しのドキュメントを見てみましょう:

Replica SetsSharding

要件に基づいていくつかの他の思考:

  • 他に比べてさまざまなデータストアを使用してスケーリングする方法 mongoの商品ハードウェアで水平方向にスケーリングする方法は、非常に簡単にセットアップ、スケール、および維持することができます。 つまり、 をDBAでなくアプリの構築に費やすことができます。
  • mongoを使用する場合は、キャッシングレイヤをスキップすることもできます。 MongoDBはメモリマップファイルを使用します。つまり、作業セット を物理メモリに保持できる場合は、基本的にメモリキャッシュが になります。
  • MongoDBはロギングに非常に適しています。ユーザーは通常、この種のアプリケーションに対して安全な の書き込みを必要としません。したがって、書き込みのためにデフォルトのFire-and-forgetモデルを使用すると、パフォーマンスは優れています。
  • これは、あなたのコードに侵入することを意味するかどうかは議論の余地がありますが、典型的なオブジェクトリレーションマッパーの場合と比べて、Mongoはデータへの影響をあまり受けません。それはその自然な使用可能な状態、オブジェクトにデータを格納することができます!

希望、歓声。

+0

現在、私は分散データベースに興味はありません。 Mongoは、規模を変えなければならないとき、将来のポストグルのライバルのように見えます。 – gladiator

2

私はuse sqlと言います。リレーショナルデータベースは何年も完成しています。私が見る限り、データソリューションは「特定の」目的ではなく(NOSQLがカバーしようとしているもの)、「オールインワン」のシナリオのために必要です。それはSQLのためのものです。

名前を付けている3つの名前から選択する場合、Mongodbが最も近いデータストアになりますが、を使用すると、が使用されます。

0

Redisが最初の3つの要件、つまりスティッキーではないセッション、キャッシュ、キューを解決することは間違いありません。

集中型ロギングでは、それは簡単な使用例ではありませんが、Redisで実行できます。ここにはblog postの説明があります。 NoSQLの達人Alex Popescuは、このアプローチについてのいくつかの予約をthis postに挙げていることに注意してください。

永続性については、persistence optionsのRedis.ioの概要がありますが、いくつか問題はありますが実行可能です。

関連する問題