Может ли мускул индексить XML, лежащий в поле...

A-Lex[FM]

Web/Highload/DataScience
Может ли мускул индексить XML, лежащий в поле...

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

MS SQL умеет строить индексы по XML данным, хранящимся в базе. Может ли такое MySQL?
 

Wicked

Новичок
хранение объектов с динамическим кол-вом полей все таки реализуемо и без сериализации - нужно хранить св-ва в столбик в отдельной таблице.

если уж приспичило: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html , но фулскан тебе гарантирован :)

можно сделать комбинированный вариант: данные хранятся сериализованными в xml, но некоторые части, по которым поизводится поиск, вынесены в отдельные поля:
... | <a><b>asd</b><c><d id="132"></c></a> | asd | 132 |
но принесение нормализации в жертву скорости, что есть не очень хорошо.

Кстати, какого рода тебе поиск нужен?

-~{}~ 23.05.07 14:45:

Alexandre
фразу "индексирование с исползованием XML функций" я что-то не понял :) я не нашел, где там говорится про индексы.
 

A-Lex[FM]

Web/Highload/DataScience
Мне нужно несколько вариантов поиска и выбора соответствующих записей.
1. Глобальный поиск по всем полям в документах (fulltext)
2. Поиск внутри представления, как по всем полям, так и конкретному полю.
3. Выборка записей по данным, содержащимся в сериалайзнутом виде. (в принципе, тоже что и пункт 2.)

Что же касается хранения данных в отдельной таблице, это идея, просто пользоваться связкой id_value <-> id_document
Но есть у этого варианта свои минусы. Может есть ещё идеи?
 
Сверху