powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Высоконагруженные проекты и запросы
95 сообщений из 95, показаны все 4 страниц
Высоконагруженные проекты и запросы
    #36398136
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно ли тормозят хранимые процедуры, по сравнению с обычными запросами из web-приложения? Почему ebay отказался от процедур и сложных запросов в пользу простых запросов внутри скриптов и обработки данных на веб-серверах? Получается базы жутко тормозят и гораздо быстрее перекинуть данные на web-сервер и обработать, чем предоставить это субд?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398150
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf
за 2006 год, oracle.

No business logic in database
- No stored procedures
- Only very simple triggers (default value population)
Move CPU-intensive work of applications
- Referential integrity
- Joins
- Sorting
Extensive use of prepared statements and bind variables
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398159
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_st
http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf

Им не хватило процессорной мощи их сервера, а распараллелить работу на
кластер они не смогли или не захотели. В результате отказались от
серверного кода. JErik на их месте пошёл дальше и избавился от сервера
как такового.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398188
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
видимо посчитали, что оптимизатор субд слишком наворочен и слишком сложен, у них ограниченное кол-во запросов и наверно им показалось эффективней отказаться от универсального оптимизатора и зашить руками свои запросы.

2Dimitry Sibiryakov
на сколько я помню у них как раз крупнейший оракловый RAC на 16 и 8 нод, правда подозреваю только для аналитики
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398251
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПолучается базы жутко тормозят и гораздо быстрее перекинуть данные на web-сервер и
при данной архитектуре системы, трехзвенной по факту, и особенно конкретной нагрузке, было бы глупо всю обработку логики кидать на сервер, оставляя промежуточному звену лишь мелкие функции. Наоборот, сделали так как и должно быть. Подчеркну, что решение корректное именно потому что
- система трехзвенная (и даже больше)
- нагрузка очень высокая
- действия пользователей специфичны для данной системы

в таких случаях производительность каждой части нужно четко регулировать, в том числе перекидывая часть функционала и на клиентский браузер.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398473
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_sthttp://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf
за 2006 год, oracle.

No business logic in database
- No stored procedures
- Only very simple triggers (default value population)
Move CPU-intensive work of applications
- Referential integrity
- Joins
- Sorting
Extensive use of prepared statements and bind variables

А теперь, вопрос: Что здесь делает Oracle (или любая другая клиент\серверная СУБД)?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398492
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvпри данной архитектуре системы, трехзвенной по факту, и особенно конкретной нагрузке, было бы глупо всю обработку логики кидать на сервер

Всю, это простите, какую!? Действительно, есть некая часть нагрузки, которую можно параллелить средним звеном. Но, извините, именно транзакионную часть, Вы как хотите, но никак не распараллелите на среднем уровне.

kdvНаоборот, сделали так как и должно быть. Подчеркну, что решение корректное именно потому что
- система трехзвенная (и даже больше)
- нагрузка очень высокая
- действия пользователей специфичны для данной системы


Да хоть 958 звеньев по середине. В любом случае СУБД (RAC или аналогичные решения) должна поддержать все это хозяйство.

ЗЫ. Давненько не всплывали темы про N-звенки...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398494
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinА теперь, вопрос: Что здесь делает Oracle (или любая другая клиент\серверная СУБД)?
Рискну предположить, что выступает в роли тупого транзакционного отказоустойчивого хранилища, способного перемалывать груду примитивных запросов.
Угадал?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398500
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПРискну предположить, что выступает в роли тупого транзакционного отказоустойчивого хранилища, способного перемалывать груду примитивных запросов.
Угадал?

Рискну спросить: что для "тупого отказоустойчигого хранилища" проще перемолоть:

Код: plaintext
EXEC MakeClientOrder ... --куча параметров

или

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT...

INSERT...

UPDATE...

SELECT...

UPDATE...

INSERT ...

...

UPDATE...

INSERT...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398510
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin Но, извините, именно транзакционную часть, Вы как хотите, но никак не распараллелите на среднем уровне.
такое впечатление что Вы не писали трехзвенных систем, или никогда в жизни не видели электронных магазинов. Я осмелюсь напомнить, что в массовых эл. магазинах, пусть и не таких "нагрузоустойчивых", чаще всего используется MySQL с движком вообще без транзакций.

Кроме того, не вижу особой связи между транзакционностью и бизнес-логикой. Какая разница, запустить пакет PL/SQL, или выполнить обработку в транзакции в среднем звене? Или что, на Оракле нельзя писать без PL/SQL ? Или PL/SQL намертво привязан к транзакциям?

Собственно, "распараллеливание транзакционной части" на среднем звене не требуется и разумеется из СУБД вынесено быть не может. Но речь как раз о том, чтобы кроме как транзакциями и изменением данных Оракл не грузить, и чтобы вычислениями занималось среднее звено, а не Оракл.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398519
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinРискну спросить: что для "тупого отказоустойчигого хранилища" проще перемолоть:

Код: plaintext
EXEC MakeClientOrder ... --куча параметров

или

Код: plaintext
1.
2.
3.
SELECT...
INSERT...
UPDATE...

Считая, что внутре хранимки находится та же самая последовательность селектов/инсертов/упдейтов - рискну предположить, что тупому отказоустойчивому хранилищу примерно одинаково. На то оно и тупое.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398527
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvтакое впечатление что Вы не писали трехзвенных систем, или никогда в жизни не видели электронных магазинов.

Спасибо. Я ждал примерно такого пассажа.

kdvЯ осмелюсь напомнить, что в массовых эл. магазинах, пусть и не таких "нагрузоустойчивых", чаще всего используется MySQL с движком вообще без транзакций.

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

kdvКроме того, не вижу особой связи между транзакционностью и бизнес-логикой. Какая разница, запустить пакет PL/SQL, или выполнить обработку в транзакции в среднем звене? Или что, на Оракле нельзя писать без PL/SQL ? Или PL/SQL намертво привязан к транзакциям?

Разница есть, и она довольно принципиальна, если Вы представляете себе разработку "морды" электронной площадки и ее "бэкофиса". Дело не в том, что с "клиента" нельзя в принципе вызвать в транзакции ряд инструкций. Дело в том, что эти самые разработчики "морды" и понятия не имеют, как и что хранится и обрабатывается на стороне "бэкофиса" (СУБД). И "пускать" их в хранилище с "прямыми" запросами - это прямой путь к краху всей системы в целом. Уж поверьте...

kdvСобственно, "распараллеливание транзакционной части" на среднем звене не требуется и разумеется из СУБД вынесено быть не может. Но речь как раз о том, чтобы кроме как транзакциями и изменением данных Оракл не грузить, и чтобы вычислениями занималось среднее звено, а не Оракл.

А тут, собственно, никто и не спорит. Часть "вычислений", действительно, можно вынести на средний уровень и распараллелить (чем, собственно, и пользуемся). Но есть часть транзакционной нагрузки, которую, к сожалению, ну никак на среднем звене не распараллелить.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398533
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПСчитая, что внутре хранимки находится та же самая последовательность селектов/инсертов/упдейтов - рискну предположить, что тупому отказоустойчивому хранилищу примерно одинаково. На то оно и тупое.

Это если посмотреть со стороны "тупого хранилища" (потерями на передачу, парсинг и компиляцию отдельных инструкций пренебрегаем (хотя, когда их пару тысяч в секунду...)). А теперь посмотрим со стороны "морды", в которую тупо зашита некая последовательность. Ну, например, мы несколько хотим поменять модель данных и механизм их обработки (например, при вступлении в действие новой скидочной системы), при этом не меняя "отображение" на этой самой морде.

Ваша последовательность действий накатывания обновлений на "систему"? Естественно, это кластер, как минимум NLB на среднем уровне...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398571
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 pkarklin
ЛПСчитая, что внутре хранимки находится та же самая последовательность селектов/инсертов/упдейтов - рискну предположить, что тупому отказоустойчивому хранилищу примерно одинаково. На то оно и тупое.

Это если посмотреть со стороны "тупого хранилища"
Т.е. протоколируем консенсус по поводу того, что со стороны тупого хранилища примерно параллельно?
Оч хорошо.

(потерями на передачу, парсинг и компиляцию отдельных инструкций пренебрегаем
Это разумное решение - пренебречь тем, обсуждение чего может привести к очередному срачу по поводу устаревших планов запросов и прочих накладных расходов начиная прямо таки с эзернета :)
Поддерживаю.

А теперь посмотрим со стороны "морды", в которую тупо зашита некая последовательность. Ну, например, мы несколько хотим поменять модель данных и механизм их обработки (например, при вступлении в действие новой скидочной системы), при этом не меняя "отображение" на этой самой морде.
Ну вот кагбэ из совершенно общих соображений рискну предположить, что как раз таки в случае многозвенок - морда лица (и других частей тела) менее восприимчива к этому самому "несколько поменять модель данных и механизм обработки".

Ваша последовательность действий
Да ну бросьте. Я не умею лечить по фотографии, тем более при отсутствии оной.
Если отвечать в стиле заданного вопроса, то последовательность действий очень простая - взять да обновить.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398669
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvтакое впечатление что Вы не писали трехзвенных систем, или никогда в жизни не видели электронных магазинов. Я осмелюсь напомнить, что в массовых эл. магазинах, пусть и не таких "нагрузоустойчивых", чаще всего используется MySQL с движком вообще без транзакций.
Скажите, что вы шутите...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398703
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymСкажите, что вы шутите...
- Да-да и ПлоХоПлюшка там рулят всех.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398869
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем понятно в общих чертах, для разгрузки oracle, решили перенести обработку на сторону web-приложений. Получается в их случае перебрасывать множество данных простыми запросами на сервер приложений для последующей их обработки выходит быстрее, чем делать это например хранимыми процедурами с выводом конкретного результата. Можно было наверное увеличить количество серверов баз данных и снизить нагрузку, но пошли другим путём.

Кстати, а хранимые процедуры используют в вебе на крупных проектах? В России почти всё пишется на php + my sql и запросы составляются внутри php-страниц, о существовании процедур многие даже не подозревают.

Насчёт интернет-магазинов, крупнейший в мире amazon.com тоже на oracle, но пока не находил информации как у них там с запросами всё устроено.

А так конечно, в основном везде php + mysql, форумы, cms, интернет-магазины (oscommerce к примеру), пишут запросы внутри php-страниц и не задумываются ни о каких процедурах.

Имеет ли смысл выделяться из общего потока и работать только с процедурами? Понятно, что уровень безопасности возрастает (для взломщика невидна схема данных и нельзя изменить сам запрос), а скорость работы сайта?

Ещё один интересный сайт - myspace.com, помню когда-то был мировым лидером толи по количеству посещений, толи по отдаваемому трафику. Там asp.net + ms sql server, велика вероятность использования процедур, но пока тоже не встречалось не подтверждение ни опровержение этого предположения.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398878
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stВ России почти всё пишется на php + my sql и запросы составляются внутри php-страниц, о существовании процедур многие даже не подозревают.
Потому их, сайтеги, и щелкают как орехи...
А в суриозных - только за слово ПыхПых - отстреливают... на месте.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398888
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПолучается в их случае перебрасывать множество данных простыми запросами на сервер приложений для последующей их обработки выходит быстрее, чем делать это например хранимыми процедурами с выводом конкретного результата.

Для абстрактных данных и абстрактной их обработки ничего не "получится". Решение надо находить в каждом конкретном случае.

авторВобщем понятно в общих чертах, для разгрузки oracle, решили перенести обработку на сторону web-приложений.

Еще раз повторюсь. Часть нагрузки (в основном RO нагрузка) можно вынести на средний уровень и баллансировать там. Но в любом случаем саму процессинговую часть, "меняющую данные" в хранилище, никуда не унести.

авторКстати, а хранимые процедуры используют в вебе на крупных проектах?

Да. В полный рост. И не только хп. В "крупных проектах" вообще в большинстве случаев прямой доступ к таблицам закрыт.

авторА так конечно, в основном везде php + mysql, форумы, cms, интернет-магазины (oscommerce к примеру), пишут запросы внутри php-страниц и не задумываются ни о каких процедурах.

Какая то у Вас не полная математическая индукция. Даже этот форум не на пхп и не на майскуле.

авторИмеет ли смысл выделяться из общего потока и работать только с процедурами?

Хотите посоревноваться с лидерами этой отрасли рунета - "выделяйтесь и работайте".

авторТам asp.net + ms sql server

Как уже было сказано выше - не только там.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398902
GrayStrannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymkdvтакое впечатление что Вы не писали трехзвенных систем, или никогда в жизни не видели электронных магазинов. Я осмелюсь напомнить, что в массовых эл. магазинах, пусть и не таких "нагрузоустойчивых", чаще всего используется MySQL с движком вообще без транзакций.
Скажите, что вы шутите...В массовых эл. магазинах на самом деле используется MySQL с движком вообще без транзакций. И с этим нет проблем, потому что транзакция там умещается в один неконкурентный запрос. Даже один из крупнейших интернет-магазинов Болеро на своём сайте официально пишет, что 2-3% заказов заканчиваются отказом в товаре - у них нет своего склада, нет информации по наличию на чужих складах товара и им в транзакции нечего резервировать. Такова жизнь: проблема с отсутствием транзакций поглощается куда большей проблемой с физическим учётом наличия товара на складе.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398906
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrayStrannik,

движок MYSQL без транзакций подразумевает под собой еще и отсутствие FK...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398909
GrayStrannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinКакая то у Вас не полная математическая индукция. Даже этот форум не на пхп и не на майскуле.И много Вы знаете российских форумов, под которыми не MySQL?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398916
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrayStrannikВ массовых эл. магазинах на самом деле используется MySQL с движком вообще без транзакций. И с этим нет проблем, потому что транзакция там умещается в один неконкурентный запрос.

Давайте определимся с терминологией. Под термином "массовый" Вы понимаете кол-во интернет-магазинов или, все-таки, число клиентов одного интернет-магазина?

GrayStrannikДаже один из крупнейших интернет-магазинов Болеро на своём сайте официально пишет, что 2-3% заказов заканчиваются отказом в товаре - у них нет своего склада, нет информации по наличию на чужих складах товара и им в транзакции нечего резервировать.

Гм... Ну, значит, расти им еще и расти. Ни склада своего нет, ни данных о наличии у поставщиков, ни данных о... Кстати, принятие заказа (транзакция) <> резервирование товара под него (еще одна транзакция).

GrayStrannikТакова жизнь: проблема с отсутствием транзакций поглощается куда большей проблемой с физическим учётом наличия товара на складе.

Ну, если "учет наличия товара на складе" для кого-то проблема...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36398936
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrayStrannikИ много Вы знаете российских форумов, под которыми не MySQL?

Мне глубоко наплевать на статистику распределения СУБД по Российским форумам. Не потому, что они, Российские, а потому, что они форумы, и не имеют, за очень редким исключениме отношения к сабжу: "Высоконагруженные проекты".
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399027
igorekk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LInest_stВ России почти всё пишется на php + my sql и запросы составляются внутри php-страниц, о существовании процедур многие даже не подозревают.
Потому их, сайтеги, и щелкают как орехи...
А в суриозных - только за слово ПыхПых - отстреливают... на месте.
Facebook? :)

PS. Правда там не MySQL, там вообще Cassandra.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399064
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvНаоборот, сделали так как и должно быть. Подчеркну, что решение корректное именно потому что
- система трехзвенная (и даже больше)
- нагрузка очень высокая
- действия пользователей специфичны для данной системы

Резюмируя - сделали так, потому что так сделали? :)

По теме:
- нежелние писать на PL/SQL (причин тоже может быть много, в т.ч. и разумных)
- нежелание платить Ораклу за дорогие процессорные лицензии (думаю одна из главных причин)
- и т.д.
Но самое главное, похоже, то, что когда все это делалось, Оракле нихрена не масштабировался под такие объемы, и они сделали что-то вроде home-made MPP на его базе.

Yo.!на сколько я помню у них как раз крупнейший оракловый RAC на 16 и 8 нод, правда подозреваю только для аналитики
Под аналитику там Teradata (EDW > 2Pb) и Greenplum (Data Marts 6.5 Pb). Базы Оракл с такими объемами в природе еще никто не встречал.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399085
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexРезюмируя - сделали так, потому что так сделали? :)
именно. я участвовал в паре действительно мрачных специфических проектов, и оптимизация там совершенно своя. И для повышения производительности приходилось делать массу несвойственных обычным клиент-серверным задачам вещей - денормализацию, дублирование данных, разбиение логики, и т.п., причем иногда в извращенном виде, делая насилие над собой :-)
Apex Оракле нихрена не масштабировался под такие объемы, и они сделали что-то вроде home-made MPP
все может быть.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399086
GrayStrannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinМне глубоко наплевать на статистику распределения СУБД по Российским форумам. Не потому, что они, Российские, а потому, что они форумы, и не имеют, за очень редким исключениме отношения к сабжу: "Высоконагруженные проекты".Мне наплевать на Ваше мнение, на Вас и на то, что Вы считаете "Высоконагруженные проекты". Смотрите, на что отвечаете и думайте, что пишете.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399091
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ApexПод аналитику там Teradata (EDW > 2Pb) и Greenplum (Data Marts 6.5 Pb). Базы Оракл с такими объемами в природе еще никто не встречал.

Ну, не 6.5, конечно:

авторThe site's 1 petabyte of data is managed by 440 Microsoft SQL Server instances and resides on 3PAR Utility Storage. When MySpace needed a message queuing and delivery solution to help ensure data changes were correctly and atomically executed on all affected physical database instances, MySpace created an internal solution, called Service Dispatcher, using the Service Broker feature of SQL Server 2005. Service Broker has helped MySpace ensure data integrity across its distributed infrastructure, resulting in a better user experience. Service Broker also helps MySpace developers to roll out new services faster.

http://whitepapers.techrepublic.com.com/abstract.aspx?docid=1097845
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399093
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrayStrannikМне наплевать на Ваше мнение, на Вас и на то, что Вы считаете "Высоконагруженные проекты". Смотрите, на что отвечаете и думайте, что пишете.

Я, как locky, ща тапок в руки возьму...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399274
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin

http://whitepapers.techrepublic.com.com/abstract.aspx?docid=1097845
Та... еще бы ютуб в пример привели...

kdvИ для повышения производительности приходилось делать массу несвойственных обычным клиент-серверным задачам вещей - денормализацию, дублирование данных, разбиение логики, и т.п., причем иногда в извращенном виде, делая насилие над собой :-)
Самое интерсное, что все вышеперечисленные приемы (кстасти, зачем вы их перечисляли? рассказать мне о том, что делают, чтобы поизводительность повысить?) не имеют отношения к субжу топика :)

Основные недостатоки подобной архитектуры:
- необходимо гонять данные между сервером БД и сервером приложений
- объем кода, как правило, получается больше, т.к. процедурные расширения все же локаничнее
- большие объемы информации на сервере приложений не шибко пообрабатываешь, т.к. для эффективной обработки потребуется написать свой мини-SQL сервер (ну или реализовать его частично)

Так что, если такую архитектуру и выбирают, то уже когда другого выбора нет, имхо.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399319
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Apex
Основные недостатоки подобной архитектуры:
- необходимо гонять данные между сервером БД и сервером приложений
А что, сервер приложений соединён с сервером БД через GPRS-модем какой-нибудь?

- объем кода, как правило, получается больше, т.к. процедурные расширения все же локаничнее
Это утверждение не соответствует действительности.
Во-первых - процедурные расширения для конкретной СУБД пишутся на фиксированном языке. Иногда очень неудачном (с т.з. именно процедурных расширений, например T-SQL).
Во-вторых - сервер приложений не имеет ограничений на используемый язык и степень его, кхмм, "локаничности"
Не может что-то фиксированное выигрывать у чего-то произвольного. Ни в "локаничности", ни в чём другом.

- большие объемы информации на сервере приложений не шибко пообрабатываешь
Разумеется. Так ведь какую-нибудь мега-аналитику обычно и не крутят апп-серверами

У трехзвенной архитектуры конечно же есть свои недостатки. Но совсем не те, что Вы записали в её "основные недостатки".
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399376
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
А что, сервер приложений соединён с сервером БД через GPRS-модем какой-нибудь?

Да хоть 10-ти гигабитный канал.

ЛП
Во-первых - процедурные расширения для конкретной СУБД пишутся на фиксированном языке. Иногда очень неудачном (с т.з. именно процедурных расширений, например T-SQL).

Тем не менее, это, даже не очень удачное расширение, интегрировано с конкретной СУБД гораздо теснее, чем любой другой универсальный язык программирования. Лишнее подтвержение тому обилие ORM'ов, которые по своей сложности и глюкавости уже давно соревнуются с самими серверами приложений.

ЛП
Во-вторых - сервер приложений не имеет ограничений на используемый язык и степень его, кхмм, "локаничности"

Ага, оно и видно: J2EE - Java, Zope - Python, .Net - C#, Tuxedo - C\C++... И самое главное, куда не плюнь, все пользуются "свободой выбора".

ЛП
Не может что-то фиксированное выигрывать у чего-то произвольного. Ни в "локаничности", ни в чём другом.

У чего-то произвольно - согласен. Но речь ведь не о чем-то произвольном.

ЛПУ трехзвенной архитектуры конечно же есть свои недостатки. Но совсем не те, что Вы записали в её "основные недостатки".
Просим.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399399
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Apex
Да хоть 10-ти гигабитный канал.
Ну и славненько. Хотя Вам всё-таки иногда лучше жевать.
10-гигабитный канал - это кагбэ поболе, чем стандартные дисковые системы выдают в последовательном чтении. И уже сравнимо с пропускной способностью памяти.
Если вы считаете, что необходимость передачи данных по 10-гигабитному каналу есть недостаток, то всем РСУБД надо утопиццо. Потому что им приходится читать данные из памяти примерно с такой пропускной способностью, а так же с гораздо более медленного харда.

Тем не менее, это, даже не очень удачное расширение, интегрировано с конкретной СУБД гораздо теснее, чем любой другой универсальный язык программирования.
Стоп.
Вы говорили про лаконичность и объем кода. Когда Вас носом ткнули в глупость - начали зачем то про интегрированность говорить.
Под дурачка косите? Надеетесь, что никто не заметит?

Лишнее подтвержение тому обилие ORM'ов
Лишнее подтверждение чему?
Обилие ОРМ-ов - это по Вашему лишнее подтверждение лаконичности интегрированных процедурных расширений сиквела?

Просим.
Я правильно понимаю, что привёденные Вами "основные недостатки" дальше обсуждать смысла нет?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399435
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Apex
Да хоть 10-ти гигабитный канал.
Ну и славненько. Хотя Вам всё-таки иногда лучше жевать.
10-гигабитный канал - это кагбэ поболе, чем стандартные дисковые системы выдают в последовательном чтении. И уже сравнимо с пропускной способностью памяти.
Если вы считаете, что необходимость передачи данных по 10-гигабитному каналу есть недостаток, то всем РСУБД надо утопиццо. Потому что им приходится читать данные из памяти примерно с такой пропускной способностью, а так же с гораздо более медленного харда.

скорость то может и сравнима, да латентность совсем другая. а это гораздо более значительный фактор.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399448
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndinскорость то может и сравнима, да латентность совсем другая. а это гораздо более значительный фактор.
Истину глаголешь.
Так РСУБД таки надо утопиццо? Потому что у харда латентность тоже немаленькая (а скорость еще ниже)?
:)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399472
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin прав, в высоконагруженных системах боряться за каждую секунду и многое (практически все) кидают на хранимки, и каждый кусок кода шлифуют "как последний раз". Проблема, что часто программисты, не разбираются в тонкостях Базы данных... Это не потому что они тупые, просто не реально знать все (технологий масса...).

P.S.
А мне лично кажется, что Ebay не все говорит про то как у них все сделано... :)
Я бы на их месте, и при их бабле, и при их НАГРУЗКАХ, сделал бы серединку на С (да, да, да), и кластер и разпределение операций по серверах, базу данных с хранимками на Оракл, и не один сервак ... (Вы друзья наверное видели, что начинаеш торговаться за лот и цена уже пошла вверх, а в соседнем окне кидаеш в поиск этот товар, а там цена старая, тоесть таблицы для поиска используются другие и они обновляются через некоторое время)... Мы ушли от темы, и я бы сделал так чтобы этот промежуточный слой вел себя, будто это что-то известное... например виндовс 2008... пусть "любознательные" дети-хакеры поломают голову.

P.S.P.S.
Такие штуки как Ebay - это единичные проекты, в них каждый кусок уникальный и гениальный... И они прям взяли и все нам рассказали, где они что и как делают, что у них как работает, пароли и явки нам дали :). Они свои секреты и алгоритмы берегут как синицу...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399513
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
Истину глаголешь.
Так РСУБД таки надо утопиццо? Потому что у харда латентность тоже немаленькая (а скорость еще ниже)?
:)
Латенси харда будет в обоих случаях, а вот латенси сети, только в одном. Так что под дурачка тут похоже косите вы. А может и не косите.

ЛПВы говорили про лаконичность и объем кода.
Да, я говорил про лаконичность и объем кода.

ЛПОбилие ОРМ-ов - это по Вашему лишнее подтверждение лаконичности интегрированных процедурных расширений сиквела?
Да, по-моему это лишнее подтверждение лаконичности процедурных расширений. ORM - это попытка упростить работу с SQL-серверами для универсальных языков программирования (будь то Java\C++\C#). Раз они появились, значит работать без них не так то удобно, код получается громоздкий, перегруженный лишними деталями. Возьмите любую ХП (хоть на PL/SQL, хоть на T-SQL) и реулизуйте ее на Java.
И кстати, к вопросу о латенси и OPRM'ах - кэши в последних для чего по-вашему стали делать?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399534
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Apex
Да, я говорил про лаконичность и объем кода.
Ну так и куда ж ты родной пытался соскочить? Какую-то залупу начал в ухо вкручивать, интегрированность панимаешь...

ЛПОбилие ОРМ-ов - это по Вашему лишнее подтверждение лаконичности интегрированных процедурных расширений сиквела?
Да, по-моему это лишнее подтверждение лаконичности процедурных расширений. ORM - это попытка упростить работу с SQL-серверами для универсальных языков программирования (будь то Java\C++\C#).
Очередную чушь сказал.

ORM это попытка упразднить работу с DML и вообще абстрагироваться от низлежащей реляционной модели.
Надобность в этом возникает вовсе не из-за того, что какой-то там процедурный язык внутре СУБД якобы лаконичен. Совсем наоборот. Было бы оно там лаконично и красиво - писали бы всё внутре СУБД, не смотрели бы в сторону универсальных языков, и не испытывали бы нужды в скрещении нормального универсального языка с выгрызками sql (или избавлении от этих выгрызок посредством ORM).

Что же до "упрощения работы с SQL-серверами", то упрощается эта работа вовсе не путем использования ORM, а использованием примитивных хелперов поверх библиотек работы с данными.

Раз они появились, значит работать без них не так то удобно, код получается громоздкий, перегруженный лишними деталями.
Если бы процедурные расширения SQL были хороши, то и не было бы надобности ни в универсальных языках программирования при работе с БД, ни в ORM. Как раз таки писали бы совершенно спокойно на T-SQL (pl-sql, и т.д., и т.п.)
Ан нет, противно.

Возьмите любую ХП (хоть на PL/SQL, хоть на T-SQL) и реулизуйте ее на Java.
Любую ХП я спокойно реализую хоть на джаве, хоть на чем. Особо не напрягаясь.
А вот сколь-нибудь сложный код сделать на T-SQL, с его то двумя операторами WHILE и IF, и проверкой @@error после каждого запроса - буэээ.
Это у меня аллергия на "лаконичный T-SQL код".
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399545
Тут примерно так получается: вынужден полностью поддержать ЛП, хотя я с ним "категорически не согласен".
Начну с моих акцессных ответов на первоначально поставленные вопросы.

st_stСильно ли тормозят хранимые процедуры, по сравнению с обычными запросами из web-приложения?

Хранимые процедуры не "тормозят по сравнению с обычными запросами" ни из web-приложения, ни из какого другого.

st_st
Почему ebay отказался от процедур и сложных запросов в пользу простых запросов внутри скриптов и обработки данных на веб-серверах? Получается базы жутко тормозят и гораздо быстрее перекинуть данные на web-сервер и обработать, чем предоставить это субд?
Нет. Так не получается. Базы тормозят не жутко (до определенных пределов).
И данные "перекидывают" на сервер приложений не для того, чтобы "там их обрабатывать".
И уж вовсе не из-за того, что "базы тормозят".

Самая главная военная тайна в приложениях а-ля магазин-ебай заключается в том, что там нет данных, которые надо "обрабатывать".
Зато там есть масса данных, в которые надо глядеть глазками и жмакать по ним ручками с толстыми или тонкими пальцами. "Обрабатывать" на стороне web-сервера в таких задачах физически нечего. Нет там никакой (сложной) "бизнес-логики", требующей применения слова "обрабатывать", что подразумевает выполнение пакетных заданий над большими массивами однородных данных. По крайней мере - на стороне web-сервера, обращенного лицом к конечному покупателю.

Для такой задачи - двухзвенное решение предлагается или n-звенное - хранимые процедуры - козе баян, усложняющий хождение по кочкам и буеракам развития системы.

Пусть мне сказали - пиши такое на акцессе. Нужно быть ъбнутым на своей гордости от умения писать хранимые процедуры, чтобы подвязать пользовательский интерфейс на хранимки против ad-hoc запросов. Образовать грид на View - значит отдать полностью на откуп встроенным средствам
( в моем случае - акцесса) вопросы, связанные на фильтрацией, синхронизацией/рефрешем данных, записью в базу и обновлением. Образовать грид на хранимой процедуре - значит предоставить разработчику возможность гордиться своими умениями выписывать запросы/хранимки на синхронизацию данных и обеспечивать хитроумные возможности (опять через хранимки) по вставке/модификации данных. (Это не упоминая о необходимости обеспечить опысываемость возвращяемых наборов)
Даже если вы ярый сторонник реализации "бизнес-логики" прямо в СУБД, это не обязательно должно означать, что весь код, поддерживающий визуализацию данных, обязательно должен находиться там же - в СУБД?

pkarklin Дело в том, что эти самые разработчики "морды" и понятия не имеют, как и что хранится и обрабатывается на стороне "бэкофиса" (СУБД). И "пускать" их в хранилище с "прямыми" запросами - это прямой путь к краху всей системы в целом. Уж поверьте...

Собственно, презентация по данной топикстартером ссылке утверждает прямо точно тоже самое. Только в еще более жесткой форме.
Причины, по которым меняется структура и деплоемент базы, и причины, по уоторым меняется визуалка сидящая на этой базе (этих базах) имеют различные источники, разную скорость возникновения изменеий и обслуживаются эти задачи разными командами.
С точки зрения ебайных архзитекторов (как я ее понял из презентации) состоит не в том, чтобы отгородить девелопера от таблицы хранимкой, а в том, чтобы полностью отгородить его от базы.
Совсем. На 100%. Нахрън.
Вот тебе девелопер веб-сервис. Ты его проси и он тебе ответит. А база там (какая и где) или файл плоский - не твое девелоперское дело даже вопросы такие задавать.
И буде еще раз спрошено - а какая там у вас СУБД - умник такой подлежит незамедлительному увольнению как саботажник.

Использование хранимого в СУБД кода носит существенно опциональный характер для задачи обсуждаемого сорта, обладающей как минимум двумя характеристиами.
- нет массовой пакетной обработки данных
- в задаче отсутствует "режим", подлежащий хранению в базе, например, в течении сеанса.
(Например, задача всегда работает в текущем времени. Поэтому нет необходимости по разному обрабатывать строки заказа в зависимости от выбранного экранного времени. Такого времени просто нет. Время - это естественный параметр, определяющий "режим" в учетных задачах.
в витринах-магазинах я вообще с трудом представляю, откуда мог бы выплыть хоть какой-нибудь "режимный" параметр)

В условиях, когда архитекторы хотят независимо горизонтально масштабировать приложение и систему хранения данных - отсутствие хранимого в СУБД кода, единственная цель которого - поддержать отображение приложением пользовательских списков выбора, выглядит как понятное решение.
Ни к "тормозят процедуры", ни "к перекинуть и обработать" это отношения не имеет.

Вот в чем я с ЛП категорически не могу согласиться. Никак.
Так это с тем, что хранилище - тупое. Негоже наделять хранилища человеческими качествами.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36399625
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 сосед-акцесник
Как всегда впечатлён.
Чувствую, что так и буду до конца жизни ключи подавать :)

Вот в чем я с ЛП категорически не могу согласиться. Никак.
Так это с тем, что хранилище - тупое. Негоже наделять хранилища человеческими качествами.
Эээ... позвольте заявить в своё оправдание, что очеловечивание хранилища с моей стороны можно рассматривать как акт социального протеста против (интересно, бывает ли протест за?) наблюдающейся тенденции обожествления этого самого хранилища. Тут же ж эттаа... хранилищу молиться готовы... особенно если оракл написано...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401471
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 сосед-акцессник.
Ну наконец-то появился кто-то с опытом разработки нагруженных систем :)

Ну, кроме вышеперечисленного (предметная область хорошо горизонтально масштабируется, основной поток новых требований связан с визуализацией) я бы добавил еще парочку характеристик, повлиявших на выбор eBay их архитектуры:
1) Нет потребности в постоянно целостной базе. Да, остаток на конкретном счету - важен. А вот все остальное - вполне может быть какое-то время не целостно. Собственно, eBay так и делает - у них асинхронные демоны поддержки консистентности.
2) Денег жалко :) Т.е. конечно можно было бы использовать партицирование БД от Оракла (или IBM), и получить те же сотни тысяч запросов. Но цена этого решения была бы, мягко говоря, не сопоставима с доходом от транзакции. Меня вообще удивляет, почему для "линейных" серверов (хранящих данные по счетам и по лотам) используется Оракл - по идее, хватило бы и чего-нибудь более дешевого. Впрочем, подозреваю, уровень скидок Оракла тут достигает 99%, а используют младшие редакции.
3) А вообще, архитектура eBay - это замечательный текст для медитации. Открываешь любую страницу - и начинаешь думать, а почему было сделано именно так. Так как они архитектуру 4 раза переделывали, то видны все те грабли, на которые наступали )

Вообще, при текущей стоимости лицензий и программистов, создавать собственные решения для кластеризации и партишонинга имеет смысл где-то с 4-8 серверов (сильно зависит от страны оплаты труда разработчиков и уровня скидок от вендора БД).
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401484
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex
Основные недостатоки подобной архитектуры:
- необходимо гонять данные между сервером БД и сервером приложений

Э, так если у нас кластер на уровне БД, то гонять данные между серверами - все равно нужно.
Все-таки, предел оперативной памяти для кэшей на уровне сервера БД приходит быстро и стоит дорого - так что одной железкой не обойтись.
А при этом уже нет разницы - гонять данные между серверами БД (как в RAC) или между сервером БД и сервером приложений. Только сервера приложений на пару порядков дешевле (по лицензиям).
Да и у того же RAC довольно быстро наступает предел насыщения (насколько я помню, больше 16 ставить уже не рекомендуют).
Про прочие проблемы (типа разнесения по разным ДЦ, высокая надежность и т.п.) - я уж и не говорю :)


- объем кода, как правило, получается больше, т.к. процедурные расширения все же локаничнее

Э, я как-то реализовывал сложные алгоритмы (которых, правда, в eBay нет) на процедурных расширениях. В общем, на любом приличном универсальном языке работа со сложными структурами и сложной логикой - заметно проще и в создании и, что важнее, в сопровождении. А объем кода - это вообще незначащий показатель :)


- большие объемы информации на сервере приложений не шибко пообрабатываешь, т.к. для эффективной обработки потребуется написать свой мини-SQL сервер (ну или реализовать его частично)

Ну, кроме реляционной алгебры бывают и задачи, требующие потоковой обработки, а тут как раз на сервере приложения делать удобно. Желающие могут написать архивацию внутри SQL-запроса и сравнить )



Так что, если такую архитектуру и выбирают, то уже когда другого выбора нет, имхо.
Да не, в большем числе случаев архитектура выбирается на основе имеющихся кадров. Если куча джавистов - то проще делать трехзвенку с ОРМом, если куча SQLщиков - все будет на хранимках, а уж если куча дельфистов - то вообще все, что угодно.
Но приличного (т.е. создающего поддерживаемый другим джавистом код за приемлимое время и требуемого качества) джависта, как показывает опыт, найти и обучить проще, нежели sqlщика.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401521
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Но приличного (т.е. создающего поддерживаемый другим джавистом код за приемлимое время и требуемого качества) джависта, как показывает опыт, найти и обучить проще, нежели sqlщика.
Над проблемой "создания за приемлимое время требуемого качества легкоподдерживаемого кода" уже не один десяток лет думают широколобые дядьки.
Что характерно - думают весьма успешно. С хорошими результатами.
Что печально - результаты думания широколобых дядек уже не один десяток лет пролетают мимо SQL.
Поэтому неудивительно, что sql-щика, создающего легкоподдерживаемый и далее по тексту код, найти сложнее, чем джависта (дотнетовца и т.п.).
Еще сложнее найти такого чудо-девелопера на ассемблере.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401634
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3
Да не, в большем числе случаев архитектура выбирается на основе имеющихся кадров. Если куча джавистов - то проще делать трехзвенку с ОРМом, если куча SQLщиков - все будет на хранимках, а уж если куча дельфистов - то вообще все, что угодно.
Но приличного (т.е. создающего поддерживаемый другим джавистом код за приемлимое время и требуемого качества) джависта, как показывает опыт, найти и обучить проще, нежели sqlщика.
Какие-то вы, господа, черно-белые. Есть задачи, которые отлично решаются хранимками. Есть задачи, которые принципиально внутри базы решаться не должны. Симбиоз должен быть, а не взаимоисключение. Архитектор в команде нужен, который не будет допускать крайних решений.

Сама компания Oracle в свое время допустила ошибку, пытаясь засунуть внутрь базы несвойственные ей компоненты (генераторы web-страниц, java-машины, olap-движок и т.д.). Сейчас они таких ошибок уже не допускают. Большие ставки делаются на распределенные кэши уровня серверов приложений, на кластеры серверов приложений, на шардинг(думаете зря Oracle бьется за MySQL?). Не стоит повторять их ошибки и впадать в другую крайность, реализуя все на сервере приложений.

Нужно также понимать, что на Oracle сидят не только из-за производительности или масштабируемости. У компании есть имя и оно заслужено. Есть четкая уверенность, что реализовав что-то на продуктах Oracle (по крайней мере на базе данных) - вы не получите через пару лет смену концепции. Все решения, созданные вами, будут продолжать работать.

Попробуйте прийти в какой-нибудь банк и сказать им, что все их Oracle нужно выкинуть, заменить на MySQL с движком MyISAM, а транзактную целостность реализовать на сервере приложений. Будет нервная реакция. И это правильно - бизнес должен быть инертен, когда дело касается денег.

Кстати, хорошие java- и sql-программисты одинаково ценны. И одинаково трудно учатся. Ведь это годы практики.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401676
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinКакие-то вы, господа, черно-белые. Есть задачи, которые отлично решаются хранимками. Есть задачи, которые принципиально внутри базы решаться не должны. Симбиоз должен быть, а не взаимоисключение. Архитектор в команде нужен, который не будет допускать крайних решений.
Ну да, ну да.
Есть задачи, которые хорошо решаются на ассемблере, в крайнем случае на голом С. Всякие там драйверы видеокарт, к примеру, выводящие изображение на монитор.
Есть задачи, которые хорошо решаются на VB.Net. Всякие там WinForms, выводящие изображение на монитор.
Никакого симбиоза между ними быть не может. Чистое взаимоисключение. Не пишутся видюшные драйвера на VB.Net. Не рисуются формочки на ассемблере.

Есть задачи, великолепно решаемые при помощи SQL. И никаким "процедурным расширениям" там и не место. Есть задачи, великолепно решаемые ОО-языками. И там не место фсякому SQL. Никакого симбиоза, чистой воды взаимоисключение. К архитектору не ходи, все там будем.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36401807
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП,

Умолкаю-умолкаю. Уступаю помост гению.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402028
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin
Какие-то вы, господа, черно-белые. Есть задачи, которые отлично решаются хранимками. Есть задачи, которые принципиально внутри базы решаться не должны. Симбиоз должен быть, а не взаимоисключение. Архитектор в команде нужен, который не будет допускать крайних решений.

Э, уж больно большая разница в архитектурах, созданных для команды джавщиков и для команды SQLщиков. Разные риски, разные решения, разные методологии. И сочетать в одном проекте и то и другое (если, конечно, проект меньше 20 человеколет на первом этапе) - дорого и неэффективно.

Пока еще кадры определяют архитектуру - собственно, из-за этого там много нагруженных проектов на MySQL.

[quot]
Есть четкая уверенность, что реализовав что-то на продуктах Oracle (по крайней мере на базе данных) - вы не получите через пару лет смену концепции. Все решения, созданные вами, будут продолжать работать.

Гм, это какой-то новый аргумент. В большей части известных мне проектов Оракл выбирают или потому, что с ним уже имели дело или потому, что "это круто". Производительность и масштабирование актуальны настолько в небольшом числе проектов, что на статистику они не влияют.
А, да, еще затраты на лицензии Оракла можно списать в расходы :) Или добавить в активы. В отличии от зарплат.



Попробуйте прийти в какой-нибудь банк и сказать им, что все их Oracle нужно выкинуть, заменить на MySQL с движком MyISAM, а транзактную целостность реализовать на сервере приложений. Будет нервная реакция. И это правильно - бизнес должен быть инертен, когда дело касается денег.

Гм. В банках используюn Оракл не из-за транзакционной целостности - эти параметры при выборе вендора не слишком значимы :)




Кстати, хорошие java- и sql-программисты одинаково ценны. И одинаково трудно учатся. Ведь это годы практики.
Ну, по моему опыту, хороший sql-дев сейчас дороже (правда, я таких уже давненько не встречал). И качество от лет практики зависит далеко не прямо (далеко не всякая практика идет в плюс). И sql-девов несколько сложнее учить. Сделать хорошего джавщика из студента можно за год, делов-то, процесс налажен. Для sqlщиков, увы, я подобных "фабрик переработки" не видел.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402075
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3И sql-девов несколько сложнее учить. Сделать хорошего джавщика из студента можно за год, делов-то, процесс налажен. Для sqlщиков, увы, я подобных "фабрик переработки" не видел.

угу, последний проект пришлось делать на жава+хибер просто по тому что pl/sql девелоперов на пару порядков меньше и стоят на порядок дороже и пока соберешь нормальную команду ...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402109
Yo.!...
угу, последний проект пришлось делать на жава+хибер просто по тому что pl/sql девелоперов на пару порядков меньше и стоят на порядок дороже и пока соберешь нормальную команду ...

не мне, акцесснику судить, но со стороны кажется прмерно так:

цена ява-програмистов падает по мере увеличения их количества. Но цены pl/sql - программистам уже почти нет. Уже ничего они не стоят. Почти.
Сейчас, мое впечатление, средний "vba-программист", имеющий весьма приблизительное представление о предмете, но способный произнести слов "Excel" и опознать его ярлык на десктопе, стоит дороже pl/sql девелопера
Деньги, которые получает ява-программист еще менее vba-шника зависят от того, насколько он в теме, ввиду жаренности самой явы и обширности ассоциированных аббревиатур.

Типа - pl/sql - пердуны - это чтобы поддерживать унаследованные системы.
Vba - ну, VBA никто не знает и знать не желает, чтобы соседи-профессионалы не смеялись.
Да и умер он уже почти достоверно. За это можно и приплатить временно.
А ява-пионэры - это наше все. Соременные технологии и куча терминологии.
Без них и базу данных в осколки не разобъешь по современному и будущему.
Это неважно, пишут ли они что практическое, или "технологии изучают" - священные коровы и временно стоят дороже ввиду того, что нужны абсолютно всем в строго обязательном порядке. Даже если неизвестно - что с ними в точности делать. Без них ярлыки современных технологий со лба спадают. Как-то так.

DPH3 Ну наконец-то появился кто-то с опытом разработки нагруженных систем :)
Был это юмор, ирония или сарказм - значения не имеет.
У меня нет опыта разработки не только нагруженных, но и вообще - чего-то такого, что можно было бы назвать словом "систем".

Тем не менее, полагаю, что вы ошибаетесь, считая, что у ебая нет потребности в целостности данных (если так понимать вашу фразу: автор Нет потребности в постоянно целостной базе ).
Именно потому, что такая потребность есть и выписываются вручную "слои поддержки целостности" на яве после того, как база оказывается расколотой архитекторами системы.
Это сознательное (или, на выбор, - неизбежное) привнесение допотопности в общую систему.
Допотопности здесь синоним нестандартности, сделанности вручную местными умельцами.
Это много-много "акцессов", работающих с множеством линкованных таблиц и "поддержвающих целостность на клиенте". Для первого приближения это - 100%ная аналогия.

Временные задержи не от отсутствия потребности в целостности данных, а от неудавшихся попыток замести под ковер объективную нехватку производительности подсистем ввода-вывода, или есть следствие субъективного отказа от признания неудачи в выборе поставщика СУБД.

ЛПЭээ... позвольте заявить в своё оправдание, что очеловечивание хранилища с моей стороны можно рассматривать как акт социального протеста против (интересно, бывает ли протест за?) наблюдающейся тенденции обожествления этого самого хранилища. Тут же ж эттаа... хранилищу молиться готовы... особенно если оракл написано

:))
Ну, тогда уж несчастным его назови, что-ли.
Раскалывали хранилище на кусочки не предупредив, что с самого начала для того и выбирали, чтобы потом расколоть.

Чуется мне, что через какое-то время, совершив соотвествующую петлю, завершится это тем, что в современных терминах могло бы быть названо монолитным решением.
Будет эта какая-нибудь экзадата шрих энного поколения или диби-два-в-ионосфере - поживем увидим.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402116
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 сосед-акцесник
Чуется мне, что через какое-то время, совершив соотвествующую петлю, завершится это тем, что в современных терминах могло бы быть названо монолитным решением.
Будет эта какая-нибудь экзадата шрих энного поколения или диби-два-в-ионосфере - поживем увидим.
мс акссес ебай эдишн
:)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402119
ЛП...мс акссес ебай эдишн
:)
толково.
:)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402120
Психиатр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда интересно разговаривать сам с собой? Клинический случай - заявляю авторитетно
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402127
ПсихиатрПравда интересно разговаривать сам с собой? Клинический случай - заявляю авторитетно
Ну да. Вот так и живу. Ведь разговаривать мне больше и не с кем.
http://www.youtube.com/watch?v=ENApxvijIio&feature=related
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402315
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю в высоконагруженных проектах встречаются и проблемы с БД.
Например: deadlock-и, блокировки одних запросов другими и т.д.

1. Такие вещи гораздо легче решаются когда доступ к БД осуществляется через слой хранимых процедур. Другое дело, что на разработку/поддержку этого слоя приходится тратить уйму времени.
2. Решать же подобные проблемы при доступе к БД напрямую из приложения не очень легко. Каждый пишет что хочет и где хочет. Определить какие действия приложения вызвали deadlock, блокировку требует больших усилий.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402758
Павел-ПКак я понимаю в высоконагруженных проектах встречаются и проблемы с БД.
Например: deadlock-и, блокировки одних запросов другими и т.д.

1. Такие вещи гораздо легче решаются когда доступ к БД осуществляется через слой хранимых процедур. Другое дело, что на разработку/поддержку этого слоя приходится тратить уйму времени.
2. Решать же подобные проблемы при доступе к БД напрямую из приложения не очень легко. Каждый пишет что хочет и где хочет. Определить какие действия приложения вызвали deadlock, блокировку требует больших усилий.

И вновь прошу прощения.
как акцессник вам говорю - вы демонизируете роль "хранимых процедур".

В упомянутом вами смысле ценность хранимых процедур не в том, что они хранятся в базе данных,
а в том, что они представляют собой набор фиксированных, обязательных к применению интерфейсов , обеспечивающих взаимодействие с "ядром" конкретной системы, предназначенной поддерживать множество разносортных прикладных задач.
Хранимые процедуры не сами по себе исключают возможность смертельных объятий, а лишь в силу того, что реализуют некоторую прикладную логику, которая с точки зрения программиста, решающего одну из множества прикладных задач, изначально ему заданна и обязательна к использованию при обращению к "ядру системы". Т.е. система здесь рассматривается не как некая абстрактная "база данных" или "система управления базой данных", а как совершенно конкретная реализация некоторой схемы, представляющей заранее заданную предметную область.

К нагруженности системы это прямого (вообще никакого) отношения не имеет.
Как и к возможности реализации такого именно как вы сказали - слоя как части ядра системы управления набором (классом) заранее известных прикладных задач - с помощью кода, находящегося технически вне СУБД. В том числе, в виде набора библиотек/сервисов написанных и на java, исполняемого (в том числе) на серверах приложений.

Вопрос управляемости кода, содержащегося в таком слое более-менее вменяемо решается и когда он целиком реализован в СУБД в виде хранимых процедур и когда он целиком реализован вне СУБД.

В смысле логики построения всей конструкции, код такого сорта является не частью прикладной задачи, а частью "системы", ресурсы которой использует прикладная задача.
Т.е. - предоставленным прикладной задаче ресурсом, интерфейсом, способом общения с системой.

Граница, по которой происходит разделение между прикладной задачей и системой
(знает ли прикладная задача, что такое "таблица" или "хранимая процедура") -
это уже всегда конкретная история. Не обязательно переносимая в другие обстоятельства, и потому не всегда пригодная к обсуждению в терминах хорошо оно или плохо.
В том смысле, в каком "история не терпит сослагательного наклонения".

PS
Сегодня обнаружил, что практически та же по содержанию тема одномоментно обсуждается в
форуме "Разработка информационных систем".
Занятно.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402760
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понимаю в высоконагруженных проектах встречаются и проблемы с БД.
Например: deadlock-и, блокировки одних запросов другими и т.д.
1. Такие вещи гораздо легче решаются когда доступ к БД осуществляется через слой хранимых процедур. Другое дело, что на разработку/поддержку этого слоя приходится тратить уйму времени.

Э, а как это слой хранимых процедур облегчает решение проблем с дедлоками? Каким способом?


Каждый пишет что хочет и где хочет. Определить какие действия приложения вызвали deadlock, блокировку требует больших усилий.
Э, команды, в который все настолько плохо - очень редко делают высоконагруженные системы. А еще реже - доводят до конца. И хранимые процедуры не спасут, тут проблема в головах :)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402768
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3,

Я не являюсь сторонником ни первого, ни второго варианта.

1. Э, а как это слой хранимых процедур облегчает решение проблем с дедлоками? Каким способом?

Да очень просто. Помогает быстрее найти причину и устранить. Предположим вы поддерживаете неизвестное вам приложение и получаете информацию о том, что у вас происходит deadlock. В случае с хранимыми процедурами вы четко видите на уровне базы данных, что вызывались такие-то процедуры и ...
В противном случае Вы просто увидите несколько запросов, сгенерированных LINQ(или чем-нибудь еще) и далее еще будете тратить огромное количество времени для того, чтобы выяснить из какого места приложения пришли эти запросы и т.д.
Попробуйте сами для себя составить алгоритм решения проблемы в первом и втором случае. И увидите, что реально помогает.

2. Э, команды, в который все настолько плохо - очень редко делают высоконагруженные системы. А еще реже - доводят до конца. И хранимые процедуры не спасут, тут проблема в головах :)

Для того, чтобы возник deadlock достаточно наличия и хороших команд. Нужно лишь в транзакции нарушить последовательность обхода таблиц и немного нагрузить систему. Вот он и появился.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402775
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел-ПDPH3,
Я не являюсь сторонником ни первого, ни второго варианта.

А какого?



Да очень просто. Помогает быстрее найти причину и устранить. Предположим вы поддерживаете неизвестное вам приложение и получаете информацию о том, что у вас происходит deadlock...

Ну да. После этого смотрю в логи application layer, вижу exception и стек вызовов и сразу понимаю, в рамках какой бизнес-операции, для каких объектов, в какой строчке кода я получил проблему (а если система написана хоть чуть-чуть с мозгами - то и кучу дополнительной отладочной информации). И зачем мне тут хранимки?
Linq2sql и прочие ORMы лучше вообще не рассматривать, у них вполне конкретная сфера применения, к нагруженным системам отношения не имеющая.


Для того, чтобы возник deadlock достаточно наличия и хороших команд.

Я, вообще, комментировал фразу "Каждый пишет что хочет и где хочет. Определить какие действия приложения вызвали deadlock, блокировку требует больших усилий". Указанное однозначно говорит об отвратительном подходе к разработке, близком к полному непрофессионализму.


Нужно лишь в транзакции нарушить последовательность обхода таблиц и немного нагрузить систему. Вот он и появился.
Обычно deadlock - это проблема в проектировании, связанная с неправильно осознанной бизнес-логикой. Последовательность обхода таблиц - это так, технические симптомы. Т.е. дедлоки - это ошибка проектирования, а не кодирования :) Впрочем, к хранимым процедурам это отношения не имеет, точно так же можно вызвать не в том порядке хранимки.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402779
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сосед-акцессник
Вопрос управляемости кода, содержащегося в таком слое более-менее вменяемо решается и когда он целиком реализован в СУБД в виде хранимых процедур и когда он целиком реализован вне СУБД.

интересно, что за язык вне субд сможет выдать аналог %rowtype или отследить какие куски кода перестали работать после того как дба накатил DDL-патчик который подправил структуру бд ?

ЗЫ. искренне порадовался за бесценных pl/sql программеров, которых уже почти нет и потому у них почти не стоит. я ваш пассаж верно понял ?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402790
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3,

Прикол deadlock-ов и блокировок именно в том, что здесь участие принимают две сессии.
Для deadlock-а в application trace file вы увидите только что какой-то кусок функциональности был выбран жертвой deadlock-а и был убит. О втором куске функционала вы не узнаете ничего (разве что номер сессии). Только граф deadlock-а вам поможет. А в нем вы увидите информацию на уровне движка БД, т.е. sql запросы. Вот и догадывайтесь откуда взялся второй запрос из application layer.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402792
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
интересно, что за язык вне субд сможет [...] отследить какие куски кода перестали работать после того как дба накатил DDL-патчик который подправил структуру бд ?

Да любой :) Тесты на весь DL, как обязательная часть тестирования версии никем не отменялись.
А если DBA меняет DDL вне рамок процедуры подготовки версии (с документированием, тестированием, инструкцией по развертыванию и т.п.), то это означает отсутствие процесса разработки в компании (или его несоблюдение отдельным DBA). Если результат таких патчей привел к каким-либо проблемам на продакшне - то минимум одно увольнение необходимо (DBA или управленца - зависит от компании).

А вообще, контроль целостности кода и контроль зависимостей в современных языках с статической типизацией и средствами контроля и поиска возможных ошибок (я про всяческие findbug) на порядок совершеннее такого даже в лучших sql-like языках. Другое дело, что автоматической связи его с реальной структурой БД я не видел (кстати, сделать - не очень сложно), эти проблемы решаются административными методами. Впрочем, все проблемы с соблюдением интерфейсов между модулями решаются административными методами, так что порядок все равно нужен, систем, состоящих только из БД уже не встречается.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402800
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3,

"Я не являюсь сторонником ни первого, ни второго варианта.

А какого?"

Любой разработчик БД (который отвечает за БД) (+ администратор БД) в данном случае будет ратовать за наличие слоя хранимых процедур. Это и понятно, ведь это позволяет контролировать то что происходит в БД на уровне БД. И вы четко знаете, что доступ к БД будет осуществляться на уровне выставленных интерфейсов и никак подругому.
Расматривайте хранимые процедуры просто как интерфейс между БД и следующим уровнем (приложением). При этом хранимые процедуры никогда не уступят в производительности запросам, генерируемым из приложения. На то они и хранимые процедуры.

Другое дело, что данный подход требует больших трудозатрат. Ведь слой хранимых процедур надо создать и поддерживать. А это не просто. Вот и приходится людям искать компромис.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402803
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3,

Если бы все проблемы в жизни решались только административными мерами - то все приложения работали без ошибок и как надо. Написал бумажку "Приложения должны работать правильно" - и все. :-)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402806
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел-ПDPH3,
Если бы все проблемы в жизни решались только административными мерами - то все приложения работали без ошибок и как надо.
:-)
Ну, сейчас большая часть необнаруженных в продакшне ошибок появляется на фазе интеграции, а автоматических средств проверки корректности интеграции, увы, нет (и еще долго не появиться). Так что административные механизмы (все - от code style до методологии бизнес-анализа) в основном и определяют качество продукта :)

Кстати, тут уже указывали, что в среднем уровень развитости методологии разработки для БД ниже, нежели для application layer. Чисто исторически, увы.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402812
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!интересно, что за язык вне субд сможет выдать аналог %rowtype или отследить какие куски кода перестали работать
чудо
просто чудо
это ж блин невзъебически сложная задача, отследить какие куски кода перестали работать
ни джаве, ни шарпу, никому с таким не сдюжить.
да и вообще никакому языку вне субд
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402814
Yo.!
...
интересно, что за язык вне субд сможет выдать аналог %rowtype или отследить какие куски кода перестали работать после того как дба накатил DDL-патчик который подправил структуру бд ?

ЗЫ. искренне порадовался за бесценных pl/sql программеров, которых уже почти нет и потому у них почти не стоит. я ваш пассаж верно понял ?
1) я недостаточно образован в pl\sql, для того, чтобы сообразить, в каких обстоятельствах может иметь значение %rowtype.
Отвечу вам так:
добавление поля администратором никакой фактически написанный код не заметит - ни использующий %rowtype, ни обошедшийся без него. Если только не делается технических ошибок вида
Код: plaintext
Select * Into userDefined_no_rowtype_RecodType From youTable
(что не во всех обстоятельствах даже может быть за ошибку принято)

А вот удаление (или переименование) поля заметит любой код ( как использующий %rowtype, так и нет), фактически обращяющийся к этому коду. Нет разницы

Код: plaintext
1.
2.
3.
4.
Select * into rowTypedVariable From Table

IF rowTypedVariable.DeletedField IS NULL THEN
  DoManyCrazyWork;
END IF;

или

Код: plaintext
1.
2.
3.
Select DeletedField Into ValueForDeletedField From Table
IF ValueForDeletedField THEN
  DoManyCrazyWork;
END IF;
для развала pl/sql-кода в случае удаления поля.
Т.е., с точки зрения необразованного акцессника - %rowtype - сам по себе - почти целиком мимо кассы в качестве страховочного механизма.

Что касается компиляции хранимого в субд серверного кода как инструмента, удостоверяющего, что "система поднимется" - да, такую роль компиляция серверного кода играет.
(Я так понимаю, что случай динамического исполнения pl/sql-кода мы не рассматриваем)

Но система и при альтернативном подходе как-нибудь да стартует....
Да, какие-то механизмы, вроде статической компиляции такой, при которой автоматически проверяется валидность имен объектов бд выглядит как желательные. Так или иначе - это технологический элемент и каким-то образом, вплоть до административных мер, он может быть затребован к обеспечению. (создатели орм-ов, кстати, клянутся, что нечто подобное, при определенном способе обращения с их поделиями, может быть достигнуто. На практическом уровне я в этом ничего не понимаю.)

(правильная работа системы в любом случае не обещана. )

Дело, на мой взгляд, не в том - можно или нельзя статическую проверку такого сорта организовать при обращении к объектам БД извне.

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

В обсуждаемом случае (ebay) границы системы точно расположены вне субд, т.к. база данных носит осколочный характер и поддержка ее целостности вынесена за пределы средств используемой субд.
Безусловно, это увелививает уровень сложности всей системы в целом.
Самым же суещственным является то, что после выноса кода хранимых процедур ( там, где они играли роль костяка системы, остова, задающего способ обращения с системой - прикладного интерфейса) наружу, роль такого кода не меняется.
Он как был частью "ядра системы", так и остался. Изменилась не логика, а "распределение" системы и способ обращения с/к ней прикладного кода.

Особенности физиологии программистов pl/sql - вам, вероятно, должны быть виднее.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402840
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Павел-П
Любой разработчик БД (который отвечает за БД) (+ администратор БД) в данном случае будет ратовать за наличие слоя хранимых процедур.
Не "любой", а "некоторый".
И зачастую этот самый "некоторый" будет ратовать (за то, за что он будет ратовать) лишь по той простой причине, что по другому ваще никак не умеет. Вместо того чтоб книжки читать - он свирел в свою свирель, и мир хотел в свою хотель.

Это и понятно, ведь это позволяет контролировать то что происходит в БД на уровне БД.
Вот это самое "контролировать то что происходит в БД на уровне БД" - имеет какую-то абсолютную ценность?
Почему бы не контролировать то, что происходит в БД, на уровне <некоторомдругом>?

Ценность может представлять единственность места, где происходит контроль, в противоположность размазанности контролирующих кусков по слоям и звеньям.
Но ценность выбора именно уровня хранилища данных в качестве места расположения такого контролирующего блока - по меньшей мере небесспорна.

И вы четко знаете, что доступ к БД будет осуществляться на уровне выставленных интерфейсов и никак подругому.
И вы чётко знаете, что доступ к БД будет осуществляться например через апп-сервер, и никак по другому.

Расматривайте хранимые процедуры просто как интерфейс между БД и следующим уровнем (приложением).
Рассматривайте например апп-сервер просто как интерфейс между БД и следующим уровнем (приложением).

При этом хранимые процедуры никогда не уступят в производительности запросам, генерируемым из приложения. На то они и хранимые процедуры.
Утверждение неверно.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36402986
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП,

Хотелось бы немного аргументов. Слова "утверждение не верно" как-то уж звучат как истина в первой инстанции.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403023
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел-ПХотелось бы немного аргументов. Слова "утверждение не верно" как-то уж звучат как истина в первой инстанции.
аргументов дофига. например, есть набор данных, который надо клиенту видеть в отсортированном виде. есть несколько вариантов

- отсортировать на сервере. но если объем данных большой, то сортировка может быть долгой, и также будет велик объем данных пересылаемых на клиента.

- сортировать мелкими кусками, с фильтрацией. Оптимально, но если клиент делает такие сортировки часто, он "затрахает" сервер

- получить данные с сервера в клиента один раз и сортировать их на месте сколько угодно по разным критериям.

то же самое с процедурами. есть разные обработки, одни выгоднее делать на сервере, другие выгоднее на клиенте.

Павел-ППри этом хранимые процедуры никогда не уступят в производительности запросам, генерируемым из приложения
для Interbase/Firebird это справедливо, если сравнивать только скорость выполнения не учитывая то что я сказал выше.
В других серверах Ваше предположение (!) может быть как истинно, так и ложно.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403080
пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел-ПЛП,

Хотелось бы немного аргументов. Слова "утверждение не верно" как-то уж звучат как истина в первой инстанции.Если в ХП хранится план запроса то со временем без перекомпиляции ХП он может стать неоптимальным
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403105
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_st wrote:
> Сильно ли тормозят хранимые процедуры, по сравнению с обычными запросами
> из web-приложения?

Я бы сказал, что они наоборот, сильно быстрее летают.

Почему ebay отказался от процедур и сложных запросов
> в пользу простых запросов внутри скриптов и обработки данных на
> веб-серверах?

Не знаю. Как минимум для размышлений над этим вопросом требуется
знать СУБД, применяемую там. Хорошо бы ещё и пруфлинк дабы предотвратить
неправильную интерпретацию информации аффтарам.

Получается базы жутко тормозят и гораздо быстрее
> перекинуть данные на web-сервер и обработать, чем предоставить это субд?

Нет, это бредовое заявление. Данные при любом варианте выполнения запроса
никуда не передаются для обработки, обрабатываются запросом только
внутри СУБД, а приложению передаются уже результаты.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403117
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел-ПЛП,

Хотелось бы немного аргументов. Слова "утверждение не верно" как-то уж звучат как истина в первой инстанции.
Это Ваше утверждение звучит как истина в первой инстанции.
Моё - истина в последней :)

План выполнения ХП фиксирован. Можно даже предположить, что он является даже оптимальным.
Только вот сегодня он оптимален, а завтра уже нет. Потому что изменились данные, с которыми этой ХП приходится работать.
А если не повезёт, то план выполнения станет неактуальным уже сегодня, потому что изменятся входные параметры процедуры.
И если с устареванием планов выполнения еще можно бороться периодическими перекомпиляциями хранимых процедур, то что делать с зависимостью оптимального плана от входных параметров - в общем случае непонятно.

Так что Ваше "хранимые процедуры никогда не уступят в производительности" с полпинка окажется неверным уже даже на примитивной процедурине типа "select * from таблица where индексированноеполе = параметрхранимки"
И чем дальше в лес, тем толще партизаны.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403123
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППавел-ПЛП,

Хотелось бы немного аргументов. Слова "утверждение не верно" как-то уж звучат как истина в первой инстанции.
Это Ваше утверждение звучит как истина в первой инстанции.
Моё - истина в последней :)

План выполнения ХП фиксирован. Можно даже предположить, что он является даже оптимальным.
Только вот сегодня он оптимален, а завтра уже нет. Потому что изменились данные, с которыми этой ХП приходится работать.
А если не повезёт, то план выполнения станет неактуальным уже сегодня, потому что изменятся входные параметры процедуры.
И если с устареванием планов выполнения еще можно бороться периодическими перекомпиляциями хранимых процедур, то что делать с зависимостью оптимального плана от входных параметров - в общем случае непонятно.

Так что Ваше "хранимые процедуры никогда не уступят в производительности" с полпинка окажется неверным уже даже на примитивной процедурине типа "select * from таблица where индексированноеполе = параметрхранимки"
И чем дальше в лес, тем толще партизаны.
И про какую же базу данных мы сейчас говорим?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403151
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinИ про какую же базу данных мы сейчас говорим?
А про какую базу говорил Павел-П, категорично утверждая своё "никогда"?
Если про any, то для опровержения достаточно exists
:)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403157
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сосед-акцессник
PS
Сегодня обнаружил, что практически та же по содержанию тема одномоментно обсуждается в
форуме "Разработка информационных систем".
Занятно.

эгрегор

и может быть наверно и на других живых форумах по СУБД (в том числе ангельско-язычных тоже)
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36403452
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3
Да любой :) Тесты на весь DL, как обязательная часть тестирования версии никем не отменялись.

не совсем понял, а чем тесты помогут ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE or REPLACE PROCEDURE PROCEDURE1 IS
  x table1.a%type ;
BEGIN
  select a into x from table1 where rownum= 1  ;
-- много всякого кода
  insert into table2 values ( 1 ,x) ;
END;
допустим были table1.a и table2.a интами, поглотили конкурента пришлось table1.a на варчар поменять. в хп субд проблему обнаружит, а как тесты DL узнают о связи table1.a с table2.a и отловят проблему ?

Павел-ПDPH3,

Если бы все проблемы в жизни решались только административными мерами - то все приложения работали без ошибок и как надо. Написал бумажку "Приложения должны работать правильно" - и все. :-)
тут мне осталось лишь добавить, что тесты к тому же не фича языка

2сосед-акцессник
вы бы хотя бы базовые вещи изучили бы что-ли ...
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404110
Павел-П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndin,

А вы проведите тест. Сгенерируйте огромное количество данных. И выполняйте свой запрос под большой нагрузкой. Вот и получите ответ.
Исходя из ваших аргументов - хранимые процедуры это зло. Ими вообще пользоваться не стоит. А вдруг они вообще работать откажутся в движке СУБД. Поэтому будем пользоваться обычными запросами. А то что запрос на сервере надо скомплировать - это никаких ресурсов не требует (об этом мы умалчиваем).
А вы знаете иногда оптимизатор неверно строит план запроса и для обычных запросов. Может и их запретить стоит. Вы знаете иногда и пешеход обгоняет машину, если в первой бензин закончился. Теперь сделаем вывод, что пешеходы ходят быстрее чем машины.

Вообще-то очень жаль, что обычная дискуссия перерастает в выяснение отношений кто круче.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404237
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
не совсем понял, а чем тесты помогут ?

Тем, что при изменении структуры БД, если какие-либо ошибки будут внесены, то при тестировании они все и вылезут. В конкретном примере - на первом же инсерте в изменившуюся таблицу, т.е. еще на фазе юниттестов, даже не интеграционном.

А так как тесты все равно нужно писать - что для хранимок, что для отдельных запросов - то особого смысла в проверках на уровне БД (для указанных сценариев) - нет.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404293
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел-П,

эм... а я то тут при чем? ;)) мое мнение - хранимые процедуры отлично решают определенные задачи.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404298
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3
Тем, что при изменении структуры БД, если какие-либо ошибки будут внесены, то при тестировании они все и вылезут. В конкретном примере - на первом же инсерте в изменившуюся таблицу, т.е. еще на фазе юниттестов, даже не интеграционном.
ну ясно. об том собственно и речь, что язык апп-сервера (в отличие от языка хп) чего-то там контролировать не способен и одного дата лаера не помогут, только регресивное тестирование со всеми вытекающими.

в ветке проектирования примерно такой-же срачь, там правда напирают на некие мифические апп-сервера с интер-транзакционным кешами которые прекрасно масштабируются. что за за чудесные такие сервера пока выпытать не удалось, но у себя заметил такую вещь: ООП по большому счету процедурное программирование и жава программеры (подавляющее большинство) не умеют мыслить множествами. если жава-архитек еще как-то основные вещи правильно делает, то второстепенные моменты системы обычные жава-лабатели делают стандартно - в цикле взял объект->поковырял->положил в зад. в результате хибер, который сам по себе страшненький sql генерит, но еще с таким подходом тупо долбит в цикле запросами. и получается хрень когда задачу которую решал один старенький сервер бд с pl/sql после перехода на апп-сервер + хибер уже сервер субд без логики уже не справляется. не потому что пл-скл столь чудесен, а просто потому что в отличае от программеров хп для жава программеров субд черный ящик и они не привыкли мыслить множествами.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404313
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
язык апп-сервера (в отличие от языка хп) чего-то там контролировать не
способен

И это говорит апологет сервера, в котором есть понятие "инвалидные
объекты"... Суровый такой контроль: если процедура перестала работать,
значит кто-то изменил метаданные.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404413
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
ну ясно. об том собственно и речь, что язык апп-сервера (в отличие от языка хп) чего-то там контролировать не способен и одного дата лаера не помогут, только регресивное тестирование со всеми вытекающими.

Хм. Ты читаешь то, что написано или то, что хочешь?
Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше, чем в всяких SQLподелках - еще на этапе компиляции.
Другое дело, что если у нас весь SQL код внутри application layer, то средствами языка контролировать соответствие этого кода и структуры БД - невозможно (вернее, неудобно, сделать то можно) - вот и приходится рассчитывать или на юнит-тестирование или на функциональные тесты.
Но так как и то, и другое все равно нужно - что для хранимых процедур, что для сервера приложений, разницы в уровне качества контроля - не будет.

В голову закрадывается страшная мысль - может, ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle?
И, кстати, есть какой-нибудь аналог junit для хранимых процедур?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404487
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
И это говорит апологет сервера, в котором есть понятие "инвалидные
объекты"... Суровый такой контроль: если процедура перестала работать,
значит кто-то изменил метаданные.

вообще-то это и есть основная вещь из этого контроля, т.е. язык имеет механизм защиты от запуска кривого кода, зачатки подобного механизма уже появляются и жава фреймворках.

DPH3
чем в всяких SQLподелках - еще на этапе компиляции.
задело что-ли ? да ладно, чего тут обижаться как мальчик которому открыли глаза на историю с дедом морозом. давай, утри сопли и попробуй
DPH3Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше
выдать вместо эмоций хоть что-то техническое. что по твоему в языке жава в плане контроля на порядок выше pl/sql ?

DPH3
ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle?
нет.
DPH3
И, кстати, есть какой-нибудь аналог junit для хранимых процедур?
ну а сам то как думаешь ?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404494
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Павел-П
А вы проведите тест. Сгенерируйте огромное количество данных. И выполняйте свой запрос под большой нагрузкой. Вот и получите ответ.
Да мне то нахрена это надо? Я и так знаю, что получится в итоге.
Вот Вы можете попробовать сотворить в нулевом приближении ебайную эмуляцию.
Сервер БД, веб-сервер, страничка.
В первом варианте со страницы уходит простой селект.
Во втором варианте со страницы уходит обращение к хранимке, содержащей тот же самый простой селект.
Попробуйте заметить разницу во времени. Может хоть после этого эксперимента перестанете по форумам мудачества писать на тему "затрат ресурсов на компиляцию хп".

Исходя из ваших аргументов - хранимые процедуры это зло.
Нет.
Я далёк от мысли демонизировать хранимки. Но я их и не идеализирую. В отличие от многих здешних участников, которым даже лежащее на поверхности утверждение о том, что ХП могут быть медленнее, требуется в рот положить да расжевывать. Настолько они готовы на хранимки молиться, что им даже в голову не приходит, что там может быть что-то медленно и/или что-то плохо.

Ими вообще пользоваться не стоит. А вдруг они вообще работать откажутся в движке СУБД.
Вам - возможно и не стоит пользоваться. Тем более если они у Вас "вдруг" перестают работать.

Поэтому будем пользоваться обычными запросами.
Дык и до написания запросов не факт что Вас стоит допускать.
Use ORM.

А то что запрос на сервере надо скомплировать - это никаких ресурсов не требует (об этом мы умалчиваем).
Да нет, не умалчиваем. Вон, условия для эксперимента я чуть выше нарисовал. Дерзайте.
BTW, сервер БД предназначен для того, чтобы запросы исполнять. И если для простых запросов (а сложным запросам в ебайно-подобных приложениях взяться просто неоткуда) составление плана их исполнения вызывает какие-то существенные затруднения - то это есть веский повод задуматься.

А вы знаете иногда оптимизатор неверно строит план запроса и для обычных запросов.
В этом случае, как я думаю, хранимые процедуры опять таки не будут иметь преимущества. У них будет точно такой же неверный план запроса. Так что Ваше "хранимые процедуры никогда не уступят в производительности" не становится менее ложным только от того, что оптимизатор может ошибиться.

Вообще-то очень жаль, что обычная дискуссия перерастает в выяснение отношений кто круче.
Вы пришли на форум.
Не удосужились даже прочитать сходные темы (вон, использование хранимых процедур на первой странице этого подфорума болтается, там вопросы планов исполнения уже обсуждались)
Выдали неверное утверждение, основанное на полнейшем непонимании.
Попросили, чтобы Вам объяснили элементарные вещи, которых Вы не понимаете.
Вам объяснили элементарные вещи.
И теперь Вы говорите, что дескать "выяснение отношений кто круче"?
Ну так не ходите сюда. Тут взрослые дяди письками меряются.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404496
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yo.!
допустим были table1.a и table2.a интами, поглотили конкурента пришлось table1.a на варчар поменять. в хп субд проблему обнаружит, а как тесты DL узнают о связи table1.a с table2.a и отловят проблему ?
Если кто-то, выражаясь соседским языком, ёбнут на своей гордости от умения выписывать data access layer, то ему не составит труда написать валидацию схемы. Если же нет желания велосипеды изобретать, то существуют нормальные ОРМ.
Есть маппер, у него внутре думатель и неонка. Если думатель не смог корректно отмапить, то загорается неонка.
Билд проекта не пройдет. Какие ты тут мировые проблемы увидел - загадка.

---------------------------------

2 DPH3
В голову закрадывается страшная мысль - может, ты изменения в хранимых процедурах вообще не тестируешь, рассчитываешь только на контроль со стороны Oracle?
И, кстати, есть какой-нибудь аналог junit для хранимых процедур?
О чём ты, товарисч?
Истину говорю, они застряли на этапе квик-бейсика для мс-дос.
То, что в самых продвинутых СУБД иногда не компилируется некомпилируемое - уже воспринимается как божье откровение.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404665
Yo.!
...
2сосед-акцессник
вы бы хотя бы базовые вещи изучили бы что-ли ...

и вам - не болеть!

Yo.!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE or REPLACE PROCEDURE PROCEDURE1 IS
  x table1.a%type ;
BEGIN
  select a into x from table1 where rownum= 1  ;
-- много всякого кода
  insert into table2 values ( 1 ,x) ;
END;
допустим были table1.a и table2.a интами, поглотили конкурента пришлось table1.a на варчар поменять. в хп субд проблему обнаружит, а как тесты DL узнают о связи table1.a с table2.a и отловят проблему ?

в этом примере - в точности так же, как ее "обнаружат" ваши xp - возвратом ошибки времени выполнения.

Извините за ответ на не мне заданный вопрос.

удачи
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36404776
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo, забейте вы, дело не благодарное объяснять людям технологии, которые они не хотят изучать и понимать. Деградация разъедает IT страшной силой и с этим что-то сложно поделать.
Самое правильное - вообще не подпускать к СУБД людей без знания SQL.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36405067
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
вообще-то это и есть основная вещь из этого контроля, т.е. язык имеет
механизм защиты от запуска кривого кода

Что автоматически означает, что сервер не имеет защиты от разрушения
целостности метаданных, а при создании хранимых процедур и триггеров не
осуществляется даже их проверка на синтаксис языка.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36405953
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП
О чём ты, товарисч?
Истину говорю, они застряли на этапе квик-бейсика для мс-дос.
То, что в самых продвинутых СУБД иногда не компилируется некомпилируемое - уже воспринимается как божье откровение.
Ну, с точки зрения развития языка и средств разработки - то да, все эти /SQL - страшное убожество. Но я сам дофига писал SQL кода (и вообще был большим сторонником хранимых процедур при разработке двухзвенок) - и вполне себе и юниттесты делал, и функциональные, и шаблоны проектирования формулировал и использовал - язык этому, в общем, не мешает, дело то в головах обычно.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36405986
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Что автоматически означает, что сервер не имеет защиты от разрушения
целостности метаданных, а при создании хранимых процедур и триггеров не
осуществляется даже их проверка на синтаксис языка.

который сервер ? апп-сервер тригера и зп не создает, а сервер субд как имеет защиту от разрушения методанных и проверку синтаксиса. в дб2 правда это обычно внешний прибомбас, но примерно ту же функцию выполняет.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36406099
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!который сервер ?

Оракул с лёгкостью позволит убить поле или всю таблицу, на которую
ссылается ХП. Это называется "защитой от разрушения метаданных"?
Он же позволит создать ХП у которой внутри всего одно слово да и то
матерное. Это называется проверкой синтаксиса?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36407534
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!в дб2 правда это обычно внешний прибомбас, но примерно ту же функцию выполняет.
"Внешний" он только для внешних языков вроде C и Java. Для встроенных SQL PL (и PL/SQL :) ) он вполне себе внутренний.
ЗЫ (off). Если интересно, недавно натолкнулся на статейку, где сказано, что в DB2 9.7 SQL PL и PL/SQL компилячатся в общий байт-код, т.е. их совместная поддержка - это просто разные компиляторы, результат одинаковый.
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36408525
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2DPH3
так что там у нас с контролем "современного универсального языка" ? есть шансы услышать, что-то кроме эмоций или громкое
DPH3
Внутри любого современного универсального языка (т.е. статический контроль типов и управляемая память) контроль над кодом на порядки выше, чем в всяких SQLподелках - еще на этапе компиляции.
так и останется громкой газификацией лужи ?
...
Рейтинг: 0 / 0
Высоконагруженные проекты и запросы
    #36408585
Yo.!...
есть шансы услышать, что-то кроме эмоций...
Это Вы с перепою, или от натуги над собственным знанием хотите услышать что-то вразумительное?
При условии, что сами ничего вразумительного не произносите?
( надеюсь, собственные пожелания читателям вы сами за "вразумительное" не принимаете)
...
Рейтинг: 0 / 0
95 сообщений из 95, показаны все 4 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Высоконагруженные проекты и запросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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