技術的には、答えは「場合による」です:)
ここでいくつかの私の考え...
私の経験から言えば、主にセキュリティ上の理由から、DB がリモート接続に対して開かれているケースは非常にまれです。
一方、「直接」比較を行う場合、ここでは http オーバーヘッドがあるため、JSON は遅くなると予想されます + JSON は本質的にデータ表現のテキスト プロトコルです (シリアル化されたバイナリと比較すると、効率的にエンコードされていない読み取りデータ)。
さらに、このソリューションでは、データベースと Java クライアント コードの間に何らかの HTTP サーバーが必要になります。データ トランスポートの問題も確認する必要があります (プロセス間通信は一般に低速です)。そのため、http サーバーを db サーバーから遠く離れた場所に配置すると、データを取得するのに多くの時間がかかる可能性があります。
言及すべきことはまだたくさんあると言っていましたが:一般に、SQL よりも柔軟です。
データキャッシング。場合によっては、データを事前にキャッシュして、データベースに頼らないことさえできます。
データベースへのトラフィックが実際にどのように見えるかを把握します。たとえば、Oracle でプレーンな JDBC を使用している場合、db に追加のリクエストを発行して (sniffer を使用して確認できます)、追加のデータ チャンクを取得できる場合があります。それは有名なループで起こります:
while( resultSet.next() ) { ///....自分のことをする }
それは通常、大きな結果のために起こります。
- クエリ自体を最適化することで、合計処理時間を大幅に改善できるかもしれませんが、それは別の話です。
私にとっては、通常、db とリモート クライアントの間で何かを維持する価値があります。
お役に立てれば