Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
RWR

Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать.


Иерархия среди друзей ???
Несомненно извращение
1 окт 09, 08:14    [7727887]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
RWR
Member

Откуда:
Сообщений: 18
Gluk (Kazan)
RWR

Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать.


Иерархия среди друзей ???
Несомненно извращение


Я знаю толк в извращениях :-)
По сути не иерархия нужна, а отображение связей кто с кем дружит. По типу как у контакта, но с возможностью просматривать не только своих друзей, но и друзей моих друзей и т.д.
РСУБД подойдут под это дело оптимально?
1 окт 09, 08:34    [7727908]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
RWR
Gluk (Kazan)
RWR

Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать.


Иерархия среди друзей ???
Несомненно извращение


Я знаю толк в извращениях :-)
По сути не иерархия нужна, а отображение связей кто с кем дружит. По типу как у контакта, но с возможностью просматривать не только своих друзей, но и друзей моих друзей и т.д.
РСУБД подойдут под это дело оптимально?


Всегда подходили, но если Мусье действительно знает толк в извращениях, то Cache несомненно ваше ВСЕ. Даже спорить не буду.
1 окт 09, 09:37    [7728068]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
RWR
По сути не иерархия нужна, а отображение связей кто с кем дружит. По типу как у контакта, но с возможностью просматривать не только своих друзей, но и друзей моих друзей и т.д.
РСУБД подойдут под это дело оптимально?
Вы сомневаетесь?
use tempdb
go

if OBJECT_ID('fr_rels', 'U') is not null
	drop table fr_rels
go

if OBJECT_ID('people', 'U') is not null
	drop table people
go

create table people(
	ID int not null,
	Name varchar(30) not null,
	constraint PK_people primary key(ID)
)
go

create table fr_rels(
	ID1 int not null,
	ID2 int not null,
	constraint PK_fr_rels primary key(ID1, ID2),
	constraint FK_Rel1 foreign key (ID1) references people(ID),
	constraint FK_Rel2 foreign key (ID2) references people(ID)
)
go

insert into people(ID, Name)
select 1, 'Вася' union all
select 2, 'Сеня' union all
select 3, 'Петя' union all
select 4, 'Коля' union all
select 5, 'Саня' union all
select 6, 'Ваня'

insert into fr_rels(ID1, ID2)
select 2, 3 union all
select 2, 4 union all
select 2, 6 union all
select 1, 3 union all
select 1, 5 union all
select 3, 4


-- выбираем друзей Сени
select
	*
from fr_rels
	join people p2 on fr_rels.ID2 = p2.ID
where fr_rels.ID1 = 2

-- выборка: кто с кем дружит
select
	*
from people p1
	join fr_rels on p1.ID = fr_rels.ID1
	join people p2 on fr_rels.ID2 = p2.ID
автор
По совету старших товарищей и руководителя, которые рекомендовали – смотреть в сторону не только реляционных баз данных.
Вот чему всегда поражался, так это умению "учоных" усложнить любую, даже самую пустяшную, задачу.
1 окт 09, 09:46    [7728091]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
capscom
А к чему она тогда сводится?

К обыкновенной сети: сущности-ссылки. Легко моделируется на РСУБД.
1 окт 09, 10:05    [7728149]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
Gluk (Kazan)
Всегда подходили, но если Мусье действительно знает толк в извращениях, то Cache несомненно ваше ВСЕ. Даже спорить не буду.

Cache не пойдет - у нее только один индекс. Запрос типа: найти всех родителей ребенка - full scan. Как раз в РСУБД граф легко представляется двумя таблицами со всеми нужными индексами и вперед.
1 окт 09, 10:11    [7728170]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
_мод
Gluk (Kazan)
Всегда подходили, но если Мусье действительно знает толк в извращениях, то Cache несомненно ваше ВСЕ. Даже спорить не буду.

Cache не пойдет - у нее только один индекс. Запрос типа: найти всех родителей ребенка - full scan. Как раз в РСУБД граф легко представляется двумя таблицами со всеми нужными индексами и вперед.


это была ирония
1 окт 09, 10:56    [7728421]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
Gluk (Kazan)
это была ирония

С Cache по другому нельзя :)
1 окт 09, 11:24    [7728576]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Flying Dutchman
Member

Откуда: Arnhem, Голландия
Сообщений: 196
capscom
Вечер добрый!

Стоит задача для дипломной работы - разработать методику, позволяющую максимально быстро выбирать всех потомков (или предков) заданной записи или группы записей, в том числе и потомков (или предков) удаленных от заданной записи на заданное число шагов или вплоть до низа(конца) иерархической лестницы.
Структура - ациклический направленный граф.


Различные методы организации деревьев описаны в книге Селко Trees and Hierarchies in SQL.

В SQL Server 2008 появился новый тип данных hierarchyid, который специально предназначен для работы с деревьями. О работе с ним можно почитать в книге Бен-Гана Inside Microsoft® SQL Server® 2008: T-SQL Querying .
1 окт 09, 15:53    [7730502]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
RWR
Member

Откуда:
Сообщений: 18
Спасибо всем)) С БД тогда мудрить не буду - остановлюсь на РСУБД.

Flying Dutchman , а книг на русском не встречали, по представлению деревьев???
Английский знаю, но все-же приятнее на русском читать.
1 окт 09, 17:54    [7731341]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Огроменное спасибо участникам ветки!

Буду юзать РСУБД и не усложнять себе жизнь. Остался тока узнать, а насколько производительны иерархические запросы у Оракла (все таки 'длинные' ветки придется выводить)???

И какой подход будет работать "шустрее" на графе:

1) Использовать иерархические запросы Оракла

2) Сделать промежуточную таблицу, в которой храниться все пути между любыми
связанными записями.
1 окт 09, 18:04    [7731419]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Flying Dutchman
Member

Откуда: Arnhem, Голландия
Сообщений: 196
RWR
Спасибо всем)) С БД тогда мудрить не буду - остановлюсь на РСУБД.

Flying Dutchman , а книг на русском не встречали, по представлению деревьев???
Английский знаю, но все-же приятнее на русском читать.


Честно говоря, даже не знаю, существуют ли книги на русском по этой теме. Все, что я видел - несколько статей в Интернете о работе с деревьями на SQL.
1 окт 09, 18:12    [7731466]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2497
В pgsql тоже полно инструментов для работы с деревьями.
ltree аналогичен M$SQL.
Есть аналог ораклового connectby, а в 8.4 иерархические запросы поддерживаются
ещё и в соответствии со стандартами(WITH RECURSIVE).
1 окт 09, 18:39    [7731583]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Favn
Member

Откуда:
Сообщений: 585
capscom
И какой подход будет работать "шустрее" на графе:
1) Использовать иерархические запросы Оракла
2) Сделать промежуточную таблицу, в которой храниться все пути между любыми
связанными записями.
Очень сильно зависит от объемов, типов индекса (b+ tree не очень подходит) и качества оптимизатора.
2) не реляционно, сложно в сопровождении и очень дорого по изменениям. 1) не прерогатива Оракла - with есть во многих СУБД (SQL3). Да и connect by не только Оракл поддерживает :)
1 окт 09, 19:51    [7731784]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Favn
capscom
И какой подход будет работать "шустрее" на графе:
1) Использовать иерархические запросы Оракла
2) Сделать промежуточную таблицу, в которой храниться все пути между любыми
связанными записями.
Очень сильно зависит от объемов, типов индекса (b+ tree не очень подходит) и качества оптимизатора.
2) не реляционно, сложно в сопровождении и очень дорого по изменениям. 1) не прерогатива Оракла - with есть во многих СУБД (SQL3). Да и connect by не только Оракл поддерживает :)


Спасибо, буду иметь в виду. Только не очень понятно вот это:
автор

2) не реляционно, сложно в сопровождении и очень дорого по изменениям.


"Не реляционно" - это имелось в виду при использовании не реляционной СУБД или подход не реляционный?? Если все же подход, то что значит "реляционный подход" ???
1 окт 09, 20:17    [7731836]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6635
Senya_L:
- учебное решение для задачи со связями. Но в этом решении не указан смысл связи - подчиненный преподаватель, студент у препода, итд. Т.е. маловато метаданных либо придется создавать таблицу для каждого типа связи.

_мод. Вы забываете, что к кэше или в фоксе, работа идет по другому - берется каждая запись (Full scan конечно, но по индексу или дереву) и сразу с ней что-то делается - вывод в отчет или суммирование, а в SQL - работа двухэтапная - получили результат запроса и потом!!! по этому временному результату fullscan тот же самый по записям.
И не факт, что двухэтапный вариант да еще с накладными расходами промежуточного хранения данных будет быстрее. С чего бы при правильной организации структуры в обоих случаях?

Пока студент, пусть учится - разным идеологиям. А то выходят однобокие специалисты, коих большинство, т.е. "с одним инструментом на все случаи жизни"

Хотя мне тоже кажется, что в данном случае нечего особо мудрить. Пяток таблиц связей все решат.

capscom.
В этом случае нет смысла сравнивать по скорости тип запросов. Слишком мало данных в этой задаче * 1универ для современных СУБД. Если страна, тогда возможно что-то увидеть....
2 окт 09, 01:51    [7732322]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Siemargl
_мод. Вы забываете, что к кэше или в фоксе, работа идет по другому - берется каждая запись (Full scan конечно, но по индексу или дереву) и сразу с ней что-то делается - вывод в отчет или суммирование, а в SQL - работа двухэтапная - получили результат запроса и потом!!! по этому временному результату fullscan тот же самый по записям.


пока конь 4-мя ногами - 1, 2, 3, 4, ты двумя ногами 1-2-1-2 (с) Масленица
Бред
2 окт 09, 08:45    [7732533]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
Gluk (Kazan)
Бред

Присоединяюсь
2 окт 09, 11:28    [7733647]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
capscom
Огроменное спасибо участникам ветки!

Буду юзать РСУБД и не усложнять себе жизнь. Остался тока узнать, а насколько производительны иерархические запросы у Оракла (все таки 'длинные' ветки придется выводить)???

И какой подход будет работать "шустрее" на графе:

1) Использовать иерархические запросы Оракла

2) Сделать промежуточную таблицу, в которой храниться все пути между любыми
связанными записями.
С этими вопросами лучше в эту ветку.

ЗЫ. По собственному скромному опыту: с графами лучше работать на клиенте.
2 окт 09, 12:41    [7734292]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
_мод
Gluk (Kazan)
Бред

Присоединяюсь


Сейчас ить докличемся :)
Снееегуууураааачкаааа
2 окт 09, 13:17    [7734682]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Senya_L
capscom
Огроменное спасибо участникам ветки!

Буду юзать РСУБД и не усложнять себе жизнь. Остался тока узнать, а насколько производительны иерархические запросы у Оракла (все таки 'длинные' ветки придется выводить)???

И какой подход будет работать "шустрее" на графе:

1) Использовать иерархические запросы Оракла

2) Сделать промежуточную таблицу, в которой храниться все пути между любыми
связанными записями.
С этими вопросами лучше в эту ветку.

ЗЫ. По собственному скромному опыту: с графами лучше работать на клиенте.


Ага, и обязательно на Fox-е
2 окт 09, 13:18    [7734693]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Siemargl

capscom.
В этом случае нет смысла сравнивать по скорости тип запросов. Слишком мало данных в этой задаче * 1универ для современных СУБД. Если страна, тогда возможно что-то увидеть....


А как мне сравнительные тесты проводить (на одном универе), мне же нужно показать, что выбранный подход эффективен, например, для 10 000 узлов графа, а на 100 000 он уже не эффективен.

Тестирование на машинке с заведомо известной конфигурацией:

проц: Core 2 Duo T7500 (2,2 GHz)
озу: 2 Гб
винт: 120 Гигов (5400 оборотов).
2 окт 09, 15:11    [7735649]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Подпольщег
Guest
Ребят, есть же Фокс.
Какие ещё вопросы?
2 окт 09, 15:15    [7735675]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Подпольщег
Ребят, есть же Фокс.
Какие ещё вопросы?


А можно чуть подробнее, в чем прелесть Фокса?
2 окт 09, 15:27    [7735749]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
Senya_L
ЗЫ. По собственному скромному опыту: с графами лучше работать на клиенте.

Приоритеты:
1. SQL запрос (если получится)
2. ХП - почти на все случаи жизни
3. Прога на клиенте - иногда нужно для отчетов
2 окт 09, 16:07    [7736072]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить