bkat wrote:
> C>???.... ????? ?????? ???? ????? ? ???? ?????.
> !!!!!! google !!!!!! ! !!! !!!!! !!!, !!!!!! O(M^N) ! !!!! O(exp N) )
Странно, остальные письма прошли нормально.
Пишу повторно:
==========================================
Эхх.... Решил внести свой вклад в этот флейм.
Тут похоже некоторые участники не понимают в чем фундаментальная разница
между *чистыми* ООБД и РБД. Эта разница вовсе не в полиморфизме или
OID'ах, а в *путях доступа к данным*. В ООБД пути доступа к данным —
фиксированы, в РБД — нефиксированы.
Что это значит: предположим, что у нас простая модель "Школа-Ученик".
1. В РБД у нас будет простая модель из двух табличек со связью
один-ко-многим. В такой модели выборки будет занимать O(log N) времени
при наличии индексов по нужным полям, а значит запросы типа "Все школы,
где есть ученик с фамилией 'Петров'" будут быстрыми. Однако, за счет
простоты выборки мы теряем в скорости мутирующих операций и навигации:
добавления/изменения/удаления — будут выполняться за O(M*log N) времени
(N — количество строк в таблице, M — количество индексов), а навигация
за O(log N).
2. В ООБД у нас будут два класса: 'Школа' и 'Ученик'. У класса 'Школа'
будет свойство вектор (возможно отсортированный) учеников. Таким образом
вставка/удаление/изменени учеников будут происходить за O(1) или O(log
K) времени (K — количество учеников в школе, если вектор
отсортированый). Навигация будет происходить за O(1). Естественно, такая
халява не остается безнаказаной
, и произвольные выборки у нас
получаются намного сложнее, чем в РБД. То есть для поиска всех школ, в
которых есть ученик "Петров" нам нужно будет перебрать все школы
(сложность O(n) ), и у каждой школы попробовать найти нужных учеников
(сложность O(n) или O(log N) ).
==========================================
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9