Я в шоке.
Обсуждение одновременного выполнения и чтения двух SQL-запросов в одном коннекте и транзакции (или, упаси Б-г, двух транзакций в одном коннекте) свелось к тому, что НИКТО это не использует. Ну, б-г с ним, что нигде кроме Firebird этого нет, но я всегда считал что операция "ленивым образом перебрать 100500 проводок, параллельно так же ленивым образом вычитывая их детализацию" это самоочевидное действие, такое же как два вложенных цикла, с обработкой списка сущностей в внешнем и списка вложенных сущностей во внутреннем.
Нет, оказывается это не так. Мне предложили все виды извращенной любви с БД - загрузку датасета в память и затем выполнение второго запроса, выполнение джоина и свертку его результатов в граф объектов, и прочая и прочая.
А я тут в святом неведении Олега почитываю на тему fold-like обработки БД и пытаюсь обобщить это на случай доступа к БД из ADO.NET и обработки нескольких вложенных таблиц.
Неудивительно, что NoSQL внезапно оказался настолько популярен. Потому что в умах разработчиков и в большинстве RDBMS аналогов действию "получить сущность и ее подчиненные сущности" просто НЕТ.
Нет, оказывается это не так. Мне предложили все виды извращенной любви с БД - загрузку датасета в память и затем выполнение второго запроса, выполнение джоина и свертку его результатов в граф объектов, и прочая и прочая.
А я тут в святом неведении Олега почитываю на тему fold-like обработки БД и пытаюсь обобщить это на случай доступа к БД из ADO.NET и обработки нескольких вложенных таблиц.
Неудивительно, что NoSQL внезапно оказался настолько популярен. Потому что в умах разработчиков и в большинстве RDBMS аналогов действию "получить сущность и ее подчиненные сущности" просто НЕТ.
no subject
no subject
Пойти что ли perl выучить ради такого дела, чтобы по достоинству оценить и на другие языки спортировать.
no subject
Если DBI считается хорошим (нет, он неплох, конечно, just does its job — но и без изысков) — то я представляю, что там такое в дотнете творится.
no subject
Съебался в диком ужасе.
Видать именно поэтому я СУБД пилю, а не под БД разрабатываю.
Психика покорёжена.
no subject
no subject
no subject
no subject
Либо мы только читаем, и тогда нам пофигу, сколько у нас там коннектов.
Либо мы в одной транзакции можем писать из нескольких соединений параллельно, и тогда я даже не знаю что: либо надо разводить транзакции блокировками (и опять какая тогда разница, сколько коннекций - получается просто грязное чтение), либо, если один параллельный процесс в этом соединении может писать туда, куда без завершения транзакции написал другой параллельный процесс этого же соединения, то база просто не будет работать. Не умеет.
no subject
no subject
no subject
no subject
no subject
MSSQL - нужно добавить параметр MultipleActiveResultSets=true в строку подключения, проблема, похоже в протоколе сервера. Не рекомендуется в некоторых случаях, по умолчанию выключено.
PostgreSQL - нужно добавить параметр PreloadReader=true в строку подключения, что эффективно убивает весь смысл построчного чтения результатов запросов, т.к. оно при первом обращении высасывает все в память, судя по всему.
Firebird - работает по умолчанию, обычный режим что при доступе через клиентскую либу, что при использовании ADO.NET.
Оракла нету под руками попробовать.
no subject