SQL Server: хранилище XML переменной длины - PullRequest
2 голосов
/ 09 декабря 2011

Я нахожусь в процессе написания приложения, которое взаимодействует со сторонним приложением.

Стороннее приложение будет передавать моему приложению несколько необработанных запросов XML.Я хотел бы сохранить каждый из этих запросов в журнале сообщений в моей БД.

Какой самый эффективный способ хранения данных переменной длины?VARCHAR(MAX)?NVARCHAR(MAX)?

Если один из них лучше другого (или есть другой вариант, который мне не хватает), пожалуйста, объясните, почему это лучший выбор.

Ответы [ 4 ]

7 голосов
/ 09 декабря 2011

Поскольку вы используете SQL Server 2K5, лучшим типом данных для хранения данных XML является xml.

Это обеспечивает функции синтаксического анализа и проверки схемы. Это также позволяет вам индексировать данные XML позже, если это необходимо.

4 голосов
/ 09 декабря 2011

XML-швы - очевидный выбор данных при работе с XML, но не всегда.

Взгляните на эту статью Роберта Шелдона. Работа с типом данных XML в SQL

В некоторых случаях не следует использовать тип данных XML, а вместо этого использовать хранилище больших объектов - VARCHAR (MAX), NVARCHAR(MAX) или VARBINARY (MAX).Например, если вы просто храните свои XML-документы в базе данных и извлекаете и обновляете эти документы в целом, то есть если вам никогда не требуется запрашивать или изменять отдельные компоненты XML, вам следует рассмотреть возможность использования одного из типов данных больших объектов.,То же самое касается файлов XML, которые вы хотите сохранить в их первоначальном виде, таких как юридические документы.Если вам нужно сохранить точную текстовую копию, используйте хранилище больших объектов.

2 голосов
/ 09 декабря 2011

Я использовал тип данных XML для этого типа вещей Ссылка MSDN - XML ​​DataType 2005

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

Большим плюсом является то, что я не конвертирую и не балуюсь с фактическими данными, а не представляю тонких ошибок с актуальным XML.

Большой плюс, если вы хотите что-то сделать с XML, как сделать это.

Недостатком является то, что вы должны знать, что столбец содержит данные XML, и вам необходимо кодировать его в вышестоящих приложениях.

1 голос
/ 09 декабря 2011

Добавление к ответу Юка:

  • VARCHAR (MAX)

XML означает Unicode, и если вы выберете не-Unicode хранилище, то потеря данных почти наверняка

  • NVARCHAR (MAX)

уместно, если вы хотите регистрировать только данные XML

  • XML

если вы хотите запросить содержимое XML позже

  • типизированный XML с XML SCHEMA COLLECTION

только если у вас есть фиксированная XML-схема (XSD), которая никогда не изменится. (ALTER XML SCHEMA COLLECTION не поддерживает обновление или удаление объектов XML, как я понимаю)

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