Автор Тема: СУБД и деревья  (Прочитано 69667 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #120 : Апрель 12, 2012, 07:49:16 am »
2 DIzer

А можете наполнить вашу таблицу данными для примера?
Не очень понятно о чем речь  :)

DIzer

  • Гость
Re: СУБД и деревья
« Ответ #121 : Апрель 12, 2012, 07:50:01 am »
Зря я заговорил о затратах.

Надо было просто дать абстрактную таблицу:
[родитель][подчиненный]

Вместо обсуждения задачи получилось обсуждение системы 1С  >:(
НЕТ не зря.

DIzer

  • Гость
Re: СУБД и деревья
« Ответ #122 : Апрель 12, 2012, 07:51:20 am »
Обсуждать что-то кроме самой задачи больше не буду. Надоело.
Аналогично - выцерапывать по крохам информацию необходимую для решения задачи - на фиг, я за это деньги не получаю..

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #123 : Апрель 12, 2012, 07:58:42 am »
2 DIzer

Разговор, который тут идет, пока к задаче вообще отношения не имеет.
Задача - это первое сообщение.

По существу задачу только Сергей Губанов решал

alexus

  • Гость
Re: СУБД и деревья
« Ответ #124 : Апрель 12, 2012, 08:02:56 am »
2 DIzer

Разговор, который тут идет, пока к задаче вообще отношения не имеет.
Задача - это первое сообщение.

По существу задачу только Сергей Губанов решал
Жаль, что я сразу не сообразил, что решение сводилось к подсчёту байтиков... Простите, что влез со своими рассуждениями...

DIzer

  • Гость
Re: СУБД и деревья
« Ответ #125 : Апрель 12, 2012, 08:04:49 am »
2 DIzer

Разговор, который тут идет, пока к задаче вообще отношения не имеет.
Задача - это первое сообщение.

По существу задачу только Сергей Губанов решал
Жаль, что я сразу не сообразил, что решение сводилось к подсчёту байтиков... Простите, что влез со своими рассуждениями...
;) А кто бы сообразил..мдь "разузловка"..."распальцовка"..

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #126 : Апрель 12, 2012, 08:07:54 am »
Сергей предложил минимизировать таблицу так, чтобы она целиком поместилась в оперативную память. Т.е. снял первое ограничение из озвученных мной. И тем самым решил поставленную задачу.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #127 : Апрель 12, 2012, 08:08:35 am »
.."распальцовка"..
Это в мой огород камень?  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #128 : Апрель 12, 2012, 08:20:04 am »
p.p.s Тут не очень важны конкретные циферы. Важно лишь понимать, что на клиента это все закачивать нет возможности, т.к. элементарно не хватит памяти. Т.е. выгребсти всю таблицу одним запросом и обойти ее рекурсией не прокатит... Получать запросом подчиненные записи на каждый элемент дерева очень дорого. Плюс если в таблице зацикливание, нам его нужно как-то обойти.

DIzer

  • Гость
Re: СУБД и деревья
« Ответ #129 : Апрель 12, 2012, 08:40:44 am »
.."распальцовка"..
Это в мой огород камень?  :)
Конечно нет - вместо того чтобы сразу сказать что речь идет о различных представлениях данных из ОДНОЙ таблицы и дать ее структуру - вести речь о затратах... разузловке.. разхреновке.. -виноват исключительно я  ;D что не понял этого сразу(види  те ли стал интересоваться -а почему токва херово мелкие запросы выполняются) ... экий я недалекий чел...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #130 : Апрель 12, 2012, 08:52:48 am »
Сарказм?  ;D (с) Шелдон Купер

Да не важно почему они медленные. Какая разница?
Сеть медленная/нагруженная.... Объекты тяжелые.... Сервак в Африке находится....

Тем более, что в реальной задаче нагруженная сеть 100мбит и старенький слабый сервак...

Представьте, что вы на олимпиаде по программированию.
В условиях задачи написано:
"Запросы дорогие"

Т.е. нужно выполнить минимальное число запросов. Это кстати основное правило при работе с СУБД.
На сертификации 1С сразу ставят неуд, если в вашем коде есть запрос в цикле (за исключением очень редких случаев)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #131 : Апрель 12, 2012, 08:55:44 am »
Я даже по другому скажу:
Не запросы дорогие, а клиент-серверное взаимодействие...

Так проще понять.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: СУБД и деревья
« Ответ #132 : Апрель 12, 2012, 09:20:42 am »
Вот один из вариантов решения этой задачи:
http://nashe1c.ru/materials-view.jsp?id=357

DIzer

  • Гость
Re: СУБД и деревья
« Ответ #133 : Апрель 12, 2012, 10:12:53 am »
Вот один из вариантов решения этой задачи:
http://nashe1c.ru/materials-view.jsp?id=357
Нда ... решение... нормальное решение -сформировать таблицу из 4 полей
id_parent, id_zat -ключи таблицы  затрат
id_obj (ключь  строки названия обьекта учета)
id _str -  индекс  строки  в вашей супер таблице - то есть 4 записи по 4 байта - если у вас супер таблица имеет 10000000 строк то это всего 160 мб причем срезы по ней практически мгновенные (обычно такие таблицы в простейших случаях делаются с помощью views  более общий подход хранимые  процедуры).., для  построения дерева использовать хранимые процедуры либо делать их на клиенте (для мелких срезов)  остальные данные - из тех которые не меняются - названия обьектов учета, названия категорий затрат - запихивать на локаль и модифицировать только в случае необходимости, -те которые  меняются прокачивать по срезу он же range.- это первичные соображения-  остальные, только в том случае если вышеперечисленное не работает.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: СУБД и деревья
« Ответ #134 : Апрель 12, 2012, 10:14:01 am »
Вместе со ссылкой на родителя можно ещё хранить путь до корня. В дополнительном поле. В формате:
<rootid>-<subtreeid>-<subtreeid>-...-<parentid>

А в дополнительной таблице - листья дерева.

Искать циклы будет просто.