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

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

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Пост 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
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
Запрос 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)
35%
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
43%
B-tree по income_level и country_code
48%
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
26%
Один составной B-tree (device_type, browser, country_code, event_type)
60%
Bitmap по device_type, browser, country_code, event_type
11%
Только индекс по event_time
3%
Не индексировать — таблица и так летает
Bitmap в Oracle

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

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

Что это такое

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

B-tree:

🔸 эффективен при высокой кардинальности
🔸 хорош при частых DML
🔸 оптимален в OLTP-запросах
🔸 доступен в любой редакции Oracle

Bitmap:

🔸 эффективен при низкой кардинальности
🔸 может залочить таблицу даже при изменении 1 записи
🔸 оптимален в DWH-запросах
🔸 доступен не во всех редакциях Oracle

Битовые операции

В Oracle есть специальные операции (которые можно увидеть в плане запроса) :
BITMAP AND и BITMAP OR.

Это внутренние операции, которые Oracle применяет для комбинирования нескольких bitmap-индексов:

* BITMAP AND — пересечение (как WHERE a=… AND b=…)
* BITMAP OR — объединение (как WHERE a=… OR b=…)

💡 Они позволяют строить результат до обращения к таблице, опираясь только на битовые карты.
Это невероятно ускоряет сложные фильтрации, особенно в аналитических системах, где много колонок с низкой кардинальностью и тяжелых GROUP BY.

🎙Если вдруг вы впервые слышите про BITMAP AND и BITMAP OR, или просто хотите понять, как и когда Oracle их применяет, то уже совсем скоро мы откроем анкету предзаписи на 6-й поток по оптимизации запросов 🎓

Там мы разберём:
Как Oracle комбинирует индексы
Как это всё увидеть в плане запроса
Где bitmap-индексы действительно полезны
И когда они превращаются в тормоз ⛔️

Следите за новостями — скоро будет 🔥

#оптимизация #bitmap #курс #oracle #индексы #oracle #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Пост 3/5. Про вакансию Oracle/Java Developer. Soft-интервью

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

Наш марлезонский балет продолжается. Этот пост - про софтовую часть интервью.

Но! прежде всего, отвечу, что верхняя граница позиции была 6500 💲

Итак, софтовую часть обычно проводит HR. В случае с GehtSoft это была Scrum-мастерица 😱
Я всё понимаю, но почему Scrum-мастер?!
Делаю поверхностный вывод: просто некому 🤷🏻‍♂️

Некоторые технические специалисты до сих пор думают, что soft skills - это про какие-то непонятные «западные говно-практики» и т.п.
Так думать, конечно, можно, но реальность изменилась 🤷🏻‍♂️ Уже недостаточно быть просто хорошим технарём

Вот пример из текущего собеса: если ты не пройдёшь софт-часть со Scrum-мастерицей, тебя просто не допустят до тел технарей компании. И это факт.

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

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

Короче, этот навык, необходим в текущих реалиях.

Вот несколько вопросов, которые мне задавала Scrum-мастерица
▫️Как ты понимаешь, что достиг успеха в своей работе?
▫️Как у тебя в целом с входом в новый коллектив?
▫️Насколько успешно, может быть, ты можешь оценить, что ты вливаешься в новый коллектив?
▫️Могу тебя попросить сравнить два твоих проекта?
▫️За что тебя мог бы покритиковать твой нынешний работодатель?
▫️А сам себя ты бы за что мог бы покритиковать?
и так далее...

Отвечал на вопросы без особых заигрываний. Результат - прокатило
В следующем посте расскажу про техническую часть собеса 🤖


🎥 Во вложении 4х минутное видео с этой части собеса, чтоб вы имели общее представление о том, как это было.
⚠️ Осторожно, есть один мат. Строго 18+. Надеюсь, нас не читают юные ораклисты младше 18 😄

Что думаете, коллеги? Нужны софты? Поделиться мнением в чатике 💭

#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Прощай Вьетнам 🇻🇳 😢

Коллеги, привет!

Сегодня время щитпостинга из жизни цифрового кочевника с двумя детьми 👨‍👩‍👧‍👧
Как обычно, кому не интересно - не читаем, видео не смотрим и скипаем пост ⏭️

Уже через пару дней я покину эту гостеприимную страну - мы переезжаем в Латинскую Америку 🌎
Куда конкретно? Рассказал в видосе ⬆️

Примерно с 2018 года вынашивал идею путешествия по Азии продолжительностью более года. Почти получилось. В мечтах я представлял себе тур, начиная с Вьетнама: Лаос, Камбоджа, Таиланд, Малайзия, Сингапур, Бали, Филиппины... А на деле получились только Таиланд и Вьетнам. Да, дети накладывают свои ограничения на передвижения 👶👧 Может, на пенсии удастся-таки побывать везде 🌐

Кстати, если интересно, что пришлось поменять в жизни и как я к этому шёл, чтобы появилась возможность путешествовать дольше "14 дней" - ставь реакцию 👍 Если будет хотя бы 50 - расскажу 😉

Вернёмся к Вьетнаму.
Соотношение цена/качество - отличное 💰
Поскольку у меня двое детей, вопрос детского сада стоял остро.
Выбрали город
Нячанг - тут хороший канадский детский сад 🏫

▫️Сразу скажу: зимовать в Нячанге не стоит. Сезон - с марта по октябрь. В несезон - прохладно, и дожди льют постоянно 🌧 В остальное время лучше куда-нибудь южней типа
Муйне или о. Фукуок.
▫️Без байка делать нечего: трафик напряжённый, но привыкаешь быстро. Пешеходом и на авто - не вариант. Общественный транспорт есть, но по сравнению с байком неудобен 🛵
▫️Еда - нам очень нравится. Не острая, вкусная и дешевая 🍜 Завтракаем только в кафешках - около 5 $ на двоих. Лучше есть в местах для локалов - в туристических совсем не то.
▫️Народ дружелюбный, но иногда случаются расистские моментики (впрочем, как и везде).
▫️Бесил визаран: раз в 1,5 месяца - будь добр, потрать сутки на пересечение границы с Лаосом 🛂
▫️Местные мусорят, не задумываясь. Власти пытаются менять сознание, но пройдёт ещё как минимум поколение 🗑
▫️Аренда жилья и товары - очень дешёвые. Вдвоём, без детей, можно жить вообще спокойно на 1K$ 🏠
▫️Есть русскоязычное комьюнити - если для кого-то это важно 🗣

В видосе дал больше подробностей ⬆️

После Таиланда к Вьетнаму нужно привыкнуть. Я плевался первые две недели, но потом - норм 😊
Сейчас пора уезжать, и я чувствую грусть. Садик был классный, старшая дочь закончила Pre-School, появились друзья-белорусы, да и вообще - жить здесь оказалось очень комфортно. Вьетнам навсегда останется в моем сердце ❤️

Однако, дорога зовёт! Сидеть на месте уже сложно. Татарские гены кочевника зовут в путь-дорогу 🐪🎠


Зачем я вообще про всё это рассказываю? Хочу выпендриться? Нет, мне доказывать ничего не надо.
Я делюсь этим, потому что хочу, чтобы кто-то из вас вдохновился и задумался: «Раз Денис смог, а я чем хуже?» Да ничем не хуже!
Если у вас есть мечта — не откладывайте.
Осуществляйте. Не тяните. Жизнь пи..ц какая короткая штука 🤷🏻‍♂️

Всем добра! ❤️

#Denis_Kivillev #digitalnomad #путешествия #вьетнам

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
🧠 SQL-загадка с подвохом

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

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

📌 Дано:

create table demo_table (
ID char(4 CHAR),
value VARCHAR2(64 CHAR)
);


Известно, что есть следующие индексы и ключи:

create index DEMO_TBL_VALUE_IX on demo_table (VALUE);

alter table DEMO_TABLE
add constraint DEMO_TBL_PK primary key (ID)
using index;


Вопрос (c подвохом)
почему такая вставка проходит:

insert into demo_table values('0001', 1000);


А эта падает с ошибкой ORA-01722: неверное число:

insert into demo_table values('0002', 'Test');


Ответ
при наличии следующего индекса

create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));

Такая конструкция называется индексом по функции (function based index).
В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>).
Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid.
Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.


В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).


Ставьте лайк, если было познавательно.
🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.

Всем хорошей и продуктивной рабочей недели! 🔥

#oracle #sql #оптимизация #задачка #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Немного о том, что ждет вас после обучения

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

Меня часто спрашивают: «А что дальше, после курса? Можно ли попасть к вам в команду?»

Сегодня расскажу, какие возможности ждут вас после прохождения полного обучения.

Итак, поехали! 🚀

Когда вы заканчиваете полный курс «Оптимизация Oracle SQL», у вас появляется шанс вернуться к нам уже не студентом, а частью нашей команды - куратором.

Кто такой куратор

Это человек, который помогает новичкам, проверяет домашки, подсказывает, на что стоит обратить внимание + проводит регулярные практики.

🛠 Что даёт кураторство

Прокачка hard-skills: некоторые моменты становятся более понятны, происходит повторение, знания еще больше раскладываются по полочкам.

Менторство: помощь в сложных кейсах, ревью ваших pet-проектов, поддержка в карьерных переговорах.

Прокачка ваших soft-skills: управление мини-группой, работа с обратной связью, навык «чётко объяснять» — всё это отлично сказывается на росте внутри компании.

Запись в CV и LinkedIn 📱 «участвовал в обучении/курировал» — солидная строчка, особенно если целитесь в тимлиды или архитекторы.

Оплата. Да, мы не гугл, но и на голом энтузиазме никто не работает. Кураторы получают оплату соответствующий их вкладу.

🎯 По сути — это способ пройти курс заново, но на новом уровне. Когда учишь других — сам растёшь быстрее в разы.

Как стать куратором

проходите обучение
проявляете активность на встречах
по окончании курса проходите мини-собес с Денисом

⚠️ Важно: мы берём только тех, у кого с ответственностью полный порядок: ведь новые студенты рассчитывают на ежедневную обратную связь.

📅 А теперь важное напоминание: вчера мы открыли предзапись на 6-й поток.

🗓 Старт — 4 июля
📚 Формат — 3.5 месяца практики
🎓 Внутри — чтение и оптимизация планов запросов, 30 видео с собесов и др.
📈 Тарифы — от базовой технички до полного VIP с карьер-коучем и психологом.

Места утекают особенно быстро в первые два дня, так что не откладывайте: займите слот сейчас, а кураторское будущее обсудим уже по итогам курса.

👉 Анкета тут 👈
Заполняется за минуту, оплата — только после подтверждения и созвона.

Анкета на 6-й поток уже открыта. Бронируйте место, чтобы не читать чужие отзывы осенью.

Увидимся в новом наборе - а потом, может быть, и в кураторском чате! 😉

#OracleSQL #курс #куратор #предзапись #оптимизация
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Пост 4/5. Про вакансию Oracle/Java Developer. Tech-интервью

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

Продолжаем наш марлезонский балет 👯‍♀️
В этом посте расскажу про техническую часть интервью.
В общей сложности оно заняло примерно 1,5 часа.

Поскольку вакансия предполагала вынос функционала из Oracle в Java + PostgreSQL, на интервью присутствовали два технических спеца: Java Team Lead и специалист по Oracle.

Собеседование можно разбить на три группы вопросов
1️⃣ Как бы ты разбивал оракловый монолит?
2️⃣ Вопросы по Java + небольшое код-ревью
3️⃣ Вопросы по Oracle + практическая задачка а-ля «напиши запрос»

Некоторые вопросы с собеседования
▫️Как бы ты мог поспособствовать миграции логики из базы в Java-сервисы?
▫️Ты приходишь на проект, там нет CI/CD, как ты будешь действовать?
▫️С чего начать такую миграцию, чтобы система продолжала работать корректно?
▫️А что, если бизнес-логика в триггерах, и код ужасный?
▫️Что в этом коде не так (показывают Java-код)? Как доработать?
▫️Какова алгоритмическая сложность этого метода (показывают Java-код)?
▫️Зачем нужен volatile?
▫️Команда для вывода списка всех Docker-контейнеров?
▫️Приходилось ли тебе разворачивать Oracle?
▫️Как анализировать медленные запросы в Oracle?
▫️Как находить причины расхождений между отчетами?
и так далее.

несколько вопросов/ответов прикрепил к посту 📹

"Хозяйке на заметку"
Основная масса вопросов по Ораклу, как водится, была про оптимизацию.
Поэтому, коллеги, кто ещё этого не понял: если вы хотите претендовать на жирную позицию и достойную з/п, тему с оптимизацией вам не обойти.
Если вы в ней «не алё» — забудьте про хорошие деньги.
Продаёт Денис курсы или не продаёт — без оптимизации никуда. Это, блин, факт 🤷🏻‍♂️

Сейчас будет реклама, но уж сорри 😄
Именно этим мы и занимаемся на курсе по Оптимизации Oracle SQL. Наводим порядок в голове по великой и ужасной Оптимизации и натаскиваем на прохождение собесов 🚀
Анкета предзаписи — в предыдущих постах ⬆️
Не тормози — записывайся!

Итог
Честно говоря, я не особо готовился к интервью, особенно по Java. Можно было бы и получше отвечать.
Вот по Ораклу — разбуди меня в три ночи, я отвечу на часто задаваемые вопросы.
По Java приходится вспоминать узкие моменты, которые в реальной практике, по сути, не используешь.
Сделал для себя вывод: перед следующей сменой работодателя надо будет готовиться основательнее.
Чего, кстати, и вам желаю!

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

Так же исходя из вопросов понятно, что это жуткая легасятина со всеми антипаттернами, которые может в себя вобрать Оракловый проект 👽
Этакие конюшни не чищенные лет так 20 😄

Чем закончилась история, дали ли оффер — расскажу в следующем посте 😊
Всем хорошего дня! ☀️


#Denis_Kivilev #oracle #java #собседования
Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀