2016-08-18 3 views
4

私は、ユーザーが計算のためにジョブを送信できる社内Webサイトを設計しています。私の設計における重要な要素は、たとえシステム障害が発生しても、ジョブが完了するまでジョブをキューに保持することです。ジョブキューにデータベースを使用するのはいつか意味がありますか?

インターネットは、実際にはデータベースの目的ではなく、Redisのようなキー/バリューストア(または、Kue for NodeのようなRedisを使用するジョブキュー)に適しているからです。 js)。この設計の目的は、ジョブ・キュー内にあるように、かなり一時的なデータの読取り/書込みをデータベースに負担させないことです。私の使用例では、データベースの使用量はかなり少なく、データベースが提供するデータの永続性が私がここで探している重要な機能だと思われます。私はいくつかのキー/値を格納することがわかってきました

私の読書で

は、Redisのように、機能を保持しているが、本当に、システムがダウンした場合には、すべてのデータが復元可能であることを確認するために構築されていません。

は、私はここで何かが足りないか、権利については、この音をしていますか?私はいくつかのキー/値を格納することがわかってきた私の読書で

+0

私は、これはredis'あるいは多分 '' mongo'のような「軽い」、データ・ストレージ・システムのためのより良い左であると言っにインターネットに同意することを言わなければならないでしょう。私の質問はA.)会社はすでにDBを使用していますか? B.)あなたがそれを使用している場合、あなたはその読み書き時間にどのくらいの影響を与えますか? – Derek

+0

私は 'rabbitmq'もお勧めします。 – sobolevn

+0

私は自分のデータベースにmongoを使用していますが、これまではデータベースを利用しているアプリケーションです。読書の時間にどれくらいの影響があるかはまだ分かりません。 – Leif

答えて

1

、Redisのように、持続機能 を持っていますが、システムがダウンした場合には、本当にすべてのデータが 回復可能であることを確認するために構築されていません。

Redisでは、データはバックグラウンドスレッドを使用してメモリからディスクに永続化されます。実際にはシステムを停止してもデータベースは破損しませんが、システムがスナップショットの前または最中にディスクに移動し、最後に成功したスナップショットの後に作成されたデータが失われるという問題があります。

あなたはRedisのサーバーが起動して、時間の99.9%を実行していることを確認することができます場合は、これは大きな問題ではありませんが、とにかく、問題が存在します。

一日の終わりには、私の最高のアドバイスは、あなたが仕事のための適切なツールを使用する必要があります:ジェネラリストデータベース、いずれかのNoSQLまたはSQLは、ジョブエンキューのために作られていません。既にこれを行う既存のツールをRabbitMQのように使用してください。

+0

私は、サーバが安定していてチャンスがスリムであっても、ANYデータを失う可能性について少しでも不安です。物事が計画どおりに行かない場合、私の業界の人々はかなり苛立つことがあります。別のオプションは、長期的には、ジョブキューによって負担取得されていません(でも、リモートサーバー上の)別のデータベース内のジョブキュー情報ので、カウント永続的な情報と、「良い」データベースを格納するだろうか? – Leif

+0

@Leifいいえ、ソリューションは信頼できるメッセージキューを使用しています。私はあなたに1つを指摘しました:RabbitMQ。 Azureにいるなら、Azureサービスバスも非常に強力です。 –

関連する問題