我有即将到来的项目,我们需要应用程序将压缩数据发送到数据库和其他应用程序。压缩可以使用诸如GZIP或ZLIB之类的算法。
有人可以给我一些帮助,特别是对于可以压缩通信应用程序和数据库之间的数据流量的VCL组件(或ActiveX)吗?
只考虑聊天或IM应用程序,但在每个数据流量之间使用压缩。
我的环境:
- Delphi 7或BDS 2006
- 将使用Indy进行申请之间的沟通
- 将使用ADO将应用程序传送到数据库中
- TCP / IP或HTTP将用作协议
谢谢,
德尔斯
答案 0 :(得分:3)
如果使用Indy,您可以使用任何压缩算法来压缩字节或流。就像ZLib压缩中的构建一样。那是因为你控制了通信的两面。连接到数据库时会有所不同。只有在数据库服务器了解压缩时才能进行压缩。通常您不压缩,但让它由您正在使用的数据库驱动程序处理。所以这取决于他们提供的选项。
http://www.swissdelphicenter.ch/torry/showcode.php?id=1617是如何使用Delphi的ZLib压缩文件流的示例。压缩要与Indy一起发送的流大致相同。
答案 1 :(得分:3)
我不知道有什么方法可以在传输过程中压缩数据,并让数据库在另一端自动理解和解压缩,只是为了节省带宽,如果这就是你所说的。我只建议压缩数据以发送到您的数据库,如果它是一个大的BLOB或文本块。如果是这样,只需像Lars提到的那样压缩它并将压缩结果存储为BLOB字段。但对于普通数据,最好将其解压缩并保持正常的SQL格式。这样,您的数据库可以优化其存储速度并正确索引。