Я в шоке.
Обсуждение одновременного выполнения и чтения двух SQL-запросов в одном коннекте и транзакции (или, упаси Б-г, двух транзакций в одном коннекте) свелось к тому, что НИКТО это не использует. Ну, б-г с ним, что нигде кроме Firebird этого нет, но я всегда считал что операция "ленивым образом перебрать 100500 проводок, параллельно так же ленивым образом вычитывая их детализацию" это самоочевидное действие, такое же как два вложенных цикла, с обработкой списка сущностей в внешнем и списка вложенных сущностей во внутреннем.
Нет, оказывается это не так. Мне предложили все виды извращенной любви с БД - загрузку датасета в память и затем выполнение второго запроса, выполнение джоина и свертку его результатов в граф объектов, и прочая и прочая.
А я тут в святом неведении Олега почитываю на тему fold-like обработки БД и пытаюсь обобщить это на случай доступа к БД из ADO.NET и обработки нескольких вложенных таблиц.
Неудивительно, что NoSQL внезапно оказался настолько популярен. Потому что в умах разработчиков и в большинстве RDBMS аналогов действию "получить сущность и ее подчиненные сущности" просто НЕТ.
Нет, оказывается это не так. Мне предложили все виды извращенной любви с БД - загрузку датасета в память и затем выполнение второго запроса, выполнение джоина и свертку его результатов в граф объектов, и прочая и прочая.
А я тут в святом неведении Олега почитываю на тему fold-like обработки БД и пытаюсь обобщить это на случай доступа к БД из ADO.NET и обработки нескольких вложенных таблиц.
Неудивительно, что NoSQL внезапно оказался настолько популярен. Потому что в умах разработчиков и в большинстве RDBMS аналогов действию "получить сущность и ее подчиненные сущности" просто НЕТ.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
У Олега -- iteratees -- не помогут достичь нужного, если драйвера не умеют. Или что вообще хочется?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Кстати, а как тогда в Net делается показ master-child выборок если там нельзя паралельно два запроса запустить?
(no subject)
no subject
no subject
1) на ib/fb я, помнится, просто денормализовал результат
2) на оракле можно возвращать вложенные курсоры. Как-то пробовал, геморрой это.
3) на MSSQL я возвращаю XML. это просто и удобно в обработке.
no subject
Вообще, можно на самом деле так вопрос поставить - если тебе надо одновременно более двух датасетов, то зачем выносить их обработку за пределы СУБД? Я сильно сомневаюсь, что хоть один клиент сумеет соединить мастер-деталь в себе быстрее, чем база данных. Ему же еще индексы строить придется, или там хеш-таблицу.
Но это уже потенциальная переработка архитектуры может потребоваться - если изначально все писалось в стиле 1С, а теперь надо все ускорить и вообще сделать по уму, то конечно упс...
И кстати да, XML (там, где он есть) никто не отменял.
no subject
JOIN'ы, блин! но то это и реляционка!
(no subject)
(no subject)