web-dev-qa-db-ja.com

リモートデータベースサーバーに必要な最小帯域幅

会社用の小さな倉庫アプリケーションを作成したいと思います。全国の8つの販売拠点に分散する中央倉庫があります。彼らは社内の解決策を主張します。中央のmySQLdb Linuxサーバーをセットアップし、ブランチを接続して売上を保存することを考えています。

ブランチからデータベースへのクエリは最小限で、おそらく1時間あたり10回です。ただし、ピーク時に各販売データ(製品ID、顧客ID)を中央データベースに最大5分に1回保存できるようにするには、すべてのブランチが必要です。

私の質問は、単純な24mbps/768kbps DSL回線で逃げることができるかということです。そうでない場合、帯域幅の要件は何ですか?必要に応じて、負荷分散ルーターを使用して追加の回線を組み合わせることができますか?サーバーハードウェアの仕様をいくつか提案できますか?

これを少し明確にしましょう。必要なのは、何かが販売されたときにデータ(prodctID、itemsSold)を保存し、他のストアでの可用性を取得することだけです。たとえば、中央倉庫から再供給したり、他の支店に何かを送ってもらうために、他の支店で特定の製品の数量を返品する場合などです。ブランチが何かから外れているときはいつでも、1つおきのブランチ(7ブランチ-7行)ごとに1行(branchName、itemQuantity)を推測しています。送信されるデータは最小限だと思いますが、オーバーヘッドがあるかどうかはわかりません。どうすればそれを見積もることができますか?

1
user66734

クエリおよび/またはトランザクションの数と、クエリおよび/またはトランザクションごとのデータセットのサイズに特定の期間のクエリおよび/またはトランザクションの数を掛けて帯域幅の使用量を測定または推定することで、この質問に答えることができるのはあなただけです。時間の。

4
joeqwerty

多くのデータを転送することはないので、あまり多くの帯域幅は必要ありません。さらに、f.e。を使用した圧縮SSHトンネルが役立つ可能性があります。

私の経験では、遅延はリモート(DB)アプリケーションにとってはるかに大きな問題です。

2
FloE

クラスタのようなソリューションでローカルMySQLインスタンスを設定することもできます。変更の伝播は、データベース自体によって非同期的に管理されます。

1
rabbit

プロジェクトの範囲が狭いことを考えると、実際には、消費する帯域幅の種類とそれにかかる時間を把握するのはかなり簡単なはずです。

クエリの送信

これは計算が非常に簡単です。これがあなたのクエリであると仮定しましょう:

_SELECT COUNT(*) as Qty, Branch
FROM ProdsTable
GROUP BY Branch
ORDER BY Branch
_

79文字です。 79文字= 632バイト、24Mbのインバウンド接続があるため、クエリは帯域幅が制限される前に_24*1024*1024/632_同時クエリ(39819)を実行します。ただし、次の理由により、これにどれくらいの時間がかかるかはわかりません。

  • 利用可能な帯域幅は、クライアント接続のアップストリーム速度によって明確に決定されます
  • 特にクエリを送信する前に接続を開始する必要がある場合は、クエリで行われる追加のヘッダーと認証があります

しかし、それはかなり速いはずです。

データの取得

仮定しましょう:

_productID CHAR(20)
itemsSold INT
_

これは、各行の合計20 +4バイトです。 7行= 7*(20+4) = 168バイト。 768Kbのアウトバウンド帯域幅があるため、帯域幅の最後で圧縮され始める前に、そのサイズの4681個の要求を同時に送信できます。

今私が今言ったことをすべて忘れてください

それだけではありません。すでに触れたように、認証、接続の開始にはオーバーヘッドがあり、DSLリンクでの遅延、競合率の問題の可能性があります。スイッチドネットワークではないため、TCP再アセンブリと再送信は、すべてのクエリで必要になります。これは、知覚される速度に劇的な影響を与える可能性があります。

本当に知る唯一の方法は試してみることです。

1
Mark Henderson

帯域幅の要件は、クエリの頻度だけでなく、クエリの出力とテーブルのサイズにも関連している必要があります。たとえば、1つのクエリが1つの行を返し、別のクエリが数千の行を返す場合があります。したがって、データサイズとクエリの種類のおおよその値がない限り、具体的な答えはありません。

0
Khaled