#Вопросы_с_собеседования
Объясните, что такое фантомное чтение в транзакциях баз данных, и какие меры могут быть приняты для его предотвращения?
Фантомное чтение — это явление в базах данных, когда транзакция повторно читает данные и обнаруживает строки, которых раньше не было, из-за изменений, внесенных другой недавно завершенной транзакцией. Это может привести к неконсистентности данных, если одна транзакция основывается на предыдущем чтении, которое было сделано до внесения изменений.
Для предотвращения фантомного чтения можно использовать строгие уровни изоляции транзакций, например, уровень сериализуемости, который гарантирует, что транзакции выполняются так, как если бы они происходили в отдельной последовательности, а не параллельно. Это может быть достигнуто с помощью механизмов блокировки строк, предотвращающих другие транзакции от внесения изменений в строки, которые используются текущей транзакцией, или с помощью многоуровневых версий снимков данных (MVCC), которые предоставляют каждой транзакции консистентный снимок базы данных на определенный момент времени.
Объясните, что такое фантомное чтение в транзакциях баз данных, и какие меры могут быть приняты для его предотвращения?
Для предотвращения фантомного чтения можно использовать строгие уровни изоляции транзакций, например, уровень сериализуемости, который гарантирует, что транзакции выполняются так, как если бы они происходили в отдельной последовательности, а не параллельно. Это может быть достигнуто с помощью механизмов блокировки строк, предотвращающих другие транзакции от внесения изменений в строки, которые используются текущей транзакцией, или с помощью многоуровневых версий снимков данных (MVCC), которые предоставляют каждой транзакции консистентный снимок базы данных на определенный момент времени.
👍11
#Вопросы_с_собеседования
Какая разница между реляционной базой данных и графовой базой данных, и какая из них лучше для работы с социальными сетями?
Реляционная база данных организована в виде таблиц, связанных между собой по ключам, а графовая база данных использует графовую модель и хранит данные в виде узлов и связей между ними.
Для работы с социальными сетями лучше подходит графовая база данных. Социальные сети характеризуются сложными связями между пользователями, например, дружба, подписки и взаимодействия. Графовые базы данных эффективно моделируют такие связи и обеспечивают быстрый доступ к информации, связанной с каждым пользователем и его связями.
Какая разница между реляционной базой данных и графовой базой данных, и какая из них лучше для работы с социальными сетями?
Реляционная база данных организована в виде таблиц, связанных между собой по ключам, а графовая база данных использует графовую модель и хранит данные в виде узлов и связей между ними.
Для работы с социальными сетями лучше подходит графовая база данных. Социальные сети характеризуются сложными связями между пользователями, например, дружба, подписки и взаимодействия. Графовые базы данных эффективно моделируют такие связи и обеспечивают быстрый доступ к информации, связанной с каждым пользователем и его связями.
👍11
Каким будет вывод INSTR('FREETIMELEARN', 'M')?
Anonymous Quiz
12%
6
28%
7
15%
FREETI
12%
MELEARN
32%
Посмотреть ответ
👍9
#Вопросы_с_собеседования
Объясните, как SQL обрабатывает запрос с множественными JOIN операторами, содержащими условия как на INNER, так и на LEFT JOIN, и как это влияет на производительность запроса. Приведите пример.
SQL выполняет операции JOIN последовательно в том порядке, в котором они указаны в запросе, если только оптимизатор запросов не решит изменить порядок для повышения эффективности. INNER JOIN строго соединяет строки, удовлетворяющие условиям соединения, в то время как LEFT JOIN включает все строки из левой таблицы, даже если соответствующие строки в правой таблице отсутствуют. Смешивание этих двух типов JOIN может значительно повлиять на результаты запроса и его производительность. Если запрос содержит неоптимизированные или избыточные JOIN, это может привести к увеличению времени выполнения за счет большего объема обрабатываемых данных и сложности операций соединения.
SELECT A.*, B.*, C.*
FROM A
INNER JOIN B ON A.id = B.a_id
LEFT JOIN C ON A.id = C.a_id
WHERE A.some_column = 'some_value';
В этом запросе сначала выполняется INNER JOIN между таблицами A и B, а затем LEFT JOIN с таблицей C. Результат может быть значительно отличаться, если поменять порядок JOIN, и это может повлиять на производительность запроса.
Объясните, как SQL обрабатывает запрос с множественными JOIN операторами, содержащими условия как на INNER, так и на LEFT JOIN, и как это влияет на производительность запроса. Приведите пример.
SQL выполняет операции JOIN последовательно в том порядке, в котором они указаны в запросе, если только оптимизатор запросов не решит изменить порядок для повышения эффективности. INNER JOIN строго соединяет строки, удовлетворяющие условиям соединения, в то время как LEFT JOIN включает все строки из левой таблицы, даже если соответствующие строки в правой таблице отсутствуют. Смешивание этих двух типов JOIN может значительно повлиять на результаты запроса и его производительность. Если запрос содержит неоптимизированные или избыточные JOIN, это может привести к увеличению времени выполнения за счет большего объема обрабатываемых данных и сложности операций соединения.
FROM A
INNER JOIN B ON
LEFT JOIN C ON
WHERE A.some_column = 'some_value';
В этом запросе сначала выполняется INNER JOIN между таблицами A и B, а затем LEFT JOIN с таблицей C. Результат может быть значительно отличаться, если поменять порядок JOIN, и это может повлиять на производительность запроса.
👍7
#Вопросы_с_собеседования
Как вы оптимизируете запросы SQL в больших базах данных для улучшения производительности, и какие факторы вы учитываете при анализе и улучшении эффективности запроса?
Для оптимизации SQL-запросов в больших базах данных, важно учитывать следующие факторы: использование индексов для ускорения поиска данных; избегание излишних операций соединения таблиц, особенно в случае больших наборов данных; оптимизация подзапросов и обеспечение их эффективности; использование агрегатных функций и временных таблиц для сокращения объёма обрабатываемых данных; анализ плана выполнения запроса для выявления узких мест. Также важно регулярно обновлять статистику базы данных для точной оценки планов выполнения и использовать подходящие методы кэширования для повторно используемых запросов.
Как вы оптимизируете запросы SQL в больших базах данных для улучшения производительности, и какие факторы вы учитываете при анализе и улучшении эффективности запроса?
Для оптимизации SQL-запросов в больших базах данных, важно учитывать следующие факторы: использование индексов для ускорения поиска данных; избегание излишних операций соединения таблиц, особенно в случае больших наборов данных; оптимизация подзапросов и обеспечение их эффективности; использование агрегатных функций и временных таблиц для сокращения объёма обрабатываемых данных; анализ плана выполнения запроса для выявления узких мест. Также важно регулярно обновлять статистику базы данных для точной оценки планов выполнения и использовать подходящие методы кэширования для повторно используемых запросов.
👍6❤🔥3
#Вопросы_с_собеседования
В чем заключается основной недостаток удаления данных из существующей таблицы с помощью команды DROP TABLE?
Хотя команда DROP TABLE позволяет полностью удалить данные из существующей таблицы, у не` есть недостаток — она удаляет полную структуру таблицы из базы данных. Из-за этого нам нужно заново создать таблицу для хранения данных.
В чем заключается основной недостаток удаления данных из существующей таблицы с помощью команды DROP TABLE?
👍19
#Вопросы_с_собеседования
Что такое "SQL инъекция" и как её можно предотвратить?
SQL инъекция – это вид атаки на приложения, при котором злоумышленник вводит или "инъецирует" вредоносный SQL-код в запрос, который затем выполняется базой данных. Это может привести к несанкционированному доступу к данным, их изменению или удалению, а также к другим серьезным уязвимостям безопасности.
Для предотвращения SQL инъекций следует использовать параметризованные запросы, при которых вводимые пользователем данные обрабатываются как параметры, а не как часть SQL-кода. Это изолирует эти данные от самого запроса, предотвращая их интерпретацию как часть SQL-команды. Также важно проводить валидацию и санитизацию вводимых данных, ограничивая возможность ввода потенциально опасных символов или конструкций.
Что такое "SQL инъекция" и как её можно предотвратить?
SQL инъекция – это вид атаки на приложения, при котором злоумышленник вводит или "инъецирует" вредоносный SQL-код в запрос, который затем выполняется базой данных. Это может привести к несанкционированному доступу к данным, их изменению или удалению, а также к другим серьезным уязвимостям безопасности.
Для предотвращения SQL инъекций следует использовать параметризованные запросы, при которых вводимые пользователем данные обрабатываются как параметры, а не как часть SQL-кода. Это изолирует эти данные от самого запроса, предотвращая их интерпретацию как часть SQL-команды. Также важно проводить валидацию и санитизацию вводимых данных, ограничивая возможность ввода потенциально опасных символов или конструкций.
👍13
Установка значения по умолчанию для NULL
Предположим, у вас есть таблица Users с полями Name и Email. Некоторые строки имеют NULL в поле Email. Вы хотите выбрать все имена и электронные адреса, но для строк с NULL в Email вы хотите установить значение по умолчанию, например, 'no-еmail@example.c0m'.
Предположим, у вас есть таблица Users с полями Name и Email. Некоторые строки имеют NULL в поле Email. Вы хотите выбрать все имена и электронные адреса, но для строк с NULL в Email вы хотите установить значение по умолчанию, например, 'no-еmail@example.c0m'.
👍11
#Вопросы_с_собеседования
Как выполнить сопоставление без учёта регистра с использованием регулярных выражений в PostgreSQL?
Чтобы выполнить сопоставления без учета регистра с использованием регулярного выражения, мы можем использовать выражение POSIX (~*) из операторов сопоставления с образцом. Например:
'interviewbit' ~* '.*INTervIewBit.*'
Как выполнить сопоставление без учёта регистра с использованием регулярных выражений в PostgreSQL?
'interviewbit' ~* '.*INTervIewBit.*'
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3
#Вопросы_с_собеседования
Что такое определяемая пользователем функция?
Определяемая пользователем функция — это подпрограмма, которая принимает параметры, выполняет действие и возвращает результат в виде одного скалярного значения или результирующий набор.
Что такое определяемая пользователем функция?
Определяемая пользователем функция — это подпрограмма, которая принимает параметры, выполняет действие и возвращает результат в виде одного скалярного значения или результирующий набор.
👍5
#Вопросы_с_собеседования
Как можно оптимизировать выполнение запроса с использованием коррелированного подзапроса, чтобы улучшить производительность на больших объемах данных?
Один из эффективных способов оптимизации — преобразование коррелированного подзапроса в JOIN. Коррелированный подзапрос выполняется для каждой строки внешнего запроса, что может быть неэффективно на больших наборах данных. Использование JOIN позволяет базе данных обрабатывать данные более эффективно, сокращая общее время выполнения за счет однократного выполнения операции соединения и оптимизации плана запроса.
Как можно оптимизировать выполнение запроса с использованием коррелированного подзапроса, чтобы улучшить производительность на больших объемах данных?
Один из эффективных способов оптимизации — преобразование коррелированного подзапроса в JOIN. Коррелированный подзапрос выполняется для каждой строки внешнего запроса, что может быть неэффективно на больших наборах данных. Использование JOIN позволяет базе данных обрабатывать данные более эффективно, сокращая общее время выполнения за счет однократного выполнения операции соединения и оптимизации плана запроса.
👍14
This media is not supported in your browser
VIEW IN TELEGRAM
Легкий и простой интрумент для визуализация связей и структур БД, поддерживающий более 20 разных БД.
https://github.com/sqlparser/sqlflow_public/blob/master/install_sqlflow.md
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁5❤🔥1
Какой запрос позволит получить всех пользователей так, чтобы новые оказались в начале? Дата регистрации - "reg_date".
Anonymous Quiz
61%
SELECT * FROM users ORDER BY reg_date DESC
8%
SELECT * FROM users SORT BY reg_date DESC
20%
SELECT * FROM users ORDER BY reg_date ASC
4%
SELECT * FROM users ORDER ASC BY reg_date
2%
SELECT * FROM users SORT(reg_date)
5%
Посмотреть ответ
👍11🎄4
This media is not supported in your browser
VIEW IN TELEGRAM
Вот его основные возможности:
▪️Запуск одной ячейки приводит к автоматическому запуску всех зависимых ячеек.
▪️Вы можете запускать свои ноутбуки как скрипты Python, параметры которых задаются через аргументы командной строки.
▪️Встроенная поддержка SQL и удобная панель для работы с данными делают Marimo мощным инструментом для анализа информации.
▪️Ноутбуки Marimo сохраняются в формате .py, что позволяет легко управлять версиями через Git.
Важно отметить, что поддержка SQL была добавлена недавно. Это позволяет вам писать запросы и получать результаты в виде датафреймов.
pip install marimo && marimo tutorial introhttps://github.com/marimo-team/marimo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что не так с этим запросом?
SELECT id, date FROM Orders WHERE seller_id = NULL;
SELECT id, date FROM Orders WHERE seller_id = NULL;
Anonymous Quiz
6%
Все верно, запрос покажет все заказы, продавцы которых не проставлены
5%
NULL нужно взять в кавычки
81%
Сравнение с NULL можно проводить только с оператором IS
1%
Сравнение с NULL можно проводить только с оператором ON
7%
Узнать ответ
👍9🎄5❤🔥1