|
|
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Petro123, Ты все время забываешь, что запросы бывают разные. Одно дело key-value запрос, а другое дело - какой-нибудь 10-ти кратный join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 22:07:49 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Petro123интересующимся IT технологиями ссылка. Остальным не читать. Могут быть неправильные выводы Код: plaintext Вообще, интересующиеся IT-технологиями про это извращение с MySQL уже год как знают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 22:08:49 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Ох, не хотел я ввязываться в спор о том, когда стоит/не стоит использовать ОРМ решения... Но раз уж ввязался, попробую ответить... Я считаю, что при принятии такого архитектурного решения нельзя опираться только на отдельные характеристики проекта (объем данных, количество пользователей, "плотность потока" запросов и т.д. и т.п.). Необходимо расматривать проект в целом. Вот пример: svenomnotpolymerЕсли это интернет-проект с тысячами юников в день - то с базой лучше сразу "руками" (тобишь через голый JDBC) работать. ... Ну давайте разбираться. Несколько тысяч уников - пускай 5000 тысяч. День - 16 часов (8 спим). 5000/16 = 300 запросов в час = 1 запрос в 10-12 секунд. Тут 20 Хибер наложенных друг на друга справятся. Вроде логично - сейчас 5000 уников, вроде небольшая нагрузка... А теперь вспоминаем контекст - речь идет об интернет проекте, а такие проекты, если добиваются популярности, обычно испытывают взрывной рост нагрузки. Т.е. сейчас у вас 5 тысяч уников, а через пол года 105 тысяч уников. И все, что можно сделать во время "взрыва" - это судорожно втыкать новое железо в кластер и проводить точечный тюнинг. И тут прирост производительности в 10-15% тормозящего запроса может сыграть решающую роль. А стратегический рефакторинг можно будет провести только после испытания "взрывом"... Причем сильно после... Другой пример: BlazkowiczУ нас тоже хибер на высоконагруженом проекте. Толстый кэш и рассинхронизация клиентских запросов с БД дают отличный запас по производительности. Перевод на JDBC это экономия на спичках. Можно там выжать какие-то миллисекунды, но если проект не масштабируется, то и отказ от ORM не спасёт. Вроде история успеха, но... Давайте копнем чуть глубже... В данном случае "узким" местом системы является СУБД. Какие есть основные методы обхода такой проблемы: 1) Классический тюнинг sql запросов - как на уровне базы (исследовали план запроса, добавили/убрали индекс, денормализовали схему, разнесли таблицы и индексы по разным табличным пространствам на разных физических дисках ну и т.д. и т.п. по Кайту...), так и на уровне запроса (изменили структуру запроса, добавили хинты, изменили алгоритм выборки, изменили бизнес-логику чтобы упростить запрос и т.д. и т.п.) 2) Кластеризация СУБД - добавили master-slave репликацию данных. Проиграли на записи, зато круто выииграли на чтении. Я думаю очевидно, кто кластеризация "среднего" звена - сервера приложений - тут не поможет. 3) Кэширование данных на уровне "среднего" звена - сервера приложений, и кластеризация сервера приложений (пожалуй, наиболее эффективный способ из перечисленных 3х). Судя по словам Blazkowicz'а "Толстый кэш и рассинхронизация клиентских запросов с БД" команда проекта пошла третьим, наиболее эффективным путем. А теперь давайте посмотрим, какие нужны условия, чтобы пойти этим путем: 1) Бизнес логика приложения должна позволять кэширование данных, вносящих наибольший вклад в нагрузку на СУБД. 2) Чтобы реализовать корректный, горизонтально масштабируемый кэш, и не поломать бизнес логику и целостность данных в СУБД необходимо, чтобы над проектом работали достаточно высококвалифицированные разработчики, с высокой степенбю "прямизны рук" так сказать. 3) Чтобы в проекте появились высококвалифицированные разработчики необходим просто нормальный менеджмент, который умеет выполнять свои основные обязанности - найм исполнителей, делегирование задач, высокоуровневый контроль над проектом. Пункт 1 обычно не вызывает больших проблем. Пункт 2 - тут конечно со скрипом, ибо обезьянок много, а хороших разработчиков реально мало. А пункт 3 в российской действительности практически не выполним. Ну не бывает у нас нормального менеджмента. Не видел я его. Всегда действуют по принципу "как бы чего не вышло". Наймут кого подешевле (а то наймем за большие бабки, а он все равно не справится), не сумеют делегировать технические задачи соответствующим специалистам ("Какой такой расперделенный кэш? Вы обалдели? Нам тут рокет сайенс не нужен - делайте как попроще!"), устроят микромэнеджмент ("Как, Вася потратил целых полтора часа на рефакторинг?!!! Вы обалдели - у нас через месяц релиз!!! Какой нафиг рефакторинг, откатывайте все обратно!!!") ну и т.д. и т.п. Понимаете мою мысль? Т.е. затюнить проект с помощью кэша далеко не всегда получится - по чисто субъективным причинам. А на СУБД кластер могут тупо денег не дать. Вот и приходится по старинке выжимать микросекунды из запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 13:34:47 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
notpolymerВроде логично - сейчас 5000 уников, вроде небольшая нагрузка... А теперь вспоминаем контекст - речь идет об интернет проекте, а такие проекты, если добиваются популярности, обычно испытывают взрывной рост нагрузки . Т.е. сейчас у вас 5 тысяч уников, а через пол года 105 тысяч уников. И все, что можно сделать во время "взрыва" - это судорожно втыкать новое железо в кластер и проводить точечный тюнинг. И тут прирост производительности в 10-15% тормозящего запроса может сыграть решающую роль. А стратегический рефакторинг можно будет провести только после испытания "взрывом"... Причем сильно после...Ах вооот оно как оказывается, значит когда вы говорите "несколько тысяч уников", на самом деле это надо читать как "успешный стартап". Ну крутая у вас логика, что уж тут скажешь. Ну и второй момент - ваши стартаперы почему-то не знают про такую вещь, как нагрузочное тестирование, раз им приходится "судорожно втыкать новое железо в кластер". notpolymerСудя по словам Blazkowicz'а "Толстый кэш и рассинхронизация клиентских запросов с БД" команда проекта пошла третьим, наиболее эффективным путем. А теперь давайте посмотрим, какие нужны условия, чтобы пойти этим путем: 1) Бизнес логика приложения должна позволять кэширование данных, вносящих наибольший вклад в нагрузку на СУБД. 2) Чтобы реализовать корректный, горизонтально масштабируемый кэш, и не поломать бизнес логику и целостность данных в СУБД необходимо, чтобы над проектом работали достаточно высококвалифицированные разработчики, с высокой степенбю "прямизны рук" так сказать. 3) Чтобы в проекте появились высококвалифицированные разработчики необходим просто нормальный менеджмент, который умеет выполнять свои основные обязанности - найм исполнителей, делегирование задач, высокоуровневый контроль над проектом. Пункт 1 обычно не вызывает больших проблем. Пункт 2 - тут конечно со скрипом, ибо обезьянок много, а хороших разработчиков реально мало. А пункт 3 в российской действительности практически не выполним. Ну не бывает у нас нормального менеджмента. Не видел я его. Всегда действуют по принципу "как бы чего не вышло". Наймут кого подешевле (а то наймем за большие бабки, а он все равно не справится), не сумеют делегировать технические задачи соответствующим специалистам ("Какой такой расперделенный кэш? Вы обалдели? Нам тут рокет сайенс не нужен - делайте как попроще!"), устроят микромэнеджмент ("Как, Вася потратил целых полтора часа на рефакторинг?!!! Вы обалдели - у нас через месяц релиз!!! Какой нафиг рефакторинг, откатывайте все обратно!!!") ну и т.д. и т.п. Понимаете мою мысль? Т.е. затюнить проект с помощью кэша далеко не всегда получится - по чисто субъективным причинам. А на СУБД кластер могут тупо денег не дать. Вот и приходится по старинке выжимать микросекунды из запросов. Жесть, то есть вся ваша логическая выкладка описывается следующими двумя предложениями: 1) Написать нормальное приложение можно только с нормальными человеческими ресурсами 2) Если их нет - остается только тюнить ДБ. Смех да и только. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 13:49:57 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenomСмех да и только. Кому смех а кому слезы. Проекты обычно приходится выполнять с теми разработчиками и тем начальством, которые есть сейчас. И далеконе всегда "правильное" с теоретической точики зрения техническое решение будет наилучшим для конкретного проекта. А поиск наилучшего решения - всегда компромис. И ОРМ вполне может пасть жертвой этого компромиса - даже если теоритически он подходит для проекта на все 100% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 13:57:24 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenomНу и второй момент - ваши стартаперы почему-то не знают про такую вещь, как нагрузочное тестирование, раз им приходится "судорожно втыкать новое железо в кластер". Стартапы редко имеют много денег на хороших разработчиков. И испытывают те же проблемы с менеджментом, что и "обычные" проекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:00:49 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
notpolymersvenomСмех да и только. Кому смех а кому слезы. Проекты обычно приходится выполнять с теми разработчиками и тем начальством, которые есть сейчас. И далеконе всегда "правильное" с теоретической точики зрения техническое решение будет наилучшим для конкретного проекта. А поиск наилучшего решения - всегда компромис. И ОРМ вполне может пасть жертвой этого компромиса - даже если теоритически он подходит для проекта на все 100%Вы лучше мне объясните мне, откуда у такого плохого менеджмента, как вы описали, возьмуться высококвалифицированные SQL-разработчики, и, самое главное, как ваше руководство, которое ну вообще не умеет ничего делегировать и по уровню интеллекта едва ли превосходят неандертальцев, смогут объяснить SQL разработчикам, что делать. Без обид, но ваши высказывания по поводу российского менеджмента, выдают в вас человека, которому не доводилось работать в нормальных конторах, и который склонен обощать свой неудачный опыт на всю отрасль. Я сотрудничал с 3мя компаниями, 1 забугорная, 1 полу-забугорная, 1 русская. Ничего из того, что вы написали про менеджмент, не встречал. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:08:13 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenomБез обид, но ваши высказывания по поводу российского менеджмента, выдают в вас человека, которому не доводилось работать в нормальных конторах, и который склонен обощать свой неудачный опыт на всю отрасль. Я сотрудничал с 3мя компаниями, 1 забугорная, 1 полу-забугорная, 1 русская. Ничего из того, что вы написали про менеджмент, не встречал. Что я делаю не так? Началось... Собственно поэтому я и не лезу тут в споры... Работал я в разных конторах - и в нормальных, и в ненормальных, и в наших и в западных... И опыт свой мне сложно назвать неудачным - с пяток успешных крупных проектов и только 1 откровенный провал. По мелочи я не считал. Как тут дальше доказывать, что я не верблюд - я не знаю. Резюме публиковать как то не хочется. Регалиями трясти тоже. Так что я лучше вернусь в read only режим. Т.к. все, что можно было сказать по сути вопроса я сказал. Добавить мне нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:47:26 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Как стыкуются вот эти два утверждения? notpolymerНу не бывает у нас нормального менеджмента. Не видел я его.notpolymerИ опыт свой мне сложно назвать неудачным - с пяток успешных крупных проектов и только 1 откровенный провал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:05:16 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenomКак стыкуются вот эти два утверждения? notpolymerНу не бывает у нас нормального менеджмента. Не видел я его.notpolymerИ опыт свой мне сложно назвать неудачным - с пяток успешных крупных проектов и только 1 откровенный провал. Как написано, так и стыкуется. Я менеджментом проектов никогда не занимался. И не собираюсь. Проекты выполнял в роли Senior/Tech Lead/Architect. Пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:11:30 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenom, ты щас всю рыбу распугаешь :) Ну, тянул он воз сам один, хотел - рефакторил, не хотел - не рефакторил. Менеджмент ему не помогал и сроками давил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:12:16 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
notpolymer, как я и подумал. Спс за мнение. Оно у каждого своё, как всегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:15:44 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
notpolymersvenomКак стыкуются вот эти два утверждения? Ну не бывает у нас нормального менеджмента. Не видел я его. И опыт свой мне сложно назвать неудачным - с пяток успешных крупных проектов и только 1 откровенный провал. Как написано, так и стыкуется. Я менеджментом проектов никогда не занимался. И не собираюсь. Проекты выполнял в роли Senior/Tech Lead/Architect. Пока.А у вас был руководитель? Вы можете его назвать менеджером? Раз вы успешно выполнили проекты, значит вам доступно объясняли, что делать? Раз проекты выполнены успешно, значит у вас хватало навыков объяснить своим младшим коллегам, что надо делать? Значит делегирование все таки работало? Иными словами - как вы умудрились сделать 5 крупных успешных проектов в российских реалиях с неработающим делегированием? Я просто пытаюсь уловить вашу логику: перефразированный notpolymerНет нормальных менеджеров -> нельзя запилить нормально ORM, ибо все тупые Нет нормальных менеджеров -> можно тонко тюнить SQL запросы, даже несмотря на то, что все вокруг тупые Все вокруг тупые -> но я сделал 5 успешных проектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:18:40 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Ну, еще пару копеек про ORM (пока 1024 не прибежал). Я однозначно выбираю JDBCTemplate при следующем наборе требований: 1) Нагрузка от 1e6 страниц в сутки (т.е. порядка 1e7 запросов к данным в сутки) 2) Количество сущностей, имеющих смысл на уровне БД - незначительно (меньше 20) 3) Или мне или кому-нибудь еще в команде знакома та БД, с которой работаем. Правда, как-то так получается, что все мои проекты за последние лет 7 в эти рамки вполне укладываются, но это, скорее, от специфики специализации.... При этом, конечно, я понимаю, что моя любовь упаковывать сложные сущности, не нужные на уровне БД (например, существенные только целиком на уровне АппСервера или вообще нужные только для визуализации) в блобы - это тоже такой ORM, просто очень специфический. Ну, правда, у меня всегда есть отмазка - получение объекта из блоба заметно быстрее загрузки результата сложного join. В сумме затраты на организацию DAO (включая оптимизации и отладку) составляют 5-10% от общего объема затрат на проект, так что оптимизировать их стоит явно не в первую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:30:26 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
DPH3При этом, конечно, я понимаю, что моя любовь упаковывать сложные сущности, не нужные на уровне БД (например, существенные только целиком на уровне АппСервера или вообще нужные только для визуализации) в блобы - это тоже такой ORM, просто очень специфический. Ну, правда, у меня всегда есть отмазка - получение объекта из блоба заметно быстрее загрузки результата сложного join. Такой подход тоже имеет право на жизнь, но с ним лучше вообще отказаться от реляционных СУБД, и посмотреть в сторону NoSql. Не стоит есть суп вилкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:35:08 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
DPH3При этом, конечно, я понимаю, что моя любовь упаковывать сложные сущности, не нужные на уровне БД (например, существенные только целиком на уровне АппСервера или вообще нужные только для визуализации) в блобы - это тоже такой ORM, просто очень специфический. Ну, правда, у меня всегда есть отмазка - получение объекта из блоба заметно быстрее загрузки результата сложного join. Ну, так можно было NoSQL сразу подъюзать. Зачем тогда с RDBMS мучатся, если нормализация не особо ценна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 15:35:31 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, нормализация, транзакционная целостность, возможность легко обеспечить HA и прочие плюсы РСУБД как раз нужны, noSQL тут не слишком помогут. И сложные запросы часто встречаются, и оптимизация нужна. Из того, что часть объектов на уровне БД не нужны - не следует, что вся БД такая. Да и проще мне с РСУБД, в конце концов. Но в вебе, по ощущению, подобных задач - большинство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 20:25:52 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
svenomnotpolymerпропущено... Ну, скоуп то проекта обычно изначально известен. Если это интернет-проект с тысячами юников в день - то с базой лучше сразу "руками" (тобишь через голый JDBC) работать. В принципе видел 2 сильно нагруженных проекта на hibernate - один уже рефакторят, переходят на голый JDBC, другой пока держится. Если же речь идет о корпоративной поделке, где сложная бизнес логика, десятки сущностей, но число пользователей невелико (100 - 1000) - то конечно же надо ОРМ использовать - зачем мучаться? ЗЫ Более точные цифры не готов дать - все вышесказанное мое личное ИМХО, обычно "на глазок" определяю, стоит ли использовать ОРМ или нет. Ну давайте разбираться. Несколько тысяч уников - пускай 5000 тысяч. День - 16 часов (8 спим). 5000/16 = 300 запросов в час = 1 запрос в 10-12 секунд. Тут 20 Хибер наложенных друг на друга справятся. А вот вам другой пример из реальной жизни - высоконагруженное приложение - кластер из 4х ВебСфер, Хибер в DAL, 50000 запросов в час. Хибера на видно и не слышно вообще. Основные задержки - поиск в БД, парсинг XML. 50 запросов час это 14 запросов в секунду не много ли на 4 вебсферы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 21:30:45 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
Забыл поставить смайлик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 21:31:46 |
|
||
|
CASE- технологии в промышленном программировании
|
|||
|---|---|---|---|
|
#18+
schwa50 запросов час это 14 запросов в секунду не много ли на 4 вебсферы?Ну там логика сложная, много XML, а клиенты - сторонняя система через веб сервисы, причем система достаточно нетерпеливая (вроде смайлик не забыл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 21:38:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37618185&tid=2132812]: |
0ms |
get settings: |
14ms |
get forum list: |
23ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
57ms |
get topic data: |
14ms |
get forum data: |
5ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 354ms |
| total: | 575ms |

| 0 / 0 |
