powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать из базы коллекцию объектов?
25 сообщений из 90, страница 2 из 4
Как выбрать из базы коллекцию объектов?
    #34273364
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутить будешь сам-две процедуры, которые я написал.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273369
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa, ещё раз:)
Я спросил не про то, что я буду делать, а про то, какие селекты будет сервер выполнять, для этой операции.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273371
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуры могут быть разные и с любыми параметрами для кажого конкретного случая.Никто не мешает написать и одну общую процедуру, все на усмотрении разработчика.На общие вопросы могут быть только общие ответы.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273382
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, мне казалось, пример вполне конкретный. Ну да ладно. Спасибо за помощь, SeVa!
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273387
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FuzzyЯ не собираюсь работать с Ораклом, к сожалению. Да и не хочу привязываться к какой-то определённой базе. Хочется универсального решения, шаблонного.

Чем тебе не шаблонное решение?

Код: plaintext
select value(o) from obj_table o;

Объектный SQL скоро будет реализован во всех коммерческих СУБД, и твоё шаблонное решение уйдёт в небытие, как худше из всех возможных, поскольку в общем случае API БД никакой оптимизации в твоей задаче не допускает но тебе придётся ориентироваться на него.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273394
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabОбъектный SQL скоро будет реализован во всех коммерческих СУБД, и твоё шаблонное решение уйдёт в небытие, как худше из всех возможных
"... а при коммунизме всё будет зае*ись, он наступит скоро, надо только подождать..." (с)ГрОб
:))

А щас всё-таки надо работать с API БД как есть.
Так что насчёт хранимок, как ими воспользоваться для решения моей задачи?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273411
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Осталось только угадать твою структуру и выслать тебе готовое решение.Возможный вариант я дал.Рекомендую еще зайти на тамошний форум, дабы посмотреть, как народ общается в подобных местах.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273417
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FuzzyА щас всё-таки надо работать с API БД как есть.

А какой есть?

FuzzyТак что насчёт хранимок, как ими воспользоваться для решения моей задачи?

Откуда мне знать? Может твоя БД хранимые процедуры не поддерживат?

А вообще, с ХП всё точно так же, только SQL запросы храняться на стороне сервера. ХП возвращает массивы записей, которые нужно рассортировать по прикладным объектам.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273423
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa, ну причём тут готовое решение? Хочется просто понять, сколько и каких СЕЛЕКТОВ будет выполнять сервер для того, чтобы выбрать на клиента коллекцию объектов, каждый из которых сам содержит коллекцию объектов.
Какие бы ни были там процедуры, SQL сервер всё равно ведь будет выполнять именно запросы.
И не получится ли, что запросов будет 1 плюс ещё по запросу на каждый "главный" объект для выборки соответствующих подчинённых?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273435
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab FuzzyТак что насчёт хранимок, как ими воспользоваться для решения моей задачи?
Откуда мне знать? Может твоя БД хранимые процедуры не поддерживат?

А вообще, с ХП всё точно так же, только SQL запросы храняться на стороне сервера. ХП возвращает массивы записей, которые нужно рассортировать по прикладным объектам.

Я понял.
Короче говоря, выходит, что нормальный способ будет такой:
1. Зарядить запрос по таблице с главными объектами с нужным фильтром.
2. Зарядить запрос по таблице с подчинёнными объектами, как фильтр использовать запрос с главными объектами.
3. Мчаться циклом по резалтсету главных объектов, для каждой записи:
а) создаём новый главный объект
б) мчимся циклом по резалтсету подчинённых объектов с текущей позиции, пока ключ бьёт с соответствующим главным объектом, создаём новые подчинённые объекты, пихаем в коллекцию.

Типа как-то так, видимо?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273439
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FuzzySeVa, ну причём тут готовое решение? Хочется просто понять, сколько и каких СЕЛЕКТОВ будет выполнять сервер для того, чтобы выбрать на клиента коллекцию объектов, каждый из которых сам содержит коллекцию объектов.
Какие бы ни были там процедуры, SQL сервер всё равно ведь будет выполнять именно запросы.
И не получится ли, что запросов будет 1 плюс ещё по запросу на каждый "главный" объект для выборки соответствующих подчинённых?

В лучшем случае для множества объектов с одной вложеной коллекцией нужно выполнить 2 запроса. Один за множеством главных объектов, второй за вложенными коллекциями. В худшем 2x<количество выбираемых объектов>, хуже только по дури можно сделать. Фактическое количество запросов в данном случае зависит от возможностей API СУБД и твоего таланта.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273461
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fuzzy...
3. Мчаться циклом по резалтсету главных объектов, для каждой записи:
а) создаём новый главный объект
б) мчимся циклом по резалтсету подчинённых объектов с текущей позиции, пока ключ бьёт с соответствующим главным объектом, создаём новые подчинённые объекты, пихаем в коллекцию.

Типа как-то так, видимо?

Типа того.

Пара замечаний.
1. В запрос подчинённых коллекций нет нужды тащить таблицу с главными объектами, если тебе известны их id, а они тебе известны, поскольку ты их выбрал первым запросом. Но в конкретном случае это может быть не важно. Если уж плясать в этом направлении, то можно одним запросом выбрать данные из таблиц с главными и подчинёнными объектами, правда размер выборки в байтах может ощутимо возрасти.
2. Твои циклы подразумевают, что строки в запросах будут предварительно отсортированы по id объекта. Это лишняя трата времени, не проще, но эффективенее сразу создать все главные объекты, а затем рассортировать по ним подчинённые записи, используя, например, хэш таблицу.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273491
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем так, mcureenab, в запрос по подчинённым объектам я собираюсь передавать отнюдь не таблицу, а запрос по главным объектам. И по двум рекордсетам я буду бежать одновременно, и фетчить их тоже одновременно. Поэтому без сортировки по id не обойтись, конечно.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273496
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FuzzyНе совсем так, mcureenab, в запрос по подчинённым объектам я собираюсь передавать отнюдь не таблицу, а запрос по главным объектам. И по двум рекордсетам я буду бежать одновременно, и фетчить их тоже одновременно. Поэтому без сортировки по id не обойтись, конечно.

Дело твоё. Так тоже можно. Не факт, что будет производительнее, но определённо проще.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273498
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все зависит от задачи.
У меня используется только выборка списка с отложенным чтением деталировки.Например, строиться только список товарно-материальных ценностей, упаковки подгружаются, если пользователь раскрывает вложенный грид(Баловать их не стоит.Пусть выбирает только то, что ему нужно.).
Код:

public PackageList Packages
{
get
{
CanReadProperty("_packages", true);
if (_packages == null)
_packages = PackageList.GetPackageList(_inventoryItemUid);//вызов проц и построение списка упаковок по Uid ТМЦ
return _packages;

}
}

Если нужно все сразу, народ изгаляется как может.Варианты обсуждаются в форуме.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273500
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично, значит, пока имеем два способа:
1) "Идиотский": 1 запрос по главным объектам, и по запросу для каждого главного объекта по подчинённым объектам.
2) "По запросу на коллекцию": 1 запрос по главным объектам, и 1 запрос по подчинённым объектам, бежим по ним одновременно.
Ну можно ещё предложить
3) "Денормализованный": 1 общий запрос по главным и подчинённым объектам. Подойдёт в крайнем случае, если подчинённых коллекций одна. Если больше, то это будет смерть.

Ещё есть варианты? А как Hibernate делает, кто знает?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273506
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa, ты описал "идиотский" способ по моей классификации :)
Не всегда можно отложить загрузку подчинённых объектов, иногда хочется всё и сразу.
А на каком форуме народ изгаляется на эту тему, подскажи?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273529
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хех. Я тут видал, программа за КАЖДЫМ атрибутом в БД обращалась. Обоснование было - канал медленный, и если нужен только конкретный атрибут, то тянуть весь объект будет накладно. Я сомневаюсь, но, полагаю, автор знал о чём говорит.

Сам делал объектный кэш на PL/SQL. Методы и SQL запросы генерились по шаблону автоматически для каждого класса объектов. Чтобы не усложнять шаблон и оставаться в его рамках, атрибуты объектов тянул только по id. Если требовался запрос не по id, то сначала выбирал список id, а потом типовыми методами подружал сами объекты по одному. Благо таких необъектных запросов было совсем чуть и претензий на всеобщность тоже не было.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273539
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скучно.Первый раз слышу, что при отложенной выборке одновременно "бегут" и по подчиненным объектам.Я четко оговорился, что все зависит от задачи.Мой вариант, как раз для пользователей идиотов, которым вряд ли нужна деталировка для массы записей, ВЫБОРКА ПРОИСХОДИТ ТОЛЬКО ПО ЗАПРОСУ.При необходимости я сделаю все в одной процедуре.Если тебе нужно насиловать бд и загромождать экран-флаг в руки.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273546
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa, а я предпочитаю иметь на клиенте полноценный объект, а не полузагруженный. И вообще, мало ли какие бывают расклады. Может, юзер желает в гриде видеть кроме главного объекта ещё и какие-то данные по подчинённым объектам, какое-нибудь текстовое значение через запятую, например. Или агрегат какой-нибудь хитрый. Что тогда? Переходим от объектов к рекордсетам?
А масса записей на клиенте по определению не нужна, нужно ровно столько, сколько юзер может просмотреть, и не так уж это много, можно и с деталями дёрнуть с сервака. Хотя, конечно, "случаи разные бывают", и это уже флейм, ПМСМ.
Так что насчёт форума, где ещё народ эту тему обсуждает?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273555
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если ..., а если ..., а если пользователь пива захочет. За твоей фантазией трудно угнаться.На словоблудие может быть много ответов.Задай вопрос в форуме "Просто треп" (есть такой здесь).
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273563
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь -- это бог. Захочет пива -- придётся бежать, ведь мы же работаем за деньги :))

SeVa, ты упоминал форум, где народ обсуждает похожую тему. Это был "Просто трёп"?
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273582
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FuzzySeVa, а я предпочитаю иметь на клиенте полноценный объект, а не полузагруженный.

Нуууу... Есть ещё ленивая инициализация и многие её успешно используют. Иногда запросу может пойти на пользу, ибо пользователь быстро получит первые записи, а не будет ждать, когда пол БД на клиента подгрузится. Опять же ускорение, если большая часть объектов не будет использована.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273588
Fuzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab, не вижу проблемы -- открыл два или сколько надо запросов, собрал объект, показал клиенту, он его сразу видит. Переходим к следующему объекту. Никто ничего не ждёт.
...
Рейтинг: 0 / 0
Как выбрать из базы коллекцию объектов?
    #34273603
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fuzzymcureenab, не вижу проблемы -- открыл два или сколько надо запросов, собрал объект, показал клиенту, он его сразу видит. Переходим к следующему объекту. Никто ничего не ждёт.

Тебе виднее, конечно. Только на открытие запроса с сортировкой время нужно. Если коллекции большие а критерий отбора слабый, пользователю долго ждать придётся.
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 2 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как выбрать из базы коллекцию объектов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]