об удобстве иерархических структур данных

48
Об удобстве иерархических структур данных Андрей Майоров BYTE-force twitter.com/xorets

Upload: andrew-mayorov

Post on 23-Dec-2014

1.068 views

Category:

Technology


0 download

DESCRIPTION

План выступления: 1. Зачем? 1. Проектированием хранилищ данных занимается почти каждый. 2. В начале проекта сложно представить, какие новые требования появятся через месяц. (КО напоминает) 3. "Много думать" - бессмысленно, все равно все поменяется. 4. Нужна схема, которую можно будет легко расширять и перетасовывать. 5. Дерево объектов - искомая структура. 2. Примеры деревьев (иерархических структур): 1. Организационная диаграмма. 2. Файлы и папки на диске 3. Файлы и папки - отличная метафора, от которой мы и будем плясать. На диске успешно хранится все, что нужно. Аналогично любые данные хорошо укладываются в дерево. 4. Пример №1 1. Традиционное проектирование. Рисуем UML-диаграмму: новость, каталог новостей, иерархия разделов каталога, страны, к которым принадлежат разделы, описания стран. 2. Выражаем то же самое в виде дерева объектов "статья", "папка", "страна". 3. Такое дерево реализуется примитивнейшей структурой классов - класс Node и его наследники. 1. Как следствие, для моделирования иерархической структуры диаграмма классов не подходит. 5. Полезные операции в дереве объектов: 1. Найти объект по пути. Путь - это последовательность ребер. Полный аналог пути к файлу. 1. Объект может иметь осмысленный путь - это удобно для пользователя. 2. Выбрать все объекты заданных типов, находящиеся в указанной ветви дерева. 1. Одна и та же операция позволяет выбрать все новости про заданную страну или все новости из указанной категории. 3. Наследование свойств вниз по дереву: 1. Конфигурационные настройки. 2. Роли пользователей. 6. Переход от дерева к ориентированному графу 1. Дерева (один родительский узел) не всегда достаточно. 2. Пример - новость может принадлежать нескольким разделам сразу. 3. Надо позволить узлу иметь нескольких родителей - получаем ориентированный граф. 4. Не должно быть циклов 1. Циклы создают проблемы. 2. В них нет никакого смысла для целей хранения данных. 7. Объект Relation - на диаграмму классов, моделирующих дерево добавляем новый класс: parent, child, name. 1. name - имя отношения, которое можно использовать при по

TRANSCRIPT

Page 1: об удобстве иерархических структур данных

Об удобстве иерархических структур данных

Андрей МайоровBYTE-force

twitter.com/xorets

Page 2: об удобстве иерархических структур данных

Разработка хранилища данных

http://www.halloweenforum.com/tutorials-step-step/69135-pallet-wood-toe-pincher-coffin.html

Page 3: об удобстве иерархических структур данных

«База данных»

http://www.flickr.com/photos/shindotv/3835365695/

Page 4: об удобстве иерархических структур данных

Гибкая схема

http://www.flickr.com/photos/lofink/4501610335/

Page 5: об удобстве иерархических структур данных

Дерево объектов

http://www.flickr.com/photos/tamburix/3128183211/

(Иерархическая структура)

Page 6: об удобстве иерархических структур данных

Тоже иерархическая структура

http://www.flickr.com/photos/rufo_83/3154516530/

Page 7: об удобстве иерархических структур данных

Организационная диаграмма

http:

//w

ww

.flic

kr.c

om/p

hoto

s/36

4988

26@

N02

/432

4885

147/

Page 8: об удобстве иерархических структур данных

Папки и файлы на диске

Page 9: об удобстве иерархических структур данных

«Папки» и «файлы» – все что нужно

http://www.flickr.com/photos/kblog/231146020/

Page 10: об удобстве иерархических структур данных

«Международные Новости»

+Дата+Заголовок+Текст

Новость

+Название

КатегорияНовостей

* 1 *

+parent1

+Название

Страна

*

1

+Название+Текст

Описание +about

* 1

Page 11: об удобстве иерархических структур данных

«Международные Новости»/

О стране

Страна

Категория

НовостьКатегория

Новость

Папка

Статья

Страна0..*

0..*

0..*

0..*

0..*

0..*

Page 12: об удобстве иерархических структур данных

«Международные Новости»/

О стране

Страна

Категория

НовостьКатегория

Новость

Папка

Статья

Страна0..*

0..*

0..*

0..*

0..*

0..*

Page 13: об удобстве иерархических структур данных

«High tech news»/

Описание

Индустрия

Компания

НовостьAbout

Папка

Статья

0..*

0..*1

0..*

0..*

Page 14: об удобстве иерархических структур данных

«The Poupkine’ Times»/

Описание

Индустрия

Компания

НовостьAbout

Папка

Статья

0..*

0..*1

0..*

0..*

О стране

Страна

Категория

НовостьКатегория

Новость

0..*

0..*

0..*

0..*

0..*

0..*

Page 15: об удобстве иерархических структур данных

Структура классов

Узел

*

+parent1

+Название

Папка

+Дата+Название+Текст

СтатьяКорень

Page 16: об удобстве иерархических структур данных

Операции с деревом

http://www.flickr.com/photos/hemmob/459937668/

Page 17: об удобстве иерархических структур данных

Путь до объекта

/news/industry/it/addconf

Page 18: об удобстве иерархических структур данных

Выборки из ветви

Папка

Статья

Page 19: об удобстве иерархических структур данных

Наследование свойств

vasya – adminpageSize = 10

Page 20: об удобстве иерархических структур данных

Одного «ствола» недостаточно

http://www.flickr.com/photos/stretchdog/2405956063/in/photostream/

Page 21: об удобстве иерархических структур данных

Направленный граф/

Политика

Новости

Погода

Международный саммит залило дождем

Папка

Статья

Page 22: об удобстве иерархических структур данных

Направленный ациклический граф/

Политика

Новости

Погода

Международный саммит залило дождем

Папка

Статья

Page 23: об удобстве иерархических структур данных

Класс «Отношение»

Объект

+Название

Папка

+Дата+Название+Текст

СтатьяКорень

+имя

Отношение

+parent

1 *+child

1 *

Page 24: об удобстве иерархических структур данных

Типы отношений

http://www.flickr.com/photos/hawee/4119367196/

Page 25: об удобстве иерархических структур данных

parent-child/

Политика

Новости

Погода

Международный саммит залило дождем

Page 26: об удобстве иерархических структур данных

link/

Политика

Новости

Погода

Международный саммит залило дождем

Page 27: об удобстве иерархических структур данных

aggregate/

Политика

Новости

Погода

Международный саммит залило дождем

Page 28: об удобстве иерархических структур данных

Каталог товаров/

Шубки

Каталог

Шапки

Ушанка

Папка

Статья

Товар

С капюшоном Дубленка

Рецензия

Page 29: об удобстве иерархических структур данных

Каталог товаров и магазин/

Шубки

Каталог

Шапки

Ушанка

Папка

Статья

Товар

С капюшоном Дубленка

РецензияЦенник

Магазин Магазин

Ценник

Ценник

Page 30: об удобстве иерархических структур данных

Каталог и 2 магазина/

Папка

Статья

Товар

$2

Магазин 2

Магазин

Ценник

$1

Магазин 1

$3 $10

Page 31: об удобстве иерархических структур данных

3 категории связей

parent-child

link aggregate

Page 32: об удобстве иерархических структур данных

Тип связи «tag»/

Международные

Новости

Международный саммит залило дождем

Папка

Статья

Погода Политика

Тэги

Page 33: об удобстве иерархических структур данных

Специальные связи

Page 34: об удобстве иерархических структур данных

Действия с объектами

http://www.flickr.com/photos/robwallace/304247667/

Page 35: об удобстве иерархических структур данных

Перемещение объекта

Page 36: об удобстве иерархических структур данных

Копирование объекта

Page 37: об удобстве иерархических структур данных

Копирование объекта

Copy

Page 38: об удобстве иерархических структур данных

Копирование объекта

Copy

Да, связь забыли скопировать.

Page 39: об удобстве иерархических структур данных

ё

Копирование объекта

Page 40: об удобстве иерархических структур данных

ё

Копирование объекта

Page 41: об удобстве иерархических структур данных

Удаление объектов/

Шубки

Каталог

Шапки

Ушанка С капюшоном Дубленка

РецензияЦенник

Магазин

Ценник

Page 42: об удобстве иерархических структур данных

Удаление объектов/

Шубки

Каталог

С капюшоном Дубленка

Рецензия

Магазин

Ценник

Page 43: об удобстве иерархических структур данных

http://www.flickr.com/photos/jonk/218546277/

Page 44: об удобстве иерархических структур данных

Найди 10 отличий

parent-child aggregate

Page 45: об удобстве иерархических структур данных

Резюме

• Дерево объектов – простая структура• Устойчива к изменению требований• Понятна пользователю,

как файловая система • Используем 9 лет – нравится

Page 46: об удобстве иерархических структур данных

ПО «Тематик»/

Offer

Provider

Department

User

Customer

Department

User

Theme

Request

User

1

0..*

0..* 0..1

1..*1..*

1..* 1..*

1..*0..*

1..* 1..*

0..*

1..*

0..*

0..*

Page 47: об удобстве иерархических структур данных

SDF

Фреймворк для разработки сайтов, построенный по этому принципу.

+Универсальная CMS для программистов

Page 48: об удобстве иерархических структур данных

Спасибо за внимание

Андрей МайоровBYTE-force

[email protected]/xorets

Если вам нужна эта презентация – напишите мне