Я очень взволнован новыми функциями Mysql XMl .
Теперь я наконец могу встроить что-то вроде «объектно-ориентированных» документов в мою старую школу реляционная база данных.
В качестве примера рассмотрим пользователя, который регистрируется на вашем веб-сайте с помощью подключения к facebook. Вы можете получить объект для пользователя с помощью api графика и получить полезную информацию. Однако эта информация может сильно различаться. Некоторые поля могут быть или не быть заданы, некоторые могут быть добавлены со временем и т. Д.
Что ж, если вас просто вставили в очень специальные поля (например, отношения с друзьями, пол, фильмы ...), вы можете проецировать их в вашу схему реляционной базы данных.
Однако, используя функции XMl, вы можете сохранить весь объект внутри поля, а затем ваши различные модели могут получить доступ к данным с помощью функции ExtractValue . Вы можете сохранить все сразу, не беспокоясь о том, что вам понадобится позже.
Но какова будет производительность?
Например, у меня есть таблица с 50 000 записей, которые представляют пользователей.
У меня есть поле перечисления, в котором указано «мужской», «женский
» (или другие гендеры, чтобы быть политкорректным).
Производительность, например, выборка всех мужчин будет очень быстрой.
Но как насчет чего-то вроде WHERE ExtractValue (userdata, '/ gender /') = 'male'
?
Как изменится производительность, если объект станет больше?
Могу я как-нибудь поставить метку Индексировать указанный выбор xpath?
Как типы полей работают вместе с этой функцией / производительностью. Varchar / blob?
Нужны ли мне полнотекстовые индексы?
Подводя итог моему вопросу:
Функции MySQL XML выглядят великолепно. И я уверен, что они действительно хороши, если вы просто хотите хранить структурированные данные, которые вы извлекаете и анализируете в своем приложении.
Но как они будут сражаться в процедурах, в которых выполняется внутреннее сканирование / сортировка / сравнение / вычисления?
Может ли Mysql заменить документно-ориентированные базы данных, такие как CouchDB / Sesame?
Каковы преимущества и недостатки функций XML?
Чем и почему они лучше / хуже, чем динамическое приложение, которое хранит различные данные в виде атрибутов?
Например, таблица ключ / значение с xpath в качестве ключа и значением в качестве значения, связанного с документом сущность.
Кто-нибудь испытал это или заметил что-то достойное упоминания?