Здравствуйте, Sinclair, Вы писали:
V>>Ну и, низлежащие драйвера связи с БД дают доступ к памяти прочитанной строки БД, т.е., в отличие от дотнетных дров, нет надобности копировать эти данные, да еще в "вертикальное" представление в памяти, когда каждый столбец рекордсета представлен массивом. Прямо из поданной драйвером памяти данные непосредственно используются по чтению.
S>Это где это каждый столбец представлен массивом?
В дотнете.
S>Рекордсет традиционно представлен "массивом" строк, каждая из которых — "массив" значений.
Строки в датасете — это, грубо, маппинг сущностей-строк на индексы в массивах.
S>При этом "копировать", собственно, ничего не надо. В реализации IDataRow можно делать конвертацию на лету при помощи MemoryMarshal.
Можно посмотреть на такую реализацию?
V>>В последних дотнетах тоже есть возможность переписать драйверы общения с БД на похожий манер (через упомянутую сборку Unsafe), но вряд ли это сделают, бо легаси такое легаси...
S>Unsafe не должен быть нужен. Сильно пушка большая. Можно испортить больше, чем улучшить.
Это всё риторическое. ))
Избавление от лишних копирований — неплохая награда, чтобы вот прям так категорично...
V>>И да, в плюсах полно реализаций "самого общего сценария"
V>>https://oatpp.io/docs/components/orm/
V>>(с полутыка найдёшь еще несколько)
V>>Но как-то явного лидера не выявилось, по всем перечисленным причинам.
S>Ну, в прошлый раз при разборе лидеров ORM в плюсах оказалось, что самые передовые из них находятся где-то на уровне JDBC, т.е. в глубоком прошлом по сравнению с Linq.
Подходы другие.
Если берут плюсы, то выжимают эффективность, иначе бы зачем брать плюсы?
S>С тех пор, правда, вышел новый стандарт — может кто-то и взялся напилить что-то более современное.
Периодически пилят, но оно не очень популярно.
Плюсы вообще редко общаются с базой напрямую, кроме как для локальных хранилищ, но там схема данных обычно тривиальнейшая.
А если общаются с сервером, то чаще на ответной стороне сервер приложений со своим кешированием, который отдаёт ответ на предопределённые запросы через предопределённые же типизированные наборы данных. И тоже задержки малость не те, к которым привыкли в дотнете.
И обычно данные справочного характера кешируются на клиенте, т.е. по сети лишний раз не гоняются, что тоже резко отличается от принятого в дотнете (по крайней мере, гдя я на это внимательно смотрел).