Oracle Developer👨🏻‍💻
3.22K subscribers
611 photos
68 videos
2 files
489 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
😴
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Переживания из-за подготовки курса
Кивилев Денис
🎙 Почему я спал по 6 часов в сутки и как это связано с мини-курсом по Оптимизации

Друзья, всем привет! 👋🏻

Сегодня произошло неожиданное аудиоподкастоизвержение. На утренней пробежке в 6:15 утра вдруг понял, что как-то рановато 😂
Пришёл домой, решил посмотреть статистику по сну — и слегка удивился. Средняя продолжительность сна — 6 часов. Ложусь спать в 00:30, подъём — в 6:20. WTF! 😱😨

И сразу же родилась идея аудиоподкаста: а что, если немного рассказать о том, о чём обычно никто не говорит?

О той самой изнанке онлайн-школы, где за каждым видеоуроком стоят бессонные ночи, спринты с методологом, альфа-тесты, переработка обратной связи и вечное «А точно ли это поможет студенту на практике?»

В подкасте делюсь, как мы создавали мини-курс «Оптимизация Oracle SQL: Быстрый старт 🚀»

⚠️ Этот подкаст — не жалоба, а честный рассказ. Потому что за каждым качественным образовательным продуктом — человеческий труд, бессонные ночи и внутренняя тревога: «А точно ли зашло?»

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

🎧 Длительность: 7:30 минут. Рекомендую на x1.1

И, как обычно, если зашло — ставьте 👍

#изнанкашколы #образование #oracle_sql #аудиоподкаст
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍142
This media is not supported in your browser
VIEW IN TELEGRAM
Хинтовать или не хинтовать? Вот в чём вопрос!

Друзья, всем привет ☀️

Если вы когда-либо занимались оптимизацией запросов — наверняка рано или поздно вставал вопрос: использовать хинты или нет?

Интересно ваше мнение. Применяете ли вы хинты в проектах? При каких условиях? А может, у вас их вообще запрещено использовать?
👉 Поделиться мнением в чатике

Кстати, это видео — с практики пятого потока курса «Оптимизация Oracle SQL».
Тема оптимизации довольно сложная и без дополнительных встреч, было бы тяжело.
Поэтому каждую неделю, ребята собираются на 1–1.5 часа и обсуждают пройденный материал, делятся мнениями, задают вопросы.
Обычно минут 20 уделяем на "пробежаться по прослушанной лекции", далее практические моменты и Q/A.

Полную версию видео с ответом на вопрос про хинты опубликуем уже в четверг! 🎓

Всем хорошей рабочей недели! 🔥

#оптимизация #hints #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
👍113
Пост 1/5. Про вакансию Oracle/Java Developer

Друзья, всем привет!

Решил поделиться с вами серией постов про позицию Oracle/Java Developer на проект распила Ораклового-монолита.

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

💬 "Денис, посмотрите пожалуйста"

Да, не вопрос. Чем там могут удивить... Ан, нет - я ошибся 😄
Некоторые перлы из видео:
• «нам не по хуй»
• «мы делаем так, чтобы не хотелось доебаться»

Полный видос — по ссылке выше.

💬 "Скажите, пжл, вам подходит политика?"

Ну что ж… — подумал я. Такое не каждый день увидишь. Стало интересно: к чему это всё может привести? 🤔
Написал, что мне ОК — и марлезонский балет начался 🕺🏻

Вопросы залу
Как вы думаете, какая у такой компании/вакансии может быть зарплатная вилка?
После увиденного - пошли бы на собес? Готовы работать в такой культуре?

Поделитесь в Чатике 💭

Если интересны подробности вакансии, этапы собесов и т.п. ставь любую реакцию 🐳

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
😁23🔥12👍102
⚙️Одна из ТОП-болей Oracle-разработчика

Друзья, привет! Сохраните пост, чтобы показать тим-лиду и закрыть вечные споры на ревью 😉

БОЛЬ: Отсутствие единой системы стандартов форматирования кода в ORACLE

Как происходит в реальной жизни?
Приходишь в новый проект, открываешь код и получаешь мешанину из запросов.
У одного всё ЗАГЛАВНЫМИ, у другого строчными, третий чередует регистр через слово. Кто-то называет таблицы во множественном числе «Users», кто-то с префиксом tab_ - "tab_users", а где-то всплывает «user_tbl». Запросы форматируются как попало.
Каждый уверен: «Я так привык — значит, правильно». Единого документа нет, ревью превращается в мини-баттл, новичок тратит месяц, чтобы только «раскусить» локальные правила.

СУТЬ ПРОБЛЕМЫ
У Oracle по-прежнему нет официального «ГОСТа» (и не будет) на оформление PL/SQL: нет аналога PEP-8 как в Python или Google-кодстайла как для Java. Всё держится на устных договорённостях и личных привычках. Каждая компания — маленькое «княжество» со своим письмом.

Итог хаоса
• читаемость падает;
• ревью затягиваются;
• баги всплывают на проде, потому что «не заметил в каше»;
• время онбординга увеличивается и т.п.

📉 К чему это приводит

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

🛠 Как можно это решить (и заработать очки в карму)🔥

1️⃣ Соберите мини-круг: пару тимлидов + самых заинтересованных разработчиков.

2️⃣ Сделайте короткий чек-лист с описанием:
 – единый регистр для ключевых слов и идентификаторов;
 – общие префиксы/постфиксы для таблиц, индексов и других объектов;
 – правила именования пакетов, процедур и др.;
 – правила написания комментариев и многое другое;

желательно, чтобы правила форматирования можно было задать в IDE.

3️⃣ Автоматизируйте проверку: поставьте любой SQL-formatter/linter в pre-commit.

4️⃣ Зашейте правило в CI: пока линтер красный, код не пройдёт.

5️⃣ Загрузите документ в Confluence и прикрепите ссылку в шаблон PR/MR.

6️⃣ Проведите мит-ап для разработчиков: объясните «зачем» это нужно.

⚠️ Важный момент: переформатирование существующей кодовой базы может выполняться по-разному. Команда выбирает, как лучше сделать.

💡 Фишка для проактивных

Видишь хаос? Предложи драфт-стандарт сам. Так ты:
• ускоряешь ревью;
• качаешь личный бренд «не ноет — решает»;
• чаще всего получаешь плюсик к росту до тимлида.

⚖️ Итог

Кодстайл — это не про «перфекционизм ради перфекционизма».
Это договорённость, которая превращает личные заготовки в командный актив.
Чем раньше вы договоритесь, тем меньше боли, нервов и денег потеряете.

📌 Сохрани себе и отправь тимлиду. Пусть стандарты работают, а люди пишут бизнес-логику, а не расставляют пробелы вручную.

А какие стандарты у вас были при смене работы, пишите в Чатик 💬 посмотрим, что за дичь есть на просторах.

Если пост наберет 100 🔥 расскажу как мы в Qiwi-решали эту проблему c автоматической проверкой PL/SQL-кода в CI. Проблема не простая, в виду того, что разработчики пользовались аж четырьмя разными IDE.

#Oracle #PLSQL #кодстайл #teamlead #Denis_Kivilev
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
🔥67👍63
This media is not supported in your browser
VIEW IN TELEGRAM
Хинтовать или не хинтовать? Пусть решает команда

Я встречался с разными подходами и мнениями.

1️⃣ Например, в некоторых командах Qiwi было принято "не хинтовать". Поддерживай статистику в актуальном состоянии - тогда Oracle сам будет рулить с использованием CBO (cost based optimizer), и будет тебе счастье.
Вплоть до минуса на код-ревью. Система — OLTP.

К слову сказать, я не сильно полагаюсь на CBO, и если ты понимаешь логику работы запроса - то почему бы его не стабилизировать?
И в нашей команде хинтование я поощрял.

2️⃣ Например, в "IT Магнит" мы хинтовали почти все запросы. Это была специфика Big Data в DWH: параллельные запросы, временные таблицы… Очень часто CBO ошибался. Там без хинтов никак не обойтись.

3️⃣ Ещё один пример — из моей же практики. Пилили коммерческое ПО для банков. Сколько тогда поели г...на из-за CBO у заказчиков.
К слову сказать, пилить ПО на заказ и поставлять его в разные организации — это задачка на порядок сложнее, чем когда система твоя, до которой ты можешь легко дотянуться.

Например, у тебя 10 заказчиков, и у всех у них есть какие-нибудь свои прикольчики.
Допустим, админы в банке решили не собирать статистику. Да, такое бывает. Ну и какой, на фиг, CBO поможет с запросами при такой постановке?

Поев немало... проблем, мы коллегиально решили хинтовать максимум запросов.

Если стоит выбор между «срочно решаем проблему на ПРОДе у заказчика» и «заранее хинтануть запрос и не иметь геморроя» — я выбираю второе 😊

Подводя итог
Универсального ответа нет. Каждый случай индивидуален по-своему. Решайте командой.

Каким принципом руководствуетесь вы? Что думаете? Обсудить в чатике 💬

Кстати, это видео — с практики пятого потока курса «Оптимизация Oracle SQL» ❤️

#Denis_Kivillev #оптимизация #hints
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
11👍10🔥5
Пост 2/5. Про вакансию Oracle/Java Developer

Коллеги, всем привет ☀️
Вижу пост с загадочной конторой с матами вам зашел 😄
Продолжаю свой рассказ.

Название этой компании - GehtSoft
Корни из РФ, но по факту, уже американская, с народом со всего бывшего СССР.
Заказчики так же разные. Конкретно этот проект - заказчик из USA.

Охрененно здоровая портянка с ➡️ условиями компании ⬅️
Да, некоторые пункты, прямо скажем, вызывают удивление.
Ну да ладно, в "чужой монастырь... " и "не нравится, не откликайся".


Описание вакансии
Выше на скринах ⬆️

Суть проекта
Выполнять доработки в текущий продукт и потихоньку распиливать оракловый монолит с выносом логики в Java + PostgreSQL.
В целом, довольно интересно, с учётом удалённого характера работы и з/п в $.
З/п отправляют на какой-нибудь счёт ИП, например, в Грузии.

И плюс и минус - поддержка текущего решения. Хоть и заявлялось, что проект годика на полтора - верилось с трудом 😊 С другой стороны, как ты будешь распиливать, если не понимаешь, что происходит в продукте 🤷🏻‍♂️

Этапы собеседований
1️⃣ Soft-skills интервью с Scrum-мастером (что блин ?!!!) - 1 час
2️⃣ Техническое интервью - 1-1.5 часа.
3️⃣ Опять легкое общение с Scrum-мастером (а-ля финиш) - 15 мин.
4️⃣ Оффер

Вроде не выглядит не реально 🤷🏻‍♂️
Однако, софтовое интервью меня слегка удивило, но об этом я расскажу в следующем посте.

Вилка вакансии
Нижняя граница - 5000$
Верхняя граница - xxxx$

Как считаете какая может быть верхняя граница у такой вакансии? Пишите ваши предсказания в чатик 🔮

Всем хороших выходных 😉

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Видео с практики 5 потока по оптимизации Oracle 🎬

Друзья, всем привет! 👋🏻

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

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

🍒 Вишенка на торте — это то, как вчерашний студент буквально после пары занятий не побоялся оптимизировать запрос из 150 операций в плане.

💬 Поверьте, вы тоже так сможете.
Даже если сейчас не знаете, с какой стороны к этому подступиться. 🤷🏼‍♂️

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

Если чувствуете, что пора ускорить запросы и зарплату — держите руку на пульсе. 😉 До встречи в новом потоке!

#обучение #отзывы #оптимизация #oracle #backendpro #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
Запрос 1️⃣
Forwarded from Pavel V
Таблица sales_data — 50 млн записей.
Колонки:
a) region — 10 уникальных значений; b) product_category — 12 типов; c) sales_channel — 3 канала продаж; d) amount — сумма покупки Какая стратегия индексирования даст наилучшую производительность?
Anonymous Quiz
45%
Один составной B-tree индекс (region, product_category, sales_channel)
34%
Bitmap-индексы на каждую из трех колонок
7%
Bitmap только на sales_channel
13%
Индексы не нужны — всё читаем full scan’ом
Запрос 2️⃣
Forwarded from Pavel V
Таблица customer_surveys содержит 2 млн строк.
Колонки:
a) age_group (группы по возрасту: 10-19, 20-29, ..., 60+); b) income_level (5 категорий); c) country_code (около 200 стран), survey_text (CLOB). Данные не обновляются. Какой индекс будет эффективен?
Anonymous Quiz
45%
B-tree по income_level и country_code
47%
Bitmap по income_level, country_code и age_group
1%
Bitmap только по survey_text
8%
Индекс не нужен, хватит full scan
Запрос 3️⃣
Forwarded from Pavel V
Таблица web_events — 100 млн строк.
Колонки:
a) device_type — 'Mobile', 'Tablet', 'Desktop'; b) browser — 8 типов; c) country_code — 50 значений; d) event_time — временная метка; e) event_type — 'CLICK', 'VIEW', 'PURCHASE' Что будет наиболее эффективно?
Anonymous Quiz
25%
Один составной B-tree (device_type, browser, country_code, event_type)
61%
Bitmap по device_type, browser, country_code, event_type
10%
Только индекс по event_time
3%
Не индексировать — таблица и так летает