0

我有即将到来的项目,我们需要应用程序将压缩数据发送到数据库和其他应用程序。压缩可以使用 GZIP 或 ZLIB 等算法。

有人可以给我一些帮助,特别是对于可以压缩通信应用程序和数据库之间的数据流量的 VCL 组件(或 ActiveX)吗?

只是考虑聊天或 IM 应用程序,但在每个数据流量之间使用压缩。

我的环境:
- Delphi 7 或 BDS 2006
- 将使用 Indy 在应用程序之间进行通信
- 将使用 ADO 将应用程序与数据库进行通信
- TCP/IP 或 HTTP 将用作协议

谢谢,
德尔斯

4

2 回答 2

3

如果您使用 Indy,您可以使用任何压缩算法来压缩字节或流。就像 ZLib 压缩中的构建一样。那是因为你控制着沟通的双方。连接到数据库时是不同的。只有当数据库服务器理解压缩时,您才能进行压缩。通常你不压缩,而是让它由你正在使用的数据库驱动程序处理。所以这取决于他们提供的选项。

http://www.swissdelphicenter.ch/torry/showcode.php?id=1617是一个关于如何使用 Delphi 的 ZLib 压缩文件流的示例。使用 Indy 压缩要发送的流大致相同。

于 2009-03-24T09:35:23.010 回答
3

我不知道有什么方法可以在传输过程中压缩数据,并让数据库在另一端自动理解和解压缩它,只是为了节省带宽,如果这就是你所说的。如果它是一个大的 BLOB 或文本块,我只建议压缩数据以发送到您的数据库。如果是这样,只需像 Lars 提到的那样压缩它并将压缩结果存储为 BLOB 字段。但是对于普通的数据,最好还是解压后的正常SQL格式。这样,您的数据库可以优化其存储速度并正确索引它。

于 2009-03-24T11:42:20.833 回答