Будет ли хранение XML-данных внутри таблицы SQL архитектурным заблуждением? - PullRequest
3 голосов
/ 17 сентября 2009

У меня есть таблица SQL, которую я использую для хранения данных о продукте. К некоторым продуктам прикреплены другие данные (будь то: книги имеют количество страниц, тип обложки; продолжительность фильма; и т. Д.).

Я мог бы использовать отдельную таблицу в SQL для хранения этих пар (имя, значение).

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

Ответы [ 4 ]

3 голосов
/ 17 сентября 2009

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

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

1 голос
/ 17 сентября 2009

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

Лучше всего использовать специальный тип данных XML, если он есть в вашей базе данных. В дополнение к списку RageZ, Oracle as уже десять лет имеет XMLType (с 9i). Преимущество использования XMLType двояко. Он сообщает случайному наблюдателю, что документы в этом столбце являются XML. Он также предоставляет вам доступ к встроенным функциям, таким как проверка с помощью XML-схем, если вам это нужно. Другие функции могут оказаться полезными, если впоследствии вы начнете ссылаться на содержимое XML. Например, Oracle XDB поддерживает тип индекса XML, который может значительно повысить производительность запросов XPath.

0 голосов
/ 17 сентября 2009

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

Кроме того, в последних RDBM есть функция для обработки XML (MSSQL, Postgres, Mysql), поэтому вы все равно сможете использовать эти данные.

0 голосов
/ 17 сентября 2009

Это зависит!

Если вы ожидаете, что форма ваших продуктов будет сильно различаться, то XML - хороший способ. [Если вы используете SQL Server, вы можете индексировать поле XML.]

...