0

圧縮されたデータをデータベースや他のアプリケーションに送信するアプリケーションが必要な次のプロジェクトがあります。圧縮には、GZIP や ZLIB などのアルゴリズムを使用できます。

特に、通信中のアプリケーションとデータベース間のデータ トラフィックを圧縮できる VCL コンポーネント (または ActiveX) について、誰か助けてもらえますか?

チャットや IM アプリケーションについて考えただけですが、各データ トラフィック間で圧縮を使用します。

私の環境:
- Delphi 7 または BDS 2006
- アプリケーション間の通信に Indy を使用します -
データベースへのアプリケーションの通信に ADO を使用します
- TCP/IP または HTTP をプロトコルとして使用します

ありがとう、
デルス

4

2 に答える 2

3

送信中にデータを圧縮する方法を私は知りません。それがあなたが話しているのであれば、帯域幅を節約するためだけに、データベースにデータを自動的に理解させ、もう一方の端で解凍させます。また、大きなBLOBまたはテキストのブロックである場合にのみ、データベースに送信するデータを圧縮することをお勧めします。その場合は、Larsが述べたように圧縮し、圧縮された結果をBLOBフィールドとして保存します。ただし、通常のデータの場合は、解凍して通常のSQL形式のままにしておくことをお勧めします。そうすることで、データベースはストレージを最適化して速度を上げ、適切にインデックスを作成できます。

于 2009-03-24T11:42:20.833 に答える
3

Indy を使用している場合は、任意の圧縮アルゴリズムを使用してバイトまたはストリームを圧縮できます。ZLib 圧縮のビルドのように。これは、コミュニケーションの両側を制御するためです。データベースに接続する場合は異なります。データベース サーバーが圧縮を認識している場合にのみ圧縮できます。通常、圧縮は行いませんが、使用しているデータベース ドライバーで処理できるようにします。それは彼らが提供しているオプションに依存します。

http://www.swissdelphicenter.ch/torry/showcode.php?id=1617は、Delphi の ZLib を使用してファイル ストリームを圧縮する方法の例です。Indy で送信するストリームの圧縮は、ほぼ同じです。

于 2009-03-24T09:35:23.010 に答える