Используете ли вы сжатие данных для связи между приложением и базой данных? - PullRequest
0 голосов
/ 24 марта 2009

У меня есть предстоящий проект, где нам нужно приложение для отправки данных о сжатых данных в базу данных и в другое приложение. Сжатие может использовать алгоритм, такой как GZIP или ZLIB.

Может кто-нибудь подсказать мне какую-то помощь, особенно для компонента VCL (или ActiveX), который может сжимать трафик данных между взаимодействующим приложением и базой данных?

Просто думаю о чате или приложении чата, но использую сжатие между каждым трафиком данных.

Мое окружение:
- Delphi 7 или BDS 2006
- будет использовать Indy для связи между приложением
- будет использовать ADO для передачи приложения в базу данных
- TCP / IP или HTTP будет использоваться в качестве протокола

Спасибо
Dels

Ответы [ 2 ]

3 голосов
/ 24 марта 2009

Мне неизвестен какой-либо способ сжатия данных во время передачи, и база данных автоматически понимает и распаковывает их на другом конце просто для экономии пропускной способности, если вы об этом и говорите. И я бы рекомендовал только сжимать данные для отправки в вашу базу данных, если это большой BLOB или блок текста. Если это так, просто сожмите его, как упоминал Ларс, и сохраните сжатый результат как поле BLOB. Но для обычных данных лучше оставить их распакованными и в обычном формате SQL. Таким образом, ваша база данных сможет оптимизировать свое хранилище для скорости и правильно проиндексировать.

3 голосов
/ 24 марта 2009

Вы можете использовать любой алгоритм сжатия для сжатия байтов или потока, если вы используете Indy. Как и в сжатии ZLib. Это потому, что вы контролируете обе стороны общения. Это отличается при подключении к базе данных. Вы можете сжать, только если сервер базы данных понимает сжатие. Обычно вы не сжимаете, а позволяете обрабатывать драйверы базы данных, которые вы используете. Так что это зависит от вариантов, которые они предлагают.

http://www.swissdelphicenter.ch/torry/showcode.php?id=1617 - пример того, как сжимать файловый поток с помощью ZLib Delphi. Сжатие потока для отправки с помощью Indy примерно одинаково.

...