Моделирование: Xml и реляционная база данных

Мне интересно, есть ли лучшие практики для решения между тем, когда система должна быть смоделирована с использованием XML и когда она должна быть смоделирована с использованием реляционной базы данных (я знаю, что вы можете хранить XML в базе данных, но существует огромная разница между моделирование системы с использованием нормализованных таблиц db и моделирование системы с использованием XML-схемы). Для определенности, скажем, вы моделировали упражнения в тренажерном зале. "Живой пресс" на самом деле является семейством exericses, а не одним упражнением. Вы можете лечь на скамейку или мяч. Вы можете заставить вас вернуться в квартиру или разрешить обман. Вы можете использовать гантели, штанги, кабели или универсальную машину. Если вы используете гантели, вы можете чередовать оружие или одновременно нажимать. У вас может быть наклонная, отклоненная или плоская поверхность. Мое мышление состоит в том, что из-за сложности (и возможной сложности, о которой я еще не думал), что лучше всего смоделировать с помощью xml. Это хорошая оценка? Какие еще важные факторы следует учитывать?

Добавление: Когда я сказал XML, одной из тех технологий, которые у меня были в голове, была RDF (хотя я не хотел ограничивать это обсуждение), которые, казалось бы, имели бы плюсы и минусы по сравнению с реализацией дизайн в таблицах базы данных. Я не уверен, что общая антипатия, испытываемая некоторыми пользователями к XML, будет распространяться вплоть до RDF (возможно, так), но, возможно, это поможет немного сфокусировать разговор.

Ответ 1

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

http://www.rpbourret.com/xml/XMLAndDatabases.htm

Бывают случаи, когда встроенные xml DB демонстрируют огромные преимущества RDB, когда содержимое, которое нужно сохранить, является полуструктурированным. @Smout, проще и безопаснее хранить данные клиент-контракт-клиент в RDB, но что происходит, когда вы также должны хранить контракт?

RDF контрастирует как с реляционными моделями, так и с xml-моделями. RDF предназначен для "открытого мира" представления данных, в которых вы никогда не можете быть уверены, что знаете все в то время, когда вы должны вычислять. Тот факт, что RDF может быть выражен в xml, является удобным, но случайным. Он также имеет другие выражения.

Сделайте некоторые чтения в EMC XML Technologies и MarkLogic.

Ответ 2

В 1960-х годах были разработаны/задуманы/разработаны системы управления данными, которые были основаны на идее, что данные могут быть организованы иерархически. IMS является одним из них. Ошибки/недостатки этих систем сразу же стали ясными для тех, кто интенсивно использует их (например, они, как правило, приводят к "искажениям запросов": в иерархических системах часто бывает легко запросить, какие контракты существуют для данного клиента, и в то же время практически невозможно запросить, какие клиенты участвуют в данном контракте).

Все эти недостатки в конечном итоге привели к изобретению реляционной модели.

Итак, если вы хотите узнать, подходит ли XML в качестве решения для ЛЮБОЙ ПРОБЛЕМЫ УПРАВЛЕНИЯ ДАННЫМИ, спросите себя: "XML-иерархический по своей природе или нет?".

Успех XML на рынке только доказывает правильность наблюдения, что "те, кто не знает историю, обречены повторить ее".

Ответ 3

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

Если вам нужно иметь дело с многопользовательской средой, вы все равно можете использовать XML, но вам нужно будет создать для него сложный бизнес-уровень, сохраняя следы изменений всеми пользователями и в основном добавляя множество многопользовательских функций, которые стандартная RDBMS предлагает в качестве стандарта. Если у вас много данных, существует риск того, что ваш XML файл станет слишком большим. Стандарт XML немного вздут, и если вам нужно работать с файлами XML по 500 МБ каждый, я надеюсь, что у вас много терпения.

Существуют, конечно, другие альтернативы. Я создал простой веб-искатель, который будет загружать веб-страницу, извлекать все URL-адреса, а затем повторять это действие для каждого URL-адреса. Он использовал около 20 потоков, которые все загружали страницы, а количество URL-адресов увеличилось до миллионов. Я хотел бы избежать загрузки одного URL-адреса дважды, поэтому мне пришлось отфильтровывать дубликаты. Использование XML было бы кошмаром, учитывая объем данных. Использование базы данных было излишним, поскольку мне нужна была только одна таблица с единственным полем: URL. Поэтому я написал специальный алгоритм хэширования и создал собственное решение для хэширования на основе файлов. Это было очень быстро, проверяя несколько тысяч URL-адресов в секунду, если им не нужно было загружать эти страницы...

В ситуациях, подобных этому упражнению, я бы начал с создания простой XML-схемы с помощью некоторого инструмента моделирования для XML. (Altova XMLSpy хорош в этом.) Когда я думаю, что мои данные будут хорошо вписываться в этот XSD, я начинаю создавать базу данных, где каждый элемент будет преобразован в таблицу. В результате у меня была бы хорошая реляционная база данных плюс некоторое определение для формата XML, который можно использовать для импорта/экспорта одних и тех же данных в/из базы данных.

Ответ 4

Ваш пример упражнений - хороший, но я думаю, вы достигли неверного вывода.

Я думаю, что из-за сложность (и возможная сложность что я еще не думал), что это лучше всего смоделировать с помощью xml.

Я думаю, что этот вывод основан на ошибочном предположении, что XML обеспечивает большую гибкость моделирования, чем реляционная модель. Фактически (как умело описывает Erwin Smout) реляционная модель по своей природе более гибкая, чем XML, потому что XML строго иерархический, тогда как реляционная модель допускает отношения "многие ко многим" произвольной сложности.

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

Ответ 5

Как насчет "ни одного из вышеперечисленных"?

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