2

私は最近 Java でいくつかのことを行うプログラムを作成しました。これは主に、connector/j を使用して mysql データベースからデータを取得することに依存しています。データベースはリモート サーバー (オランダでホスト) にあります。これにより、レイテンシの問題が発生します。私は最近、JSON を Java と組み合わせて使用​​できることに気付きました。

それで、私の質問: ある種の API である json を返すために http リクエストを行うフロントエンド スクリプトがある場合、これはリモート サーバー上の mysql への直接リクエストを使用するよりも高速ですか? 彼らはこれの欠点ですか?

4

1 に答える 1

1

技術的には、答えは「場合による」です:)

ここでいくつかの私の考え...

私の経験から言えば、主にセキュリティ上の理由から、DB がリモート接続に対して開かれているケースは非常にまれです。

一方、「直接」比較を行う場合、ここでは http オーバーヘッドがあるため、JSON は遅くなると予想されます + JSON は本質的にデータ表現のテキスト プロトコルです (シリアル化されたバイナリと比較すると、効率的にエンコードされていない読み取りデータ)。

さらに、このソリューションでは、データベースと Java クライアント コードの間に何らかの HTTP サーバーが必要になります。データ トランスポートの問題も確認する必要があります (プロセス間通信は一般に低速です)。そのため、http サーバーを db サーバーから遠く離れた場所に配置すると、データを取得するのに多くの時間がかかる可能性があります。

言及すべきことはまだたくさんあると言っていましたが:一般に、SQL よりも柔軟です。

  • データキャッシング。場合によっては、データを事前にキャッシュして、データベースに頼らないことさえできます。

  • データベースへのトラフィックが実際にどのように見えるかを把握します。たとえば、Oracle でプレーンな JDBC を使用している場合、db に追加のリクエストを発行して (sniffer を使用して確認できます)、追加のデータ チャンクを取得できる場合があります。それは有名なループで起こります:

    while( resultSet.next() ) { ///....自分のことをする }

それは通常、大きな結果のために起こります。

  • クエリ自体を最適化することで、合計処理時間を大幅に改善できるかもしれませんが、それは別の話です。

私にとっては、通常、db とリモート クライアントの間で何かを維持する価値があります。

お役に立てれば

于 2012-09-11T06:31:53.360 に答える