#1 23.05.07 13:46
[MySQL] Может ли мускул индексить XML, лежащий в поле...
Тоесть, мне надо организовать систему документооборота, но есть проблема, что у документов одного и того же типа могут быть разное колличество полей, а некоторые поля могут создоваться динамически.
Такую проблему можно решить, если серилайзить данные и класть их в текстовое поле. Но вот незадача. Как потом сделать поиск.
Допустим мне нужно найти все документы, у которых есть определённая запись. Если использовать сериалайз, то придётся брать каждую запись, ансериалайзить каждую запись и уже там искать. Это очень долго и не удобно.
MS SQL умеет строить индексы по XML данным, хранящимся в базе. Может ли такое MySQL?
Offline
#2 24.05.07 10:37
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
>"серилайзить данные"
Данные изначально в каком формате? XML? а зачем "сериалайзить"?
>MS SQL умеет строить индексы по XML данным, хранящимся в базе. Может ли такое MySQL?
Может. Но едва ли это хорошее решение. Подумайте раза три перед тем как выбрать этот путь.
Offline
#3 24.05.07 10:39
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
данные - это просто массив пост, который надо хранить в базе, у разных документов разный набор полей, а у полей могут быть разные тыпы данных.
поэтому я думаю их хранить в xml. Проблема заключается в поиске по этим данным. в индекс то они не попадут :(
Offline
#6 24.05.07 10:59
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
A-Lex, Ну тогда можно обойтись таблицей
| document_id | attribute | value |
Если value должно быть типизированно - соответственно копать дальше, например, по одной такой таблице на тип.
Jaguar, ерунду говорите.
Offline
#7 24.05.07 11:03
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
Короче: совершенно точно нужно использовать возможности реляционной модели. XML здесь далеко не так гибок и производителен.
Offline
#8 24.05.07 11:07
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
Bred Vilchec написал(а):
Jaguar, ерунду говорите.
возможно
A-Lex, тебе надо составлять нормальную структуру БД со связанными таблицами... в любом случае у тебя имеется несколько типов документов, каждый тип имеет определенное кол-во полей... а заморачиваться со связкой XML+MySQL не имеет смысла... либо выбирать другую СУБД, либо отказаться от использования XML...
Offline
#10 24.05.07 11:13
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
A-Lex написал(а):
Дело в том, что документ не имеет определённое колличество полей. Также у документов одного типа поля могут меняться. Если для одного документа нужна дата, то для другого число дней.
хм... приведи примеры... не могу даже представить себе документо-оборот, где каждый документ имеет вольную форму представления... типа, раньше каждый документ писался на чистом листке в вольной форме представления?
Offline
#11 24.05.07 11:19
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
Если не предполагается выборка по значениям полей документа вида "WHERE количество_дней < 10 AND дата = сегодня-1день", то приведенная выше схема doc-id|attr|value вполне сгодидзе. Иначе для выбора правильной схемы нужно учитывать разные детали - насколько общую структуру имеют документы, какие поля в них как правило присутствуют, какие самые важные и т.д.
Offline
#12 24.05.07 11:23
Re: [MySQL] Может ли мускул индексить XML, лежащий в поле...
A-Lex написал(а):
Если для одного документа нужна дата, то для другого число дней
Jaguar написал(а):
типа, раньше каждый документ писался на чистом листке в вольной форме представления?
что-то типа того, для определённых workflow процессов поля на форме генерируются javascript, в зависимости от предыдущего выбора.
Можно конечно создать таблицу с максимальным набором полей, но это не лучший вариант, ИМХО
Offline

