2011-04-08 9 views
4

2台のリモートコンピュータを接続する手段として、一部のリモートサーバ上で動作するmysqlデータベースを使用するのは悪い習慣ですか?たとえば、リモートdbの特定の行にbox1ポーリングを設定すると、box2によってポストされた値がチェックされます.box2が値をポストすると、box1はa、b、cを実行します。 アドバイスありがとうございます。ソケットプログラミングの代わりにmysql db?

答えて

4

ZeroMQのようなものを使用することを検討してください。これは、ほとんどの言語でバインドされたソケットより使いやすい抽象です。 intro documentationと、アプリケーションで使用できるさまざまなパターンのmany examplesがあります。

私はこのためにデータベースを使用する誘惑を理解することができますが、単にクライアント間の信号を送るために継続的に書き込み/ポーリングを行うというアイデアはIOを浪費し、接続を結びつけます。さらに重要なことは、 /別の人(または2年間であなた自身)によってデバッグ。

+0

これは非常に興味深いものです、私はここに私を指してくれてありがとう、今、ビデオの概要を見ています...私はまだ誘惑されています:F(コメントはここではないここで意味された) – brux

3

できます。あなたが何か複雑なものを作っていたら、私はそれには注意しますが、それはうまくいきます。あなたは一度しか物事を処理する必要はありませんが、それほど難しいことではありません。

あなたがやっていることは、メッセージキューと呼ばれ、それに特有のオープンソースプロジェクトがあります.MySQLで構築されたものもあります。

3

はい?

あなたは状況に仲介人を配置することによってコードのポイントを難読化しています。あなたが知っているものをあなたが知らないものを使用しようとしているように聞こえます。これはかなり正常です。問題が解けるように見えるからです。

+0

正しいことですが、ソケットタスクとは対照的に、マルチスレッドのmysqlタスクのアイデアは、私にはもっと魅力的です。ソケットバージョンを安全にすることは、はるかに難しいでしょう。 – brux

+0

確かに;しかし、それが最良のアイデアではないことをあなたが認識していることは少なくとも良いことです。しかし、市場への時間は、常に最高の意思を敗北= D – Tejs

1

2台のコンピュータ(送信者 - 受信者)しかない場合は、の応答時間が速い場合はが悪い練習です。それ以外の場合は問題ありません。ダイレクトソケット接続はより良いでしょうが、本当に必要がなければ時間を無駄にしません。

2台以上のマシンがある場合、またはフォールトトレランスが必要な場合は、実際にには仲介人が必要です。マシン間で必要なシグナリングに応じて、仲介者は単純なキー値ストア(たとえば:memcached、redis)またはメッセージキュー(例:専用のメッセージキューを使用できますが、MySQLは2つのキュー大きなトラフィックを持つ別のサイト)

+0

どのくらい速くmysqlデータベースで投票できますか?それは私のispの設定によって制限されていますか? – brux

+0

は、サーバーと構成によって異なります。あなたはそれを測定する必要があります;) –

関連する問題