Re[3]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 23.01.19 06:54
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>все таки плюсиков там много больше. например в оракле данные не просто близко, они интегрированы в логику. там есть понятие валидной процедуры/package, если package валидный, значит у него почти нет шансов завалиться в рантайме, код обращается к существующим таблицам, тип колонок именно тот что ожидает код и т.п. в джаве же запросто можно в рантайме получить что угодно, т.к. логика отдельно, данные отдельно.


Так на статической проверке таблиц плюсы plsql и заканчиваются. Для других языков эту проверку можно получить средствами IDE или через тесты.
Re[4]: Процедуры в БД - это же ужас-ужас!!!
От: Gt_  
Дата: 23.01.19 08:04
Оценка:
Gt_>>все таки плюсиков там много больше. например в оракле данные не просто близко, они интегрированы в логику. там есть понятие валидной процедуры/package, если package валидный, значит у него почти нет шансов завалиться в рантайме, код обращается к существующим таблицам, тип колонок именно тот что ожидает код и т.п. в джаве же запросто можно в рантайме получить что угодно, т.к. логика отдельно, данные отдельно.

A>Так на статической проверке таблиц плюсы plsql и заканчиваются. Для других языков эту проверку можно получить средствами IDE или через тесты.


статическую проверку обеспечивает орм, который не приветствуется в высоконагруженных проектах. да и вообще мода на орм отошла. мне кажется spring boot по дефолту даже драйвер jdbc подгружает лениво, гарантирую сюрприз в рантайме.
подсветка синтаксиса в dev среде это конечно круто, но как там карта ляжет с накатом sql скриптов в проде и что там намерджили в релиз вопрос на миллион. потому в джаве так остро стоит вопрос с CI, тестированием. это целое искусство, тогда как pl/sql прилепленный к данным в этом плане дубовей и надежней.
плюсики там еще есть, но прогресс там остановился лет 10 назад.

Gt_
Re[5]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 23.01.19 09:38
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>статическую проверку обеспечивает орм, который не приветствуется в высоконагруженных проектах. да и вообще мода на орм отошла. мне кажется spring boot по дефолту даже драйвер jdbc подгружает лениво, гарантирую сюрприз в рантайме.

Gt_>подсветка синтаксиса в dev среде это конечно круто, но как там карта ляжет с накатом sql скриптов в проде и что там намерджили в релиз вопрос на миллион. потому в джаве так остро стоит вопрос с CI, тестированием. это целое искусство, тогда как pl/sql прилепленный к данным в этом плане дубовей и надежней.
Gt_>плюсики там еще есть, но прогресс там остановился лет 10 назад.

Как язык он по-моему с момента появление не развивается. Что толку с этой надежности, если в языке нет ни нормальных коллекций, ни удобных конструций для работы с данными, ни элементарных библиотек. Да и надежность эта без тестов мнимая, если изменения в проде не накатятся, то конкретно plsql ничем не поможет. По скорости тоже, если брать не орм, а raw sql или библиотеки типа dapper, то в большинстве случаев просадка в производительности в работе с таблицами будет не критична, зато появится возможность данные из этих таблиц обработать, используя вес арсенал .net или java.
Re[6]: Процедуры в БД - это же ужас-ужас!!!
От: Gt_  
Дата: 23.01.19 12:51
Оценка:
A>Как язык он по-моему с момента появление не развивается. Что толку с этой надежности, если в языке нет ни нормальных коллекций, ни удобных конструций для работы с данными, ни элементарных библиотек. Да и надежность эта без тестов мнимая, если изменения в проде не накатятся, то конкретно plsql ничем не поможет. По скорости тоже, если брать не орм, а raw sql или библиотеки типа dapper, то в большинстве случаев просадка в производительности в работе с таблицами будет не критична, зато появится возможность данные из этих таблиц обработать, используя вес арсенал .net или java.

толк в том что оракл наката sql скриптов сразу и на сервере покажет, что и где теперь развалилось в коде. и самое главное то оракл не позволит запустить инвалидный пакадж в принципе. жава же пойдет исполнять и вылетит где-то на пол пути, когда уже так просто много чего не отвернуть. особливо это отвернуть весело на хадупах, где все построено на работе с файликами, которые в принципе не имеют понятия транзакции.
и конструкции в оракле вполне с умом и расчетом на джуниор девелопера, тогда как в жава люди и после 7 лет опыта явно не врубаются что цикл, в цикле, запускает цикл нифига не удобство конструкций, даже если эти циклы подсластили синтаксисом stream api. тесты в докере на 3 строки, тянут данные в "нормальные коллекции" (тм) и "удобно" долбят их в циклах, а потом на кластере это все вываливается по памяти. ведь yarn дает лишь пару гигов на процесс и все эти удобства вылезают боком генерируя убытки.

Gt_
Re[7]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 23.01.19 15:26
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>и конструкции в оракле вполне с умом и расчетом на джуниор девелопера, тогда как в жава люди и после 7 лет опыта явно не врубаются что цикл, в цикле, запускает цикл нифига не удобство конструкций, даже если эти циклы подсластили синтаксисом stream api. тесты в докере на 3 строки, тянут данные в "нормальные коллекции" (тм) и "удобно" долбят их в циклах, а потом на кластере это все вываливается по памяти. ведь yarn дает лишь пару гигов на процесс и все эти удобства вылезают боком генерируя убытки.


Я мало что понял, но если после 7 лет работы у человека проблема с пониманием циклов, то plsql уже точно не поможет.
Re: Процедуры в БД - это же ужас-ужас!!!
От: Qulac Россия  
Дата: 24.01.19 12:30
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>http://rsdn.org/forum/philosophy/7333307.1
Автор: Географ
Дата: 25.12.18

ЭФ>

процедуры в БД (если по хорошему делать)


ЭФ>Что же в этом хорошего? База данных — самое немасштабируемое место в системе.


Хорошую вещь процедурой не назовут.
Программа – это мысли спрессованные в код
Re[5]: Процедуры в БД - это же ужас-ужас!!!
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.01.19 11:53
Оценка: +1
Здравствуйте, Kswapd, Вы писали:
K>Но, кажется, вы не совсем поняли мою мысль (точнее, пересказанную мысль Роберта Мартина из его книги "Clean Architecture"). Дело в том, что само существование RDBMS вытекает из несовершенства устройства компьютеров. Внутреннее устройство RDBMS "заточено" под конкретный тип конструкций с магнитными головками и вращающимися дисками. Быстродействующая оперативная память ограничена небольшими объёмами, к тому же энергозависима, теряет данные после выключения. Поэтому нужно где-то сохранять данные, а после включения загружать их (часть их) снова в RAM для продолжения работы. Но так будет не всегда. Представим себе компьютер с быстрой энергонезависимой памятью гигантского, практически неограниченного объёма. Зачем тогда программам будет что-то куда-то сохранять?
Тогда программам потребуется Software Transactional Memory. Потому что даже если пренебречь тем, что программа вынуждена время от времени выключаться — штатно или нештатно — нам всё ещё нужно обеспечивать свойства типа атомарности и изоляции транзакций.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Процедуры в БД - это же ужас-ужас!!!
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 14.10.19 01:32
Оценка: +1 -1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>http://rsdn.org/forum/philosophy/7333307.1
Автор: Географ
Дата: 25.12.18

ЭФ>

процедуры в БД (если по хорошему делать)


ЭФ>Что же в этом хорошего? База данных — самое немасштабируемое место в системе.


Неофитов всегда колбасит от новых идеалогий.

Прекрасно все в реляционных базах масштабируется.
Re[2]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 14.10.19 08:00
Оценка: :)
Здравствуйте, Lepsik, Вы писали:

ЭФ>>Что же в этом хорошего? База данных — самое немасштабируемое место в системе.


L>Неофитов всегда колбасит от новых идеалогий.


L>Прекрасно все в реляционных базах масштабируется.


Правильно пишется: от новых "идиологий".
Re: Процедуры в БД - это же ужас-ужас!!!
От: white_znake  
Дата: 30.10.19 22:38
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:


ЭФ>Что же в этом хорошего? База данных — самое немасштабируемое место в системе.


Партицирование, шардирование вполне себе повышают масштабируемость бд. Другое дело, что масштабировать бд — это сложная задача.
Re[2]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 01.11.19 06:08
Оценка:
Здравствуйте, white_znake, Вы писали:

_>Партицирование, шардирование вполне себе повышают масштабируемость бд. Другое дело, что масштабировать бд — это сложная задача.


Это все про хранение данных, чем СУБД и должна заниматься. Вопрос же про код, то есть про сервер приложений, зачем его совать в СУБД?
Re[3]: Процедуры в БД - это же ужас-ужас!!!
От: okon  
Дата: 01.11.19 06:27
Оценка:
Здравствуйте, amironov79, Вы писали:

A>Здравствуйте, white_znake, Вы писали:


_>>Партицирование, шардирование вполне себе повышают масштабируемость бд. Другое дело, что масштабировать бд — это сложная задача.


A>Это все про хранение данных, чем СУБД и должна заниматься. Вопрос же про код, то есть про сервер приложений, зачем его совать в СУБД?


Бывает что перекачка данных из СУБД в сервис и обратно становится узким горлышком для производительности, особенно если они живут на разных машинах.
Гораздо быстрее получается выполнить всю логику в самой БД.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[4]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 01.11.19 07:59
Оценка:
Здравствуйте, okon, Вы писали:

O>Бывает что перекачка данных из СУБД в сервис и обратно становится узким горлышком для производительности, особенно если они живут на разных машинах.

O>Гораздо быстрее получается выполнить всю логику в самой БД.

Ключевое слово "бывает". Получается, что логика на базе это оптимизация, которой как известно не стоит заниматься преждевременно. Когда у тебя есть отдельный сервер приложений, никто тебе не мешает здесь и сейчас написать процедуру в бд и использовать ее.
Re[3]: Процедуры в БД - это же ужас-ужас!!!
От: Gt_  
Дата: 01.11.19 08:02
Оценка: +1
A>Здравствуйте, white_znake, Вы писали:

_>>Партицирование, шардирование вполне себе повышают масштабируемость бд. Другое дело, что масштабировать бд — это сложная задача.


A>Это все про хранение данных, чем СУБД и должна заниматься. Вопрос же про код, то есть про сервер приложений, зачем его совать в СУБД?


в субд есть киллер фичи, которые бывает перевешивают все. например интеграция данных и кода, если DDL изменило типы колонок — база может пометить весь завязанный на эти типы код как инвалид и избавить от множества приключений. сервер приложений же получит эксепшен в рантайме, когда много чего уже и откатить то не выйдет.
плюс скорость, серьезная логика зачастую требует прокачивать в сервер приложений лишние петабайты.
Re[4]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 01.11.19 08:16
Оценка:
Здравствуйте, Gt_, Вы писали:

Gt_>в субд есть киллер фичи, которые бывает перевешивают все. например интеграция данных и кода, если DDL изменило типы колонок — база может пометить весь завязанный на эти типы код как инвалид и избавить от множества приключений. сервер приложений же получит эксепшен в рантайме, когда много чего уже и откатить то не выйдет.

Gt_>плюс скорость, серьезная логика зачастую требует прокачивать в сервер приложений лишние петабайты.

Петабайты, рсубд, изменение ddl... Мне кажется, что-то здесь лишнее.)
Re[5]: Процедуры в БД - это же ужас-ужас!!!
От: okon  
Дата: 01.11.19 08:24
Оценка: 4 (1)
Здравствуйте, amironov79, Вы писали:

A>Здравствуйте, okon, Вы писали:


O>>Бывает что перекачка данных из СУБД в сервис и обратно становится узким горлышком для производительности, особенно если они живут на разных машинах.

O>>Гораздо быстрее получается выполнить всю логику в самой БД.

A>Ключевое слово "бывает". Получается, что логика на базе это оптимизация, которой как известно не стоит заниматься преждевременно. Когда у тебя есть отдельный сервер приложений, никто тебе не мешает здесь и сейчас написать процедуру в бд и использовать ее.


Получается что в итоге часть логики в сервере приложений, а часть в базе и нужно поддерживать оба варианта.
Хорошо когда логика находится в одном месте, а не размазана по разным системам.
Зависит от ситуации, иногда выгоднее всю логику держать в базе, т.к. требуется меньше специалистов чтобы поддерживать все это.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[5]: Процедуры в БД - это же ужас-ужас!!!
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.11.19 08:40
Оценка: 4 (1) +2
Здравствуйте, amironov79, Вы писали:

A>Ключевое слово "бывает". Получается, что логика на базе это оптимизация, которой как известно не стоит заниматься преждевременно.

Между "не стоит заниматься преждевременно" и "это же ужас-ужас" лежит целая пропасть.

Есть много нюансов при взаимодействии СУБД и сервера приложений, от которых зависит правильный баланс.
На одном конце спектра мы имеем client-side joins и projections с предикатами отбора, на другом — адский код внутри СУБД.
Есть соображения производительности решения, при которых минимизация объема данных, перекачиваемых между слоями, играет принципиальную роль, и есть соображения производительности разработчиков и службы эксплуатации.
Для которых принципиальную роль играет синхронизация версий между логикой в приложении и в СУБД.

И есть много разных способов эти нюансы учитывать — от написания сложной логики на T-SQL/PL-SQL и до импорта Java/.Net кода в СУБД, или кросс-компиляции управляемого кода в SQL. Где-то в промежутке сидит linq, который позволяет писать логику на шарпе, а исполнять в СУБД.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Процедуры в БД - это же ужас-ужас!!!
От: Mystic Artifact  
Дата: 01.11.19 08:46
Оценка:
Здравствуйте, Sinclair, Вы писали:

Хочу добавить, что даже если обработка информации точечная, то, клиент постоянно платит за раунд-трип. При обработке чего-то действительно похожего на логику, вполне легко вылезет 20-50 селектов на всякие проверки. Батчить на клиенте... проще уже процедуру написать (имхо).
Re[6]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 01.11.19 09:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Между "не стоит заниматься преждевременно" и "это же ужас-ужас" лежит целая пропасть.


Какая пропасть? Логика в базе это именно "ужас-ужас", которым стоит заниматься только в случае крайней необходимости. Базе -- данные, приложению -- логику!!!))

S>Есть много нюансов при взаимодействии СУБД и сервера приложений, от которых зависит правильный баланс.

S>На одном конце спектра мы имеем client-side joins и projections с предикатами отбора, на другом — адский код внутри СУБД.
S>Есть соображения производительности решения, при которых минимизация объема данных, перекачиваемых между слоями, играет принципиальную роль, и есть соображения производительности разработчиков и службы эксплуатации.
S>Для которых принципиальную роль играет синхронизация версий между логикой в приложении и в СУБД.

S>И есть много разных способов эти нюансы учитывать — от написания сложной логики на T-SQL/PL-SQL и до импорта Java/.Net кода в СУБД, или кросс-компиляции управляемого кода в SQL. Где-то в промежутке сидит linq, который позволяет писать логику на шарпе, а исполнять в СУБД.


Конечно, нужен баланс. Но в любом случае на сервере приложений больше простора для написания логики, начиная от выразительности языка, заканчивая набором библиотек.
Re[6]: Процедуры в БД - это же ужас-ужас!!!
От: amironov79  
Дата: 01.11.19 09:11
Оценка:
Здравствуйте, okon, Вы писали:

A>>Ключевое слово "бывает". Получается, что логика на базе это оптимизация, которой как известно не стоит заниматься преждевременно. Когда у тебя есть отдельный сервер приложений, никто тебе не мешает здесь и сейчас написать процедуру в бд и использовать ее.


O>Получается что в итоге часть логики в сервере приложений, а часть в базе и нужно поддерживать оба варианта.

O>Хорошо когда логика находится в одном месте, а не размазана по разным системам.
O>Зависит от ситуации, иногда выгоднее всю логику держать в базе, т.к. требуется меньше специалистов чтобы поддерживать все это.

Когда требуется меньше специалистов -- это тоже оптимизация.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.