Официальный сайт студ.городка НГТУ
Программирование и БД » [MySQL] Может ли мускул индексить XML, лежащий в поле... 

#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

#4  24.05.07 10:48

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

почитай про функцию serialize и как она представляется данные на выходе... строки не изменяются... поэтому ты можешь спокойно делать WHERE LIKE для этих полей

Offline

#5  24.05.07 10:51

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

Jaguar, where like не подходит. так как это будет медленный текстовый поиск. мне нужно организовать полнотекстовый.
Проблема в том, как заставить мускул индексировать данные 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

#9  24.05.07 11:10

Re: [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

#13  24.05.07 11:24

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

Пока самым оптимальным решением я вижу такую структуру

document_id | attr | type | value

Offline

Программирование и БД » [MySQL] Может ли мускул индексить XML, лежащий в поле... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.398 сек.
Выполнено 11 запросов.