2015-06-19 6 views
-3

Мы используем NServiceBus 4.6 с транспортным средством SQL Server (2012). База данных SQL Server настроена для обеспечения высокой доступности с помощью групп доступности.Сжатие заголовков

Наши администраторы баз данных жалуются на количество ошибок, которые могут возникнуть в результате загрузки данных в нашей базе данных.

В настоящее время мы используем XML-сериализацию, поэтому я начал изучать другие доступные нам варианты сериализации (вероятно, это понравится JSON, чтобы он был доступен для чтения). Однако, начав изучать это, я понял, что наши тела сообщений обычно составляют от 600 до 1000 байт, тогда как наши заголовки сообщений регулярно находятся в диапазоне от 1200 до 1800 байт. . Таким образом, даже если я достиг больших экономий с точки зрения размеров корпуса, он не будет производить масштабные улучшения, которые я ищу.

Вопрос

Учитывая, как я понимаю, что заголовки не должны быть читаемый когда сообщения хранятся в базе данных SQL Server, есть ли способ, что я могу сжать их?

Или другие стратегии для уменьшения объема данных, которые мы добавляем и удаляем из этой базы данных? (Оставаясь на NSB 4.6 в настоящее время)


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

a Поскольку каждое сообщение, по крайней мере, входит в таблицу очередей, затем удаляется из этой таблицы и помещается в таблицу аудита, прежде чем мы удалим старые записи аудита, и у нас появилось много сообщений, мы много помещаем в журнал транзакций SQL Server.

+0

Вы смотрите на что-то вроде zlib? Если вы чувствовали себя особенно причудливо, вы могли бы добавить функции CLR и/или sprocs в свой db, чтобы де/сжатие было невидимым (т. Е. Данные были бы сжаты, но вы получили бы доступ к ним через объекты CLR, чтобы получить несжатую версию). –

ответ

2

Вы можете сжимать и распаковывать содержимое сообщений через мутатор. Пример мутатора фактически основан на сжатие сообщения, так должен быть простым решением для этой части:

http://docs.particular.net/samples/messagemutators/#code-walk-through-transportmessagecompressionmutator

Вы можете, вероятно, добавить код, который будет делать то же самое с заголовками, сжимая свой пользовательские атрибуты, прежде записывая их и распаковывая их перед их чтением.