Вопросы по БД на Java-собеседованиях
Всем привет!
Некоторое время назад решил походить по собесам на Java-разработчика. Накопилось очень много материала про это 😊
Но в рамках, нашего канала, хотел бы рассказать, а чего у джавистов спрашивают про БД.
Прежде всего, зависит от позиции, какие обязанности там нужно выполнять. Если это какая-то миграция или поддержка и развитие легаси с Oracle, то будут вопросы связанные с Oracle. На одном из собесов, 50% времени задавали сеньорские вопросы по Oracle (это исключение). По умолчанию - подразумевается PostgreSQL.
В основной массе собесов, дают решать простенькие SQL-запросы и гоняют по теории на уровне junior/middle.
Из запомнившейся теории:
🔸 что такое транзакция, ACID, уровни изоляции;
🔸 что такое блокировки, виды;
🔸 как устроен B-tree индекс;
🔸 как задизайнить отношение “многие ко многим”;
🔸 CAP-теорема;
🔸 шардирование и секционирование, в чем разница.
SQL запросы:
заджойнить пару-тройку таблиц, используя group by/having. Никакой аналитики.
А-ля "найди всех клиентов, у которых более трех заказов".
Подобные задачки часто публикуются в ТГ-каналах для начинающих.
Иногда спрашивают про NoSQL БД и отличия от РСУБД. Заданий а-ля "напиши запрос для MongoDB" не дают.
Выводы
С уверенностью можно сказать, нагоняющая ужас секция по БД на многих Java-разработчиков, будет пройдена легко, если вы опытный DBD или, хотя бы, прочитаете этот канал с начала 😂 Все вопросы, так или иначе, были уже рассмотрены.
Стоит отметить, что секция с SQL/БД занимает, по ощущениям, 0-10% от собеса. К вопросу, о простоте смены специализации 😊
Если пост наберет, хотя бы, 200 🔥 расскажу про собесы на Java-разраба, этапы и т.п. Канал, все-таки, про СУБД Oracle, не всем может быть интересно 😉
Обсудить в чатике 💬
#собеседование #java
Oracle Developer
Всем привет!
Некоторое время назад решил походить по собесам на Java-разработчика. Накопилось очень много материала про это 😊
Но в рамках, нашего канала, хотел бы рассказать, а чего у джавистов спрашивают про БД.
Прежде всего, зависит от позиции, какие обязанности там нужно выполнять. Если это какая-то миграция или поддержка и развитие легаси с Oracle, то будут вопросы связанные с Oracle. На одном из собесов, 50% времени задавали сеньорские вопросы по Oracle (это исключение). По умолчанию - подразумевается PostgreSQL.
В основной массе собесов, дают решать простенькие SQL-запросы и гоняют по теории на уровне junior/middle.
Из запомнившейся теории:
🔸 что такое транзакция, ACID, уровни изоляции;
🔸 что такое блокировки, виды;
🔸 как устроен B-tree индекс;
🔸 как задизайнить отношение “многие ко многим”;
🔸 CAP-теорема;
🔸 шардирование и секционирование, в чем разница.
SQL запросы:
заджойнить пару-тройку таблиц, используя group by/having. Никакой аналитики.
А-ля "найди всех клиентов, у которых более трех заказов".
Подобные задачки часто публикуются в ТГ-каналах для начинающих.
Иногда спрашивают про NoSQL БД и отличия от РСУБД. Заданий а-ля "напиши запрос для MongoDB" не дают.
Выводы
С уверенностью можно сказать, нагоняющая ужас секция по БД на многих Java-разработчиков, будет пройдена легко, если вы опытный DBD или, хотя бы, прочитаете этот канал с начала 😂 Все вопросы, так или иначе, были уже рассмотрены.
Стоит отметить, что секция с SQL/БД занимает, по ощущениям, 0-10% от собеса. К вопросу, о простоте смены специализации 😊
Если пост наберет, хотя бы, 200 🔥 расскажу про собесы на Java-разраба, этапы и т.п. Канал, все-таки, про СУБД Oracle, не всем может быть интересно 😉
Обсудить в чатике 💬
#собеседование #java
Oracle Developer
Сиквенсы на сессию
Сиквенс - это объект, используемый для генерации уникальных числовых значений. Чаще всего, используется для генерации значений primary key. Реализация в разных СУБД может быть разная, где-то скрыто от пользователя, где-то явно.
В 12.1 появилась опция Session (см скрин). По умолчанию сиквенсы создаются с опцией Global. В чем различие?
Вполне может быть удобно при совместном использовании с global temporary table или когда нужен некий ID только внутри сессии и др. Пытливый ум найдет применение 😉
Как попробовать
#sequence
Oracle Developer
Сиквенс - это объект, используемый для генерации уникальных числовых значений. Чаще всего, используется для генерации значений primary key. Реализация в разных СУБД может быть разная, где-то скрыто от пользователя, где-то явно.
В 12.1 появилась опция Session (см скрин). По умолчанию сиквенсы создаются с опцией Global. В чем различие?
– Создается по умолчанию - globalCиквенс, с опцией Session, хранит значение только в рамках сессии. Проще говоря, в двух разных сессиях первый вызов nextval отдаст “1”. C global это будут разные значения.
create sequence my_seq;
– С инкрементом только в рамках сессии
create sequence my_seq session;
Вполне может быть удобно при совместном использовании с global temporary table или когда нужен некий ID только внутри сессии и др. Пытливый ум найдет применение 😉
Как попробовать
-- Обратиться в разных сессияхCбросить последовательность (с 18с)
select my_seq.nextval from dual;
alter sequence my_seq restart;Обсудить в чатике 💬
#sequence
Oracle Developer
Задача "Перемещение нулей (MoveZeros)"
Сегодня будет немного не обычная задачка.
Мне её задали в МТС Банке на позицию Java Engineer. Естественно, она была на Java. Я слегка адаптировал под PL/SQL.
На позиции "Oracle-разработчик" такие задачи не дают. Однако для того, чтобы размять мозг она подойдет 🧠
Суть задач "с LeetCode" - реализация функционала за как можно меньшую сложность - O. Условно, если задачу можно решить за O(N*N), то скорее всего, есть более оптимальное решение. На собесах обязательно учитывают смог ли ты решить задачу оптимально.
Условия
Заготовка под код
Разберем задачу в четверг 🎓
Обсудить в чатике 💬
#задача #leetcode
Oracle Developer
Сегодня будет немного не обычная задачка.
Мне её задали в МТС Банке на позицию Java Engineer. Естественно, она была на Java. Я слегка адаптировал под PL/SQL.
На позиции "Oracle-разработчик" такие задачи не дают. Однако для того, чтобы размять мозг она подойдет 🧠
Суть задач "с LeetCode" - реализация функционала за как можно меньшую сложность - O. Условно, если задачу можно решить за O(N*N), то скорее всего, есть более оптимальное решение. На собесах обязательно учитывают смог ли ты решить задачу оптимально.
Условия
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.Нашел эту задачку на Leetcode. К сожалению, там нет PL/SQL, зато есть другие языки.
Example:
Input: [0,12,0,1,3]
Output: [12,1,3,0,0]
Заготовка под код
Разберем задачу в четверг 🎓
Обсудить в чатике 💬
#задача #leetcode
Oracle Developer
Задача "Перемещение нулей (MoveZeros)". Решение
Друзья, всем привет!
Во вторник опубликовал не типичную задачу для собеседования на позицию Oracle Developer. Однако, такие задачи очень часто встречаются на позиции Front/Backend-разработчиков.
Как это происходит на собеседовании
🔹 Вы либо шарите экран, либо подключаетесь к online IDE, в которой есть подсветка синтаксиса. Чаще всего, скомпилировать код возможности нет. Автоподсказок то же (хотя встречались с наличием).
🔹 У вас есть ограниченное количество времени (30м-1ч) на решение задачи.
🔹 От вас хотят услышать размышления вслух хода решения.
🔹 Требуется быстрое (O) и низкое, по затратам памяти, решение.
Представьте, что вам дали подобную задачу (как в посте вторника), ограничили 30 минутами. При этом, написать алгоритм без ошибок вы должны на "листке бумаги", без каких-либо запусков, никто не даст отлаживать код. Фактически задачу необходимо решить в уме.
А как насчет написать дерево и пройтись по нему? найти его максимальную глубину? Или инвертировать односвязный список? Да, то, что старательно забыто после окончания универа 😊
К чему я веду
Необходим определенный навык и тренировки для выполнения подобного рода заданий.
Для этого есть специальные площадки, где собраны подобные хитрые задачки разнесенные по уровням сложности. Например, leetcode.
Недавно наткнулся на двадцать паттернов при решении алгоритмических задач. Может кому-то зайдет.
Задача вторника может быть решена разными способами
Когда она мне попалась на собесе, я решил таким алгоритмом (на Java, конечно). В целом, это удовлетворило интервьювера. Я не утверждаю, что нет более идеального решения, вполне возможно, но в стрессовой ситуации за 30 минут родилось именно это.
Ребята в чатике накидали довольно много разных решений 🔥
Если такой тип задач интересен, могу публиковать время от времени 😉
Обсудить в чатике 💬
#решениезадачи #leetcode
Oracle Developer
Друзья, всем привет!
Во вторник опубликовал не типичную задачу для собеседования на позицию Oracle Developer. Однако, такие задачи очень часто встречаются на позиции Front/Backend-разработчиков.
Как это происходит на собеседовании
🔹 Вы либо шарите экран, либо подключаетесь к online IDE, в которой есть подсветка синтаксиса. Чаще всего, скомпилировать код возможности нет. Автоподсказок то же (хотя встречались с наличием).
🔹 У вас есть ограниченное количество времени (30м-1ч) на решение задачи.
🔹 От вас хотят услышать размышления вслух хода решения.
🔹 Требуется быстрое (O) и низкое, по затратам памяти, решение.
Представьте, что вам дали подобную задачу (как в посте вторника), ограничили 30 минутами. При этом, написать алгоритм без ошибок вы должны на "листке бумаги", без каких-либо запусков, никто не даст отлаживать код. Фактически задачу необходимо решить в уме.
А как насчет написать дерево и пройтись по нему? найти его максимальную глубину? Или инвертировать односвязный список? Да, то, что старательно забыто после окончания универа 😊
К чему я веду
Необходим определенный навык и тренировки для выполнения подобного рода заданий.
Для этого есть специальные площадки, где собраны подобные хитрые задачки разнесенные по уровням сложности. Например, leetcode.
Недавно наткнулся на двадцать паттернов при решении алгоритмических задач. Может кому-то зайдет.
Задача вторника может быть решена разными способами
Когда она мне попалась на собесе, я решил таким алгоритмом (на Java, конечно). В целом, это удовлетворило интервьювера. Я не утверждаю, что нет более идеального решения, вполне возможно, но в стрессовой ситуации за 30 минут родилось именно это.
Ребята в чатике накидали довольно много разных решений 🔥
Если такой тип задач интересен, могу публиковать время от времени 😉
Обсудить в чатике 💬
#решениезадачи #leetcode
Oracle Developer
sql_cheatsheet.jpg
517.4 KB
Шпаргалка по SQL
Попалась тут на глаза шпаргалка по SQL, вдруг кому-то пригодится 😉
#sql #cheatsheet
Oracle Developer
Попалась тут на глаза шпаргалка по SQL, вдруг кому-то пригодится 😉
#sql #cheatsheet
Oracle Developer
Набор вопросов с собеса в Сбер
Всем привет 😊
В марте общался со Сбербанком. Позиция Senior DB Engineer в Дивизион баз данных PlatformV команда DataTouls. Сохранил для вас вопросики 😉
Как мне их презентовали - через шаринг экрана (см. скрин).
Far 🤓
Одно из заданий я уже публиковал - реверс инженеринг текста запроса по его плану.
Вопросы
4. Что такое нормализация и денормализация? Приведенный пример это нормализованная БД?
5. Найти ошибку из приведенного ниже SQL-запроса.
11. Каков ответ на запрос ниже? Внесите исправления, чтобы запрос вел себя как ожидалось.
12. Что будет?
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
#задача #собеседование #сбер
Oracle Developer
Всем привет 😊
В марте общался со Сбербанком. Позиция Senior DB Engineer в Дивизион баз данных PlatformV команда DataTouls. Сохранил для вас вопросики 😉
Как мне их презентовали - через шаринг экрана (см. скрин).
Far 🤓
Одно из заданий я уже публиковал - реверс инженеринг текста запроса по его плану.
Вопросы
4. Что такое нормализация и денормализация? Приведенный пример это нормализованная БД?
5. Найти ошибку из приведенного ниже SQL-запроса.
11. Каков ответ на запрос ниже? Внесите исправления, чтобы запрос вел себя как ожидалось.
12. Что будет?
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
#задача #собеседование #сбер
Oracle Developer
Ответы на вопросы с собеса в Сбер
Вопросы в предыдущем посте вторника.
Ответы
4. Что такое нормализация и денормализация? Приведенный пример это нормализованная БД?
Это основы проектирования сущностей в БД. Понятия гуглятся на раз-два. Чуть задену денормализацию. Хороший пример - это поисковые таблицы в OLTP-средах. Например, для этого кейса.
Что касается конкретного примера. Вопрос, конечно поставлен интересно "нормализованная ли это БД". Исходя из организации двух табличек, скорее, да. Не совсем ясно, что такое счет1/счет2. Являются ли счета отдельной сущностью или нет. Или достаточно текстового представления. Интервьювер явно хочет обсуждения 😉
5. Найти ошибку из приведенного ниже SQL-запроса.
Все просто. Алиас выражения "y" используется в качестве предиката в where. Будет ошибка.
Фикс: вместо "у" написать полное выражение.
11. Каков ответ на запрос ниже? Внесите исправления, чтобы запрос вел себя как ожидалось.
Ответ будет: not equals. Ибо null = null некорректное сравнение. Условие должны быть как null is null.
Подобные вопросы с сравнением null встречаются постоянно.
12. Что будет? select nvl(null,12) from dual;
Будет 12. Подробней про nvl в этом посте. Если еще вспомните про функцию coalesce, то завоюете сердце интервьювера 😁 Пост про отличия между nvl и coalesce.
В принципе, ничего сложного в этих вопросах нет. Прям совсем база. На следующей неделе, опубликую еще одну задачку с этого собеса.
Обсудить в чатике 💬
Понравилось? Ставь 👍
#решениезадачи #собеседование #сбер
Oracle Developer
Вопросы в предыдущем посте вторника.
Ответы
4. Что такое нормализация и денормализация? Приведенный пример это нормализованная БД?
Это основы проектирования сущностей в БД. Понятия гуглятся на раз-два. Чуть задену денормализацию. Хороший пример - это поисковые таблицы в OLTP-средах. Например, для этого кейса.
Что касается конкретного примера. Вопрос, конечно поставлен интересно "нормализованная ли это БД". Исходя из организации двух табличек, скорее, да. Не совсем ясно, что такое счет1/счет2. Являются ли счета отдельной сущностью или нет. Или достаточно текстового представления. Интервьювер явно хочет обсуждения 😉
5. Найти ошибку из приведенного ниже SQL-запроса.
Все просто. Алиас выражения "y" используется в качестве предиката в where. Будет ошибка.
Фикс: вместо "у" написать полное выражение.
11. Каков ответ на запрос ниже? Внесите исправления, чтобы запрос вел себя как ожидалось.
Ответ будет: not equals. Ибо null = null некорректное сравнение. Условие должны быть как null is null.
Подобные вопросы с сравнением null встречаются постоянно.
12. Что будет? select nvl(null,12) from dual;
Будет 12. Подробней про nvl в этом посте. Если еще вспомните про функцию coalesce, то завоюете сердце интервьювера 😁 Пост про отличия между nvl и coalesce.
В принципе, ничего сложного в этих вопросах нет. Прям совсем база. На следующей неделе, опубликую еще одну задачку с этого собеса.
Обсудить в чатике 💬
Понравилось? Ставь 👍
#решениезадачи #собеседование #сбер
Oracle Developer
Системные представления
Всем привет!
Случайно наткнулся на занимательный ресурс - https://www.viskey4you.com/
Визуализирует большинство системных представлений Oracle - поля, отношения.
Помимо визуализации, можно сконструировать запрос 🛠
Рекомендую посмотреть, потыкать. Особенно будет полезно для новичков, но и не только 😉
Обсудить в чатике 💬
Понравилось? Ставь 👍
#системныепредставления
Oracle Developer
Всем привет!
Случайно наткнулся на занимательный ресурс - https://www.viskey4you.com/
Визуализирует большинство системных представлений Oracle - поля, отношения.
Помимо визуализации, можно сконструировать запрос 🛠
Рекомендую посмотреть, потыкать. Особенно будет полезно для новичков, но и не только 😉
Обсудить в чатике 💬
Понравилось? Ставь 👍
#системныепредставления
Oracle Developer
Друзья, всем привет!
Рад сообщить, о наборе на пятый поток курса “Oracle PL/SQL.Основы”.
Он будет полезен: QA-инженерам, разработчикам, аналитикам.
Основная цель: научить вас читать чужой и писать свой PL/SQL-код, достаточный для современной разработки и закрытия рабочих задач.
🔹22 видео с теорией;
🔹24 практики = единый проект;
🔹13 онлайн встреч в Zoom с разбором вопросов;
🔹закрытый телеграм-канал;
🔹старт 11 сентября 2023
Практика построена таким образом, чтобы вы с нуля, шаг за шагом, создали API на PL/SQL для прототипа платежной системы. Начав с анонимных блоков вы закончите своим мини-фреймворком для Unit-тестирования и использованием utPL/SQL. Пример.
Подробности и программа - здесь. Отзывы - здесь.
Для тех кто заинтересован, но пока не уверен, я создал промо-группу курса, в которой буду размещать подробности, отрывки с занятий, отвечать на вопросы и даже встретимся онлайн. Залетайте!
P.S. Бонус. Студентов, успешно закончивших курс, рекомендую в компанию Qiwi 🐥
Oracle Developer
Рад сообщить, о наборе на пятый поток курса “Oracle PL/SQL.Основы”.
Он будет полезен: QA-инженерам, разработчикам, аналитикам.
Основная цель: научить вас читать чужой и писать свой PL/SQL-код, достаточный для современной разработки и закрытия рабочих задач.
🔹22 видео с теорией;
🔹24 практики = единый проект;
🔹13 онлайн встреч в Zoom с разбором вопросов;
🔹закрытый телеграм-канал;
🔹старт 11 сентября 2023
Практика построена таким образом, чтобы вы с нуля, шаг за шагом, создали API на PL/SQL для прототипа платежной системы. Начав с анонимных блоков вы закончите своим мини-фреймворком для Unit-тестирования и использованием utPL/SQL. Пример.
Подробности и программа - здесь. Отзывы - здесь.
Для тех кто заинтересован, но пока не уверен, я создал промо-группу курса, в которой буду размещать подробности, отрывки с занятий, отвечать на вопросы и даже встретимся онлайн. Залетайте!
P.S. Бонус. Студентов, успешно закончивших курс, рекомендую в компанию Qiwi 🐥
Oracle Developer
Задачи на особенности работы с null (Сбер)
Всем привет 😊
Заключительный пост про задачки с собеса Сбербанка.
что уже было: задача1, задача2
На скриншоте задание. Специально не стал переводить в текст, чтоб передать атмосферу 😉
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую, поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
⚠️ Меж тем, продолжается набор на курс по PL/SQL.Осталось 1️⃣ место. Бронируйте свое участие. Мест нет 🤷♂️
#задача #собеседование #сбер
Oracle Developer
Всем привет 😊
Заключительный пост про задачки с собеса Сбербанка.
что уже было: задача1, задача2
На скриншоте задание. Специально не стал переводить в текст, чтоб передать атмосферу 😉
Естественно, на собеседовании нет возможности набрать текст запроса и выполнить. Выполняем "в уме". Рекомендую, поступить так же 😉
Разбор ответов в четверг 🎓
Приветствуется обсуждение в чатике 💬
⚠️ Меж тем, продолжается набор на курс по PL/SQL.
#задача #собеседование #сбер
Oracle Developer
Решение задачи на особенности работы с null (Сбер)
Демо-данные для примера
1️⃣ null - это неопределенность.
2️⃣ Кавычки без значения ('') - это null, если это не тип CHAR.
2️⃣ Для сравнения с null нельзя просто написать равенство или неравенство, нужно использовать is null или is not null
3️⃣ Использование null в IN бесполезно.
* - правила справедливы для Oracle
Что получим в итоге
Для краткости рассмотрим кейсы, когда А = 1 и A = null (для '' будет такой же)
A = 1
1) все строки, т.к. условие выполняется всегда
2) аналогично
3) аналогично
4) ничего 1!=1, условие всегда не выполняется
5) все строки, т.к. 1 in (1) всегда будет выполняться.
6) ни одной строки, т.к. условие никогда не будет выполнено.
А = null
1) все строки, т.к. условие выполняется всегда
2) ничего, null - особенное значение.
3) все строки, т.к. условие выполняется всегда
4) ничего, null сравниваем через is.
5) аналогично
6) аналогично.
Я не очень люблю подобные задачи... на собесе, помнится, в каких-то неочевидных пунктах запутался, бывает )
Итог: собеседование в Сбер прошел, предложили неплохую ставку, но все равно отказался 🤷🏻♂️ А вам достался материал 😉
Обсудить в чатике 💬
#решениезадачи #собеседование #сбер
Oracle Developer
Демо-данные для примера
create table test1(a number);Что нужно помнить
insert into test1 values(1);
insert into test1 values(2);
insert into test1 values(null);
insert into test1 values('');
commit;
1️⃣ null - это неопределенность.
2️⃣ Кавычки без значения ('') - это null, если это не тип CHAR.
2️⃣ Для сравнения с null нельзя просто написать равенство или неравенство, нужно использовать is null или is not null
3️⃣ Использование null в IN бесполезно.
* - правила справедливы для Oracle
Что получим в итоге
Для краткости рассмотрим кейсы, когда А = 1 и A = null (для '' будет такой же)
A = 1
1) все строки, т.к. условие выполняется всегда
2) аналогично
3) аналогично
4) ничего 1!=1, условие всегда не выполняется
5) все строки, т.к. 1 in (1) всегда будет выполняться.
6) ни одной строки, т.к. условие никогда не будет выполнено.
А = null
1) все строки, т.к. условие выполняется всегда
2) ничего, null - особенное значение.
3) все строки, т.к. условие выполняется всегда
4) ничего, null сравниваем через is.
5) аналогично
6) аналогично.
Я не очень люблю подобные задачи... на собесе, помнится, в каких-то неочевидных пунктах запутался, бывает )
Итог: собеседование в Сбер прошел, предложили неплохую ставку, но все равно отказался 🤷🏻♂️ А вам достался материал 😉
Обсудить в чатике 💬
#решениезадачи #собеседование #сбер
Oracle Developer
Telegram
Oracle Developer Chat👨🏻💻🗣👥
Чат для обсуждения постов канала "Oracle Developer".
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
Replication vs. Table Partitioning vs. Table Sharding vs. Database Federation
На днях попался забавный слайд. Вдруг кому-то зайдет.
🔸 Replication (репликация) - хранении копии одних и тех же данных на разных серверах.
🔸 Table partitioning (секционирование таблиц) - разбиение таблицы на части, с использованием ключа секционирования. Физически - разные части, логически - работаем как с одной таблицей.
🔸 Table sharding (шардирование) - разбиение на независимые части одной сущности. Было бы наглядней, если бы показали на примере разных БД. Т.е. одна часть таблицы хранится в одной БД, вторая часть таблицы в другой БД и т.д.
Например, vk.com хранит пользователей с A-E на одном сервере, F-J на другом и т.д. (пример, сильно притянутый за уши).
🔸 Database Federation - объединение нескольких физических БД в логическую БД. Позволяет работать приложениям с логической БД, как будто она одна. Мне на практике такие конфигурации не встречались. Для любознательных - статья1, статья2, вики.
Чатик 💬
#секционирование
Oracle Developer
На днях попался забавный слайд. Вдруг кому-то зайдет.
🔸 Replication (репликация) - хранении копии одних и тех же данных на разных серверах.
🔸 Table partitioning (секционирование таблиц) - разбиение таблицы на части, с использованием ключа секционирования. Физически - разные части, логически - работаем как с одной таблицей.
🔸 Table sharding (шардирование) - разбиение на независимые части одной сущности. Было бы наглядней, если бы показали на примере разных БД. Т.е. одна часть таблицы хранится в одной БД, вторая часть таблицы в другой БД и т.д.
Например, vk.com хранит пользователей с A-E на одном сервере, F-J на другом и т.д. (пример, сильно притянутый за уши).
🔸 Database Federation - объединение нескольких физических БД в логическую БД. Позволяет работать приложениям с логической БД, как будто она одна. Мне на практике такие конфигурации не встречались. Для любознательных - статья1, статья2, вики.
Чатик 💬
#секционирование
Oracle Developer
Задача. Вывод строчных английских букв
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Уровень сложности: легкий
Было бы круто посмотреть на различные способы решения.
Как всегда, разбор в четверг 🎓
Обсудить в чатике 💬
#задача
Oracle Developer
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Уровень сложности: легкий
Было бы круто посмотреть на различные способы решения.
Как всегда, разбор в четверг 🎓
Обсудить в чатике 💬
#задача
Oracle Developer
Решение задачи "вывод строчных английских букв"
Задача
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Решение
На текущий момент, коллеги в чатике нагенерили с десяток способов решить данную задачку от совсем простых до монструозных чисто развлечься.
Приведу буквально одно:
#решениезадачи
Задача
Вывести одним запросом латинский алфавит в виде строчных букв, каждая буква - отдельная строка, без использования union.
Решение
На текущий момент, коллеги в чатике нагенерили с десяток способов решить данную задачку от совсем простых до монструозных чисто развлечься.
Приведу буквально одно:
select chr(ascii('a') + level - 1)Всем неравнодушным респект, было интересно посмотреть на такое разнообразие 🔥
from dual
connect by level <= ascii('z') - ascii('a') + 1;
#решениезадачи
Способы взбодриться с утра
Я думаю, у всех есть истории, от которых волосы встают дыбом.
У меня есть одна.
В году 2006, я работал ДБА в одном новосибирском банке.
Как это водится, было открыто несколько окошек Putty одновременно (ssh-подключений к серверам БД).
К сожалению, он тогда не умел (да и сейчас вроде бы не умеет), подкрашивать окно цветом, в зависимости от подключения.
А-ля красный для такого-то сервера (прод), зеленый для такого-то (дев) и т.п.
У меня была задача - обновить учебную БД. Обновление включало в себя - опустить БД, грохнуть файлы, скопировать с PROD файлы в горячем режиме, и поднять учебную БД.
Делал это не первый раз, но по запаре, перепутал окошки с Putty и случайно грохнул файлы ПРОД БД 🤦🏻♂️
Слава богу, приложение было не прям, что бы критичное + был standby.
Потеряли 5 минут бизнесового времени и 30 минут реального. Начальство пожурило 😁
ДБА как сапер. Шанс ошибиться только один 😂
Поделиться историями в чатике 💬
Всем хороших выходных 🎊
#юмор
Oracle Developer
Я думаю, у всех есть истории, от которых волосы встают дыбом.
У меня есть одна.
В году 2006, я работал ДБА в одном новосибирском банке.
Как это водится, было открыто несколько окошек Putty одновременно (ssh-подключений к серверам БД).
К сожалению, он тогда не умел (да и сейчас вроде бы не умеет), подкрашивать окно цветом, в зависимости от подключения.
А-ля красный для такого-то сервера (прод), зеленый для такого-то (дев) и т.п.
У меня была задача - обновить учебную БД. Обновление включало в себя - опустить БД, грохнуть файлы, скопировать с PROD файлы в горячем режиме, и поднять учебную БД.
Делал это не первый раз, но по запаре, перепутал окошки с Putty и случайно грохнул файлы ПРОД БД 🤦🏻♂️
Слава богу, приложение было не прям, что бы критичное + был standby.
Потеряли 5 минут бизнесового времени и 30 минут реального. Начальство пожурило 😁
ДБА как сапер. Шанс ошибиться только один 😂
Поделиться историями в чатике 💬
Всем хороших выходных 🎊
#юмор
Oracle Developer
Всем привет!
Очень рад, что мой призыв, писать авторские статьи, периодически находит отклик.
В ближайшие несколько недель на канале будет публиковаться серия постов от Даниила. Он тестировщик. Посты будут полезны скорее для QA, но могут заинтересовать и Junior DBD. Посмотрим, что из этого выйдет 😉
Это его первый опыт, не все может получиться с первого раза. Давайте проявим дружелюбие, тем более, что у нас в чатике не принято брызгать кислотой 😉 Тем не менее, фидбек будет полезен, даже, если он и не совсем позитивный - это точка роста. Давайте будем корректны по отношению к друг другу.
Я же в свою очередь напомню. Если у вас есть какой-то интересный авторский материал относящийся к Oracle - разработке, администрированию и т.п. велком. Я готов опубликовать его с сохранением авторства. Это не обязательно должна быть серия постов. Это может быть и один пост. Народ у нас в канале разный - уровень, специализация и т.п. думаю кому-то да зайдет. Пишите в личку 👍
Oracle Developer
Очень рад, что мой призыв, писать авторские статьи, периодически находит отклик.
В ближайшие несколько недель на канале будет публиковаться серия постов от Даниила. Он тестировщик. Посты будут полезны скорее для QA, но могут заинтересовать и Junior DBD. Посмотрим, что из этого выйдет 😉
Это его первый опыт, не все может получиться с первого раза. Давайте проявим дружелюбие, тем более, что у нас в чатике не принято брызгать кислотой 😉 Тем не менее, фидбек будет полезен, даже, если он и не совсем позитивный - это точка роста. Давайте будем корректны по отношению к друг другу.
Я же в свою очередь напомню. Если у вас есть какой-то интересный авторский материал относящийся к Oracle - разработке, администрированию и т.п. велком. Я готов опубликовать его с сохранением авторства. Это не обязательно должна быть серия постов. Это может быть и один пост. Народ у нас в канале разный - уровень, специализация и т.п. думаю кому-то да зайдет. Пишите в личку 👍
Oracle Developer
SQL для начинающих тестировщиков (1/17)
Привет всем, меня зовут Даниил!
В тестировании уже несколько лет, долгое время SQL мне был не нужен. Однако, потом я попал на проект, где SQL был основным инструментом для тестирования - пришлось изучать 🤷🏻♂️
Текущий уровень знаний оцениваю как выше среднего (среди тестировщиков). Понятное дело, что есть ребята, которые меня многому научат.
Хотелось бы рассказать о граблях и лайфаках, которые я постиг за это время.
Материал будет полезен тем, кто мало работал с SQL, но сейчас самостоятельно его изучает - как вспомогательный инструмент.
В теории может быть полезен для разработчиков, если они помогают тестировщикам писать скрипты.
Планирую описать
1. А для чего SQL тестировщику?
2. Чем скрипт тестировщика отличается от скрипта разработчика?
3. С чего начать изучать SQL?
4. Select * from - плохая привычка, правильная select distinct * from
5. NVL - вторая правильная привычка тестировщика
6. Так left или inner?
7. Избегаем конструкции вида select * from (select * from (select * from t2) t1) t
8. With as - великое изобретение для работы тестировщика
9. MINUS - второе великое изобретение для работы тестировщика
10. Работа с датами
11. Алиасы таблиц - правильный тон
12. Параметризация скриптов
Примечание
▫️ Я не планирую писать учебник или ссылки. Многое гуглится, еще больше можно просто узнать читая скрипты опытных разработчиков, ну и личное общение с ними - никто не отменял.
▫️Все ошибки, приведенные в постах, реальны (либо мои, либо чужие).
▫️Писать я буду про select. Модификация данных - отдельная тема.
▫️В постах будет рассматриваться только Oracle.
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Привет всем, меня зовут Даниил!
В тестировании уже несколько лет, долгое время SQL мне был не нужен. Однако, потом я попал на проект, где SQL был основным инструментом для тестирования - пришлось изучать 🤷🏻♂️
Текущий уровень знаний оцениваю как выше среднего (среди тестировщиков). Понятное дело, что есть ребята, которые меня многому научат.
Хотелось бы рассказать о граблях и лайфаках, которые я постиг за это время.
Материал будет полезен тем, кто мало работал с SQL, но сейчас самостоятельно его изучает - как вспомогательный инструмент.
В теории может быть полезен для разработчиков, если они помогают тестировщикам писать скрипты.
Планирую описать
1. А для чего SQL тестировщику?
2. Чем скрипт тестировщика отличается от скрипта разработчика?
3. С чего начать изучать SQL?
4. Select * from - плохая привычка, правильная select distinct * from
5. NVL - вторая правильная привычка тестировщика
6. Так left или inner?
7. Избегаем конструкции вида select * from (select * from (select * from t2) t1) t
8. With as - великое изобретение для работы тестировщика
9. MINUS - второе великое изобретение для работы тестировщика
10. Работа с датами
11. Алиасы таблиц - правильный тон
12. Параметризация скриптов
Примечание
▫️ Я не планирую писать учебник или ссылки. Многое гуглится, еще больше можно просто узнать читая скрипты опытных разработчиков, ну и личное общение с ними - никто не отменял.
▫️Все ошибки, приведенные в постах, реальны (либо мои, либо чужие).
▫️Писать я буду про select. Модификация данных - отдельная тема.
▫️В постах будет рассматриваться только Oracle.
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Telegram
Oracle Developer👨🏻💻
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...
Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.
Отец-основатель: @denis_dbd Кивилёв Денис
SQL, PL/SQL, оптимизация, архитектура и многое другое...
Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.
Отец-основатель: @denis_dbd Кивилёв Денис
Чем скрипт тестировщика отличается от скрипта разработчика? (2/17)
Самое главное, cкрипт тестировщика МОЖЕТ быть не оптимальным, но он ДОЛЖЕН возвращать верный результат.
Т.е. часто лучше пойти каким-то более длинным путем написания скрипта, нежели разработчик.
Да, скрипт может выполняться очень долго, но, если он дает такой же результат, что и скрипт разработчика, значится с 99% уверенностью можно считать, что все работает корректно.
Поэтому не нужно стремиться писать оптимально и красиво. Нужно стремиться писать понятно и прямолинейно. Т.е. каждая следующая строчка скрипта явно должна быть очевидна вам и вашему коллеге.
⚠️ скрипт только для дев/тест сред.
Звучит непонятно?
Надеюсь, следующие посты внесут ясность 😉
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Самое главное, cкрипт тестировщика МОЖЕТ быть не оптимальным, но он ДОЛЖЕН возвращать верный результат.
Т.е. часто лучше пойти каким-то более длинным путем написания скрипта, нежели разработчик.
Да, скрипт может выполняться очень долго, но, если он дает такой же результат, что и скрипт разработчика, значится с 99% уверенностью можно считать, что все работает корректно.
Поэтому не нужно стремиться писать оптимально и красиво. Нужно стремиться писать понятно и прямолинейно. Т.е. каждая следующая строчка скрипта явно должна быть очевидна вам и вашему коллеге.
⚠️ скрипт только для дев/тест сред.
Звучит непонятно?
Надеюсь, следующие посты внесут ясность 😉
Обсудить в чатике 💬
Автор: @KlimenkovDM
#sqlдлятестировщиков #тестирование
Специально для Oracle Developer
Telegram
Oracle Developer Chat👨🏻💻🗣👥
Чат для обсуждения постов канала "Oracle Developer".
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)
https://t.me/oracle_dbd - основной канал
Автор канала и создатель чата Кивилев Денис (@denis_dbd)