|
|
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoУважаемые коллеги! Прошу Вас, многопытных, помочь мне в следующей задаче. Есть такая структура данных: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Думаю, здесь очевидно, что колонки ID - это PK, а NodeProperty.NodeID - это FK на Node.ID. Есть непреодолимое желание делать запросы вида " Найти все ноды с именем таким-то И со значениями некоторых атрибутов такими-то И чтоб у этих нодов в родителях были ноды с такими-то именами, атрибутами и пропертями И чтоб у этих родителей были еще родители уже с другими именами, атрибутами и пропертями." Предполагается, что таблицы Node и NodeProperty будут заполнятся с интенсивностью ~ 1M и 10M записей в день соответственно. Внимание, вопрос! Что нужно сделать с приведенной структурой и/или какие подходы к реализации самого процесса поиска использовать, чтоб после месяца работы приложения пользователь смог все-таки дождаться ответа на свой вопрос? Заранее спасибо. Наверное, можно попробовать Cache. Но творчески, а не как реляционный сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:23 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
To guest_20040621 & Васильев Андрей : Да с задачей все просто. Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. This is it. Если вы желаете еще подробностей - спрашивайте. To drev : Спасибо за сцылку на хелп - обязательно вникну. Поддержка MSSQL2005 у нас случилась совсем недавно, так что XML data type не был еще достаточно изучен. Кстати, если Вам не составит труда, сориентируйте пожалуйста меня на оракловские аналоги - они тоже пригодятся, а опыта с ним (с ораклом) у меня тоже почти нет. Специфика приложения такова, что оно должно поддерживать работу с MSSQL2005 и с Ораклом (молюсь, чтоб к этому не добавились всякие DB2, Информиксы и прочие монстры). Естественно, что, чем меньше различий будет в имплементации, тем лучше. Что касается структуры данных. XML документы содержат ветки глубиной 3-7 уровней. Примерно такой структуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Насколько, по Вашему мнению, в этих условиях будет эффективно применение XML data type? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:25 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
> Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. Незачем хранить XML документы - и файлы вообще - в базе данных (за исключением очень специфичных случаев, о которых речь в данном случае не идет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:38 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. Незачем хранить XML документы - и файлы вообще - в базе данных (за исключением очень специфичных случаев, о которых речь в данном случае не идет). Растроган. Плачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:43 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoTo guest_20040621 & Васильев Андрей : Да с задачей все просто. Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. This is it. Если вы желаете еще подробностей - спрашивайте.Какие данные в этих XML? Можете показать примеры? А также примеры поиска - не абстрактные, а более реальные. Sev_ReoСпецифика приложения такова, что оно должно поддерживать работу с MSSQL2005 и с Ораклом (молюсь, чтоб к этому не добавились всякие DB2, Информиксы и прочие монстры). Естественно, что, чем меньше различий будет в имплементации, тем лучше.при таком раскладе, вам скорее всего не удасться избежать спкцифики БД. В обработке XML - уж точно. Sev_Reo guest_20040621> Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. Незачем хранить XML документы - и файлы вообще - в базе данных (за исключением очень специфичных случаев, о которых речь в данном случае не идет). Растроган. Плачу.Побольшей части гость прав - хранить лучше не файлы, а данные из файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 15:02 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_Reo пишет: > Есть непреодолимое желание делать запросы вида "/Найти все ноды с именем > таким-то *И* со значениями некоторых атрибутов такими-то *И* чтоб у этих > нодов в родителях были ноды с такими-то именами, атрибутами и пропертями > *И* чтоб у этих родителей были еще родители уже с другими именами, > атрибутами и пропертями."/ Хранить еще и результат транзитивного замыкания дерева в отдельной таблице. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 15:12 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
> Растроган. Плачу. Обрыдайтесь, - мне никогда не было жаль буратин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 15:18 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Imho, при таких объемах, рано или поздно, так или иначе, задача сведется к построению/настройке "правильных" индексов. Могут ли индексы на xml-типе в mssql2005 быть "правильными" - х.з., для меня этот вопрос остается открытым... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 15:25 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoTo guest_20040621 & Васильев Андрей : Да с задачей все просто. Есть XML документы, которые надо хранить в базе и делать по ним различные поиски. This is it. Если вы желаете еще подробностей - спрашивайте. To drev : Спасибо за сцылку на хелп - обязательно вникну. Поддержка MSSQL2005 у нас случилась совсем недавно, так что XML data type не был еще достаточно изучен. Кстати, если Вам не составит труда, сориентируйте пожалуйста меня на оракловские аналоги - они тоже пригодятся, а опыта с ним (с ораклом) у меня тоже почти нет. Специфика приложения такова, что оно должно поддерживать работу с MSSQL2005 и с Ораклом (молюсь, чтоб к этому не добавились всякие DB2, Информиксы и прочие монстры). Естественно, что, чем меньше различий будет в имплементации, тем лучше. Что касается структуры данных. XML документы содержат ветки глубиной 3-7 уровней. Примерно такой структуры: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Насколько, по Вашему мнению, в этих условиях будет эффективно применение XML data type? вроде, должно сработать... попробуйте в случае Оракла - начните отсюда http://www.oracle.com/technology/tech/xml/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 09:05 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
drevв случае Оракла - начните отсюда http://www.oracle.com/technology/tech/xml/index.htmlЭто очень далеко копать. здесь ближе. Searching XML Data Stored in CLOBs Using Oracle Text . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2007, 11:11 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Спасибо всем участникам за идеи. Увы, native xml оказался слишком тяжелым в плане производительности и объема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 20:28 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoСпасибо всем участникам за идеи. Увы, native xml оказался слишком тяжелым в плане производительности и объема... Может то поможет Akzhan's Developer Corner - Home (Russian) статья нам потребуется оптимизировать обработку иерархии счетов с помощью дополнительной функциональности. Воспользуемся шаблоном "Реализация древовидных структур данных" Анатолия Тенцера. Нам потребуется в физической модели ввести новую таблицу "Наследование счёта", которая связана идентифицирующими отношениями с сущностями "Счёт" и "Счёт-папка". Для каждого счёта в этой таблице будет перечислены все его владельцы (прямой владелец счёта, владелец владельца и так далее). Немного подумав о получающихся запросах, мы можем придти к выводу, что помимо владельцев данного счёта, мы можем хранить в ней ещё и сам счёт. Тогда, правда, нам придётся несколько изменить определение таблицы, которая теперь будет дважды связана идентифицирующими отношениями с таблицей "Произвольный счёт" (не стоит забывать, что мы не установили ограничение на то, что конечный счёт всегда должен быть подсчётом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 21:47 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
А если по мотивам Celco? т.е. добавить к каждому узлу 2 поля min,max так что все id наследников лежат между min и max. все равно записи только добавляются и все равно пакетами. т.е. имеем лес деревьев, в который добавляем по 1 дереву. и тогда проверки (забудем пока NodeProperty) будут выглядеть например след образом Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 15:22 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Иерархические структуры данных в реляционных БД Иерархические справочники с линейным временем доступа Навигация по иерархиям и сетям в реляционных базах данных C уважением, AlexandrN© ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34661443&tid=1544331]: |
0ms |
get settings: |
9ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 515ms |

| 0 / 0 |
