Совсем забыл рассказать про букву D :) D - Долговечность (durability). Это значит, что после окончания транзакции данные записались на жесткий диск и в случае внезапного выключения электричества/сбоя данные все равно останутся в базе данных и не потеряются. Подготовиться к собеседованию и повторить вопросы по SQL и базам данных можно в Солвит: clck.ru/3FKmEE
Введение в ACID: Автор объясняет, что ACID - это набор принципов, которые обеспечивают надёжность и целостность данных в базах данных. Эти принципы часто задают на собеседованиях для разработчиков и аналитиков. Атомарность (Atomicity): Определение: Атомарность гарантирует, что транзакция либо выполняется полностью, либо не выполняется вовсе. Если одна из операций в транзакции не удаётся, вся транзакция откатывается. Пример: Перевод денег между двумя счетами. Если списание средств с одного счёта прошло успешно, а зачисление на другой счёт не удалось, транзакция откатывается, и деньги возвращаются на исходный счёт. Консистентность (Consistency): Определение: Консистентность гарантирует, что данные в базе всегда соответствуют определённым правилам и ограничениям (например, уникальность значений, проверка на положительные числа и т.д.). Пример: Если в таблице есть ограничение, что значение в столбце должно быть больше нуля, попытка вставить отрицательное значение приведёт к ошибке, и транзакция не будет завершена. Изоляция (Isolation): Определение: Изоляция гарантирует, что параллельные транзакции не влияют друг на друга. Существуют разные уровни изоляции, которые определяют, насколько строго транзакции изолированы друг от друга. Уровни изоляции: Read Uncommitted: Позволяет читать незафиксированные данные из других транзакций, что может привести к "грязному чтению". Read Committed: Позволяет читать только зафиксированные данные, что предотвращает "грязное чтение", но может привести к "фантомному чтению". Repeatable Read: Гарантирует, что в рамках одной транзакции данные не изменятся, даже если другие транзакции их изменят. Serializable: Самый строгий уровень изоляции, который полностью изолирует транзакции, предотвращая любые аномалии. Долговечность (Durability): Определение: Долговечность гарантирует, что после завершения транзакции данные будут сохранены в базе данных, даже в случае сбоя системы. Пример: После успешного завершения транзакции (commit), данные будут сохранены на диске, и даже если сервер выключится, данные не будут потеряны. Практические примеры и проблемы: Грязное чтение: Когда одна транзакция читает незафиксированные данные другой транзакции, что может привести к ошибкам, если та транзакция откатится. Фантомное чтение: Когда одна транзакция читает данные, а другая транзакция добавляет новые данные, что приводит к несоответствию между двумя запросами. Аномалии при параллельных транзакциях: Уровень изоляции Serializable предотвращает такие аномалии, но может замедлить работу базы данных. Рекомендации для собеседований: Автор советует понимать, как работают уровни изоляции и блокировки в базах данных, чтобы успешно проходить собеседования и строить надёжные системы. Он также рекомендует использовать уровень изоляции Repeatable Read или Serializable только в тех случаях, когда это действительно необходимо, так как они могут замедлить работу базы данных. Заключение: Автор подчёркивает важность понимания принципов ACID для разработчиков и аналитиков, работающих с базами данных. Он также предлагает подписаться на его Telegram-канал для получения дополнительных материалов по развитию технических навыков.
Теперь надо про BASE BASE - это акроним, который описывает альтернативный подход к работе с базами данных, противопоставляемый традиционному подходу ACID. В то время как ACID акцентирует внимание на надежности, согласованности и целостности транзакций, BASE предлагает более гибкий подход, основанный на следующих принципах: 1. **B - Basically Available (В основном доступно)**: Система должна быть доступна в большинстве случаев, даже если некоторые узлы не работают. 2. **S - Soft state (Мягкое состояние)**: Состояние системы может меняться со временем, даже если нет внешних воздействий. Это связано с тем, что данные могут быть асинхронно реплицированы и синхронизированы. 3. **E - Eventually consistent (В конечном итоге согласованно)**: Система гарантирует, что в конечном итоге все реплики данных станут согласованными, но не обязательно мгновенно. BASE подходит для распределенных систем и облачных приложений, где высокая доступность и масштабируемость являются приоритетами, и временные несоответствия в данных являются приемлемыми.
Пока пару лет изучал питон, любую тему для него рассматривал через призму 1С, с которым работал до этого. Потом понял. что искать работу в питоне не светит, вернулся обратно к совершенствованию навыков в 1С, теперь темы из 1С рассматриваю через призму питона. В данном видео изоляция вроде связана с блокировками записей в регистрах из мира 1С, а вроде и про другое.
@@mr.ukrainian6578 фласк особо не трогал, так пару недель в ознакомительных целях. На джанго написал для текущей работы сайт (простейший со списком услуг, прайс-листом, формой обратной связи), потом сделал пару туториалов из ютуб с написанием интернет-магазина и закончил общение с джанго на решении задачи, аналогичной задачам из экзамена по 1С, а также сделал сам себе простейшую программку для изучения английского, запихал ее в докер-контейнер. Затем немного потыкал в ДРФ, а также во vue.js, чтобы не в постмэне смотреть результат. а на реальном фронте. Переписал на ДРФ + Вью свою задачу аналогичную задачам 1С. И сделал какой-то туториал, где использовался редис и селери вместе с ДРФ. Затем перешел к фастапи. Пару месяцев его по изучал. И для общего развития где-то в перерывах между фреймворками потыкался в написание телеграм-ботов. Но попробовал по откликаться на вакансии, никто на мои резюме не отреагировал, и я решил. что резюме с цифрой 0 в графе опыт работы вряд ли кому-то потребуется. вернусь к 1С, благо там в графе опыт можно писать 10 лет. Но не желаю о времени, потраченном на питон, как минимум я перестал бояться задач в 1С, связанных с взаимодействием по API с какими-то системами, плюс могу сам себе для таких задач сделать бэк, чтобы испытывать подключение и получение данных до того. как мне клиент предоставит доступ к своему API.
@@mr.ukrainian6578 фреймворки изучал. Фласк чуть-чуть, чтобы потрогать что за зверь. Джанго мне понравился, через месяц после его изучения сделал сайт для текущей своей работы со списком услуг, прайс-листом, формой обратной связи. 2 года сайт поработал, но как-то им не сильно пользовались и месяц назад не стал продлевать хостинг. После рабочего сайта сделал еще пару туториалов с интернет-магазинами, для себя сделал программу для изучения английского, поместил ее в докер-контейнер и использовал. Потом закончил общение с Джанго, сделав задачу по условиям из экзаменов 1С. (документы приход товаров, расход товаров, приход денег, расход денег, контроль остатков. расчет себестоимости). Затем решил по изучать ДРФ, и чтобы нормально проекты на ДРФ выглядели, посмотрел на vue.js, чтобы не в постмэне запросы делать, а из более-менее приемлемого фронта (правда без красивой верстки). Сделал пару туториалов в ДРФ в том числе с использованием редис и селери. Затем переписал на ДРФ+Вью свою задачу из экзаменов по 1С. После этого приступил к ФастАпи. Его пару месяцев потыкал, поделал по видео с этого канала, потом по введению из документации прошелся и сделал. В промежутках между фреймворками потрогал написание телеграм-ботов. А затем понял. что работодатели не очень реагируют на мои отклики с цифрой 0 в графе опыт в резюме и решил вернуться к 1С, где в графе опыт могу писать больше 10 лет. Но не жалею, что на питон потратил время, т.к. добавило понимания в работе с API, и в задачах по взаимодействию 1С с какими-то ресурсами, я могу сам сделать свое API, которое бы выдавало данные в нужном формате, а в 1С описывать обработку этой информации до того. как клиент предоставит мне свой доступ.
Отличное видео, наконец-то у меня всё сложилось. Но вообще нужно упомянуть, что в PostgreSQL уровень изоляции read uncommited отсутствует от слова совсем. Потому что у него другой способ работы движка, у него вместо блокировок версионирование и увидеть незакоммиченные данные там невозможно - они живут в отдельной версии, которую до коммита никто не видит, просто нет никакого механизма их увидеть из другой сессии.
Отличное видео! Про depends будет ролик? P.s. не слушай комментарии, что не надо выпускать ролики про собесы. Мне и я думаю многим очень интересно слушать такие важные вещи простым и главное - правильным языком. Часто очень некоторые люди при объяснении упускают какую-то мелкую деталь из-за которой потом складывается неправильное представление о тех или иных вещах.
Разве Repeatable read решает проблему фантомного чтения? Он решает проблему неповторяющегося чтения в рамках одной транзакции, которая возникает на уровне Read Committed. Проблема неповторяющегося чтения здесь даже не была упомянута, а проблема фантомного чтения решается на уровне Serializable.
Вот я тоже это заметил, все верно, Repeatable Read (Повторяемое чтение) даже исходя из названия, защищает от неповторяемого чтения. Но остается проблема фантомного чтения. Которая в свою очередь решается на уровне Serializable. Но есть жирное НО. В PostgreSQL уровень изоляции Repeatable Read предотвращает фантомное чтение (Phantom Read), что отличает его от некоторых других СУБД.
13 Никто не восходил на небо, как только сшедший с небес Сын Человеческий, сущий на небесах. 14 И как Моисей вознес змию в пустыне, так должно вознесену быть Сыну Человеческому, 15 дабы всякий, верующий в Него, не погиб, но имел жизнь вечную. 16 Ибо так возлюбил Бог мир, что отдал Сына Своего Единородного, дабы всякий верующий в Него, не погиб, но имел жизнь вечную. 17 Ибо не послал Бог Сына Своего в мир, чтобы судить мир, но чтобы мир спасен был чрез Него. 18 Верующий в Него не судится, а неверующий уже осужден, потому что не уверовал во имя Единородного Сына Божия. 19 Суд же состоит в том, что свет пришел в мир; но люди более возлюбили тьму, нежели свет, потому что дела их были злы; 20 ибо всякий, делающий злое, ненавидит свет и не идет к свету, чтобы не обличились дела его, потому что они злы, 21 а поступающий по правде идет к свету, дабы явны были дела его, потому что они в Боге соделаны. (Иоан.3:13-21)
Зачем же отнимать хлеб у DBA? Эти специалисты хорошо управляются с базами данных. А разработчикам в 99% случаев возможностей ORM за глаза, а оставшийся 1% можно и DBA отдать.
Что тебе на низком уровне? Консистентность - свойство транзакции оставлять после себя базу данных в состоянии, когда все записи удовлетворяют всем ограничениям и требованиям к таблицам. Если какой-либо запрос в транзакции приводит к нарушению консистентность БД, то вся транзакция отменяется. Вопросы?
Совсем забыл рассказать про букву D :) D - Долговечность (durability). Это значит, что после окончания транзакции данные записались на жесткий диск и в случае внезапного выключения электричества/сбоя данные все равно останутся в базе данных и не потеряются.
Подготовиться к собеседованию и повторить вопросы по SQL и базам данных можно в Солвит: clck.ru/3FKmEE
ну теперь нужен видос по индексам))
Durability: "Дорогой дневник, мне не передать..."
Про Isolation хорошо с примерами показано 👍
Спасибо!
Всегда с другом рады смотреть твои видео, спасибо за разборы таких тем)
не переставайте публиковать полезные видео по fastapi! ваши видео меня очень вдохновляют и учат многому, оформил подписку в бусти)
спасибо за подробное объяснение!
Спасибо! Приглашаю вас на Практический курс по Backend разработке: artemshumeiko.ru
Введение в ACID: Автор объясняет, что ACID - это набор принципов, которые обеспечивают надёжность и целостность данных в базах данных. Эти принципы часто задают на собеседованиях для разработчиков и аналитиков.
Атомарность (Atomicity):
Определение: Атомарность гарантирует, что транзакция либо выполняется полностью, либо не выполняется вовсе. Если одна из операций в транзакции не удаётся, вся транзакция откатывается.
Пример: Перевод денег между двумя счетами. Если списание средств с одного счёта прошло успешно, а зачисление на другой счёт не удалось, транзакция откатывается, и деньги возвращаются на исходный счёт.
Консистентность (Consistency):
Определение: Консистентность гарантирует, что данные в базе всегда соответствуют определённым правилам и ограничениям (например, уникальность значений, проверка на положительные числа и т.д.).
Пример: Если в таблице есть ограничение, что значение в столбце должно быть больше нуля, попытка вставить отрицательное значение приведёт к ошибке, и транзакция не будет завершена.
Изоляция (Isolation):
Определение: Изоляция гарантирует, что параллельные транзакции не влияют друг на друга. Существуют разные уровни изоляции, которые определяют, насколько строго транзакции изолированы друг от друга.
Уровни изоляции:
Read Uncommitted: Позволяет читать незафиксированные данные из других транзакций, что может привести к "грязному чтению".
Read Committed: Позволяет читать только зафиксированные данные, что предотвращает "грязное чтение", но может привести к "фантомному чтению".
Repeatable Read: Гарантирует, что в рамках одной транзакции данные не изменятся, даже если другие транзакции их изменят.
Serializable: Самый строгий уровень изоляции, который полностью изолирует транзакции, предотвращая любые аномалии.
Долговечность (Durability):
Определение: Долговечность гарантирует, что после завершения транзакции данные будут сохранены в базе данных, даже в случае сбоя системы.
Пример: После успешного завершения транзакции (commit), данные будут сохранены на диске, и даже если сервер выключится, данные не будут потеряны.
Практические примеры и проблемы:
Грязное чтение: Когда одна транзакция читает незафиксированные данные другой транзакции, что может привести к ошибкам, если та транзакция откатится.
Фантомное чтение: Когда одна транзакция читает данные, а другая транзакция добавляет новые данные, что приводит к несоответствию между двумя запросами.
Аномалии при параллельных транзакциях: Уровень изоляции Serializable предотвращает такие аномалии, но может замедлить работу базы данных.
Рекомендации для собеседований:
Автор советует понимать, как работают уровни изоляции и блокировки в базах данных, чтобы успешно проходить собеседования и строить надёжные системы.
Он также рекомендует использовать уровень изоляции Repeatable Read или Serializable только в тех случаях, когда это действительно необходимо, так как они могут замедлить работу базы данных.
Заключение:
Автор подчёркивает важность понимания принципов ACID для разработчиков и аналитиков, работающих с базами данных.
Он также предлагает подписаться на его Telegram-канал для получения дополнительных материалов по развитию технических навыков.
Просто легендарный канал, лучший в СНГ комьюнити❤
Теперь надо про BASE
BASE - это акроним, который описывает альтернативный подход к работе с базами данных, противопоставляемый традиционному подходу ACID. В то время как ACID акцентирует внимание на надежности, согласованности и целостности транзакций, BASE предлагает более гибкий подход, основанный на следующих принципах:
1. **B - Basically Available (В основном доступно)**: Система должна быть доступна в большинстве случаев, даже если некоторые узлы не работают.
2. **S - Soft state (Мягкое состояние)**: Состояние системы может меняться со временем, даже если нет внешних воздействий. Это связано с тем, что данные могут быть асинхронно реплицированы и синхронизированы.
3. **E - Eventually consistent (В конечном итоге согласованно)**: Система гарантирует, что в конечном итоге все реплики данных станут согласованными, но не обязательно мгновенно.
BASE подходит для распределенных систем и облачных приложений, где высокая доступность и масштабируемость являются приоритетами, и временные несоответствия в данных являются приемлемыми.
Пока пару лет изучал питон, любую тему для него рассматривал через призму 1С, с которым работал до этого. Потом понял. что искать работу в питоне не светит, вернулся обратно к совершенствованию навыков в 1С, теперь темы из 1С рассматриваю через призму питона.
В данном видео изоляция вроде связана с блокировками записей в регистрах из мира 1С, а вроде и про другое.
совсем не вышло найти работу на пайтон? или не изучал джанго фласк или другие фреймворки?
@@mr.ukrainian6578 фласк особо не трогал, так пару недель в ознакомительных целях. На джанго написал для текущей работы сайт (простейший со списком услуг, прайс-листом, формой обратной связи), потом сделал пару туториалов из ютуб с написанием интернет-магазина и закончил общение с джанго на решении задачи, аналогичной задачам из экзамена по 1С, а также сделал сам себе простейшую программку для изучения английского, запихал ее в докер-контейнер.
Затем немного потыкал в ДРФ, а также во vue.js, чтобы не в постмэне смотреть результат. а на реальном фронте. Переписал на ДРФ + Вью свою задачу аналогичную задачам 1С. И сделал какой-то туториал, где использовался редис и селери вместе с ДРФ.
Затем перешел к фастапи. Пару месяцев его по изучал.
И для общего развития где-то в перерывах между фреймворками потыкался в написание телеграм-ботов.
Но попробовал по откликаться на вакансии, никто на мои резюме не отреагировал, и я решил. что резюме с цифрой 0 в графе опыт работы вряд ли кому-то потребуется. вернусь к 1С, благо там в графе опыт можно писать 10 лет.
Но не желаю о времени, потраченном на питон, как минимум я перестал бояться задач в 1С, связанных с взаимодействием по API с какими-то системами, плюс могу сам себе для таких задач сделать бэк, чтобы испытывать подключение и получение данных до того. как мне клиент предоставит доступ к своему API.
@@mr.ukrainian6578 странно, написал длиннющий ответ, а он не появился
@@mr.ukrainian6578 фреймворки изучал. Фласк чуть-чуть, чтобы потрогать что за зверь.
Джанго мне понравился, через месяц после его изучения сделал сайт для текущей своей работы со списком услуг, прайс-листом, формой обратной связи. 2 года сайт поработал, но как-то им не сильно пользовались и месяц назад не стал продлевать хостинг. После рабочего сайта сделал еще пару туториалов с интернет-магазинами, для себя сделал программу для изучения английского, поместил ее в докер-контейнер и использовал.
Потом закончил общение с Джанго, сделав задачу по условиям из экзаменов 1С. (документы приход товаров, расход товаров, приход денег, расход денег, контроль остатков. расчет себестоимости).
Затем решил по изучать ДРФ, и чтобы нормально проекты на ДРФ выглядели, посмотрел на vue.js, чтобы не в постмэне запросы делать, а из более-менее приемлемого фронта (правда без красивой верстки). Сделал пару туториалов в ДРФ в том числе с использованием редис и селери. Затем переписал на ДРФ+Вью свою задачу из экзаменов по 1С.
После этого приступил к ФастАпи. Его пару месяцев потыкал, поделал по видео с этого канала, потом по введению из документации прошелся и сделал.
В промежутках между фреймворками потрогал написание телеграм-ботов.
А затем понял. что работодатели не очень реагируют на мои отклики с цифрой 0 в графе опыт в резюме и решил вернуться к 1С, где в графе опыт могу писать больше 10 лет.
Но не жалею, что на питон потратил время, т.к. добавило понимания в работе с API, и в задачах по взаимодействию 1С с какими-то ресурсами, я могу сам сделать свое API, которое бы выдавало данные в нужном формате, а в 1С описывать обработку этой информации до того. как клиент предоставит мне свой доступ.
странная история, второй раз мой ответ пропал.
чет обидно, что так быстро видео закончилось.
25 минут прям, как миг, особенно, когда речь пошла про интересные локи селект фор апдейт.
Теперь нужно видео обзор по Dbeaver. Расскажт плиз как запускал скрипты?
Отличное видео, наконец-то у меня всё сложилось. Но вообще нужно упомянуть, что в PostgreSQL уровень изоляции read uncommited отсутствует от слова совсем. Потому что у него другой способ работы движка, у него вместо блокировок версионирование и увидеть незакоммиченные данные там невозможно - они живут в отдельной версии, которую до коммита никто не видит, просто нет никакого механизма их увидеть из другой сессии.
Хорошее доступное объяснение. Спасибо!
P.S А D Durability я пропустил? Долговечность иными словами?
Ладно. Убедил, подписываюсь
Теперь надо про BASE
не хватило расшифровки каждой буквы. Я люблю более наглядно получать и закреплять информацию. А так клёво. Спасибо
Спасибо за видео, а что за программа на которой ты показывал транзакции?
Dbeaver
дибивер
dbeaver
@@artemshumeiko Моё почтение, с меня подписка:)
Отличное видео! Про depends будет ролик?
P.s. не слушай комментарии, что не надо выпускать ролики про собесы. Мне и я думаю многим очень интересно слушать такие важные вещи простым и главное - правильным языком. Часто очень некоторые люди при объяснении упускают какую-то мелкую деталь из-за которой потом складывается неправильное представление о тех или иных вещах.
огонь
Разве Repeatable read решает проблему фантомного чтения? Он решает проблему неповторяющегося чтения в рамках одной транзакции, которая возникает на уровне Read Committed. Проблема неповторяющегося чтения здесь даже не была упомянута, а проблема фантомного чтения решается на уровне Serializable.
Вот я тоже это заметил, все верно, Repeatable Read (Повторяемое чтение) даже исходя из названия, защищает от неповторяемого чтения. Но остается проблема фантомного чтения. Которая в свою очередь решается на уровне Serializable.
Но есть жирное НО. В PostgreSQL уровень изоляции Repeatable Read предотвращает фантомное чтение (Phantom Read), что отличает его от некоторых других СУБД.
13 Никто не восходил на небо, как только сшедший с небес Сын Человеческий, сущий на небесах.
14 И как Моисей вознес змию в пустыне, так должно вознесену быть Сыну Человеческому,
15 дабы всякий, верующий в Него, не погиб, но имел жизнь вечную.
16 Ибо так возлюбил Бог мир, что отдал Сына Своего Единородного, дабы всякий верующий в Него, не погиб, но имел жизнь вечную.
17 Ибо не послал Бог Сына Своего в мир, чтобы судить мир, но чтобы мир спасен был чрез Него.
18 Верующий в Него не судится, а неверующий уже осужден, потому что не уверовал во имя Единородного Сына Божия.
19 Суд же состоит в том, что свет пришел в мир; но люди более возлюбили тьму, нежели свет, потому что дела их были злы;
20 ибо всякий, делающий злое, ненавидит свет и не идет к свету, чтобы не обличились дела его, потому что они злы,
21 а поступающий по правде идет к свету, дабы явны были дела его, потому что они в Боге соделаны.
(Иоан.3:13-21)
ОЧень хочу детальное видео по индексации таблиц
Какая-то странная обработка звука... наверное даже через чур обработано 🙄
Иногда даже такое чувство что мне кто-то плямкает в уши 🤔
Консистентность - согласованность.
Не раскрывает всего смысла
Соблюдайте гигиену кода...и кода и скрипта!
Атомы делятся
удивительно, но нигде никогда ни разу и никто.
Эм… без таблицы с транзакциями балансы никто не меняет
Только настоящая транзакция не существует в СУБД
атом делим:)
Но когда его так назвали, считалось, что нет ))
@@CrazyElf1971 деление атома открыли раньше, чем создали первый компьютер
Не душни😄
@@grayboy А само понятие атома восходит к древним грекам, до компьютеров было совсем далеко )
Слово с греческого переводится "неделимый". Т.е., по факту, физические атомы переименовывать нужно. А тут все норм.
Зачем же отнимать хлеб у DBA? Эти специалисты хорошо управляются с базами данных.
А разработчикам в 99% случаев возможностей ORM за глаза, а оставшийся 1% можно и DBA отдать.
Консистентность неверно обяснили. В блокноте не обьяснишь, нужно понимать как работет код на низком уровне.
Вобщем не пройдешь собеседование 😊
Что тебе на низком уровне? Консистентность - свойство транзакции оставлять после себя базу данных в состоянии, когда все записи удовлетворяют всем ограничениям и требованиям к таблицам. Если какой-либо запрос в транзакции приводит к нарушению консистентность БД, то вся транзакция отменяется. Вопросы?
хватит видосы про собесы. С нынешними hr-ами про работу можно забыть. Расскажи уже, как хантить заказы backend-разработчикам.