Что такое ACID - самый популярный вопрос Backend разработчику

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 55

  • @artemshumeiko
    @artemshumeiko  Месяц назад +26

    Совсем забыл рассказать про букву D :) D - Долговечность (durability). Это значит, что после окончания транзакции данные записались на жесткий диск и в случае внезапного выключения электричества/сбоя данные все равно останутся в базе данных и не потеряются.
    Подготовиться к собеседованию и повторить вопросы по SQL и базам данных можно в Солвит: clck.ru/3FKmEE

  • @КириллДавлетшин-в3р
    @КириллДавлетшин-в3р Месяц назад +24

    ну теперь нужен видос по индексам))

  • @Наибалгоевв
    @Наибалгоевв Месяц назад +21

    Durability: "Дорогой дневник, мне не передать..."

  • @couragic
    @couragic Месяц назад +8

    Про Isolation хорошо с примерами показано 👍

  • @elslavak
    @elslavak Месяц назад +1

    Всегда с другом рады смотреть твои видео, спасибо за разборы таких тем)

  • @ИльясШамшиден-р8п
    @ИльясШамшиден-р8п Месяц назад +1

    не переставайте публиковать полезные видео по fastapi! ваши видео меня очень вдохновляют и учат многому, оформил подписку в бусти)

  • @СергейФролов-ъ5я
    @СергейФролов-ъ5я 4 дня назад

    спасибо за подробное объяснение!

    • @artemshumeiko
      @artemshumeiko  4 дня назад

      Спасибо! Приглашаю вас на Практический курс по Backend разработке: artemshumeiko.ru

  • @2009Spread
    @2009Spread Месяц назад +3

    Введение в ACID: Автор объясняет, что ACID - это набор принципов, которые обеспечивают надёжность и целостность данных в базах данных. Эти принципы часто задают на собеседованиях для разработчиков и аналитиков.
    Атомарность (Atomicity):
    Определение: Атомарность гарантирует, что транзакция либо выполняется полностью, либо не выполняется вовсе. Если одна из операций в транзакции не удаётся, вся транзакция откатывается.
    Пример: Перевод денег между двумя счетами. Если списание средств с одного счёта прошло успешно, а зачисление на другой счёт не удалось, транзакция откатывается, и деньги возвращаются на исходный счёт.
    Консистентность (Consistency):
    Определение: Консистентность гарантирует, что данные в базе всегда соответствуют определённым правилам и ограничениям (например, уникальность значений, проверка на положительные числа и т.д.).
    Пример: Если в таблице есть ограничение, что значение в столбце должно быть больше нуля, попытка вставить отрицательное значение приведёт к ошибке, и транзакция не будет завершена.
    Изоляция (Isolation):
    Определение: Изоляция гарантирует, что параллельные транзакции не влияют друг на друга. Существуют разные уровни изоляции, которые определяют, насколько строго транзакции изолированы друг от друга.
    Уровни изоляции:
    Read Uncommitted: Позволяет читать незафиксированные данные из других транзакций, что может привести к "грязному чтению".
    Read Committed: Позволяет читать только зафиксированные данные, что предотвращает "грязное чтение", но может привести к "фантомному чтению".
    Repeatable Read: Гарантирует, что в рамках одной транзакции данные не изменятся, даже если другие транзакции их изменят.
    Serializable: Самый строгий уровень изоляции, который полностью изолирует транзакции, предотвращая любые аномалии.
    Долговечность (Durability):
    Определение: Долговечность гарантирует, что после завершения транзакции данные будут сохранены в базе данных, даже в случае сбоя системы.
    Пример: После успешного завершения транзакции (commit), данные будут сохранены на диске, и даже если сервер выключится, данные не будут потеряны.
    Практические примеры и проблемы:
    Грязное чтение: Когда одна транзакция читает незафиксированные данные другой транзакции, что может привести к ошибкам, если та транзакция откатится.
    Фантомное чтение: Когда одна транзакция читает данные, а другая транзакция добавляет новые данные, что приводит к несоответствию между двумя запросами.
    Аномалии при параллельных транзакциях: Уровень изоляции Serializable предотвращает такие аномалии, но может замедлить работу базы данных.
    Рекомендации для собеседований:
    Автор советует понимать, как работают уровни изоляции и блокировки в базах данных, чтобы успешно проходить собеседования и строить надёжные системы.
    Он также рекомендует использовать уровень изоляции Repeatable Read или Serializable только в тех случаях, когда это действительно необходимо, так как они могут замедлить работу базы данных.
    Заключение:
    Автор подчёркивает важность понимания принципов ACID для разработчиков и аналитиков, работающих с базами данных.
    Он также предлагает подписаться на его Telegram-канал для получения дополнительных материалов по развитию технических навыков.

  • @Go_Dnota
    @Go_Dnota 10 дней назад

    Просто легендарный канал, лучший в СНГ комьюнити❤

  • @namazbekbekzhan
    @namazbekbekzhan Месяц назад

    Теперь надо про BASE
    BASE - это акроним, который описывает альтернативный подход к работе с базами данных, противопоставляемый традиционному подходу ACID. В то время как ACID акцентирует внимание на надежности, согласованности и целостности транзакций, BASE предлагает более гибкий подход, основанный на следующих принципах:
    1. **B - Basically Available (В основном доступно)**: Система должна быть доступна в большинстве случаев, даже если некоторые узлы не работают.
    2. **S - Soft state (Мягкое состояние)**: Состояние системы может меняться со временем, даже если нет внешних воздействий. Это связано с тем, что данные могут быть асинхронно реплицированы и синхронизированы.
    3. **E - Eventually consistent (В конечном итоге согласованно)**: Система гарантирует, что в конечном итоге все реплики данных станут согласованными, но не обязательно мгновенно.
    BASE подходит для распределенных систем и облачных приложений, где высокая доступность и масштабируемость являются приоритетами, и временные несоответствия в данных являются приемлемыми.

  • @Фома-ж7я
    @Фома-ж7я Месяц назад +2

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

    • @mr.ukrainian6578
      @mr.ukrainian6578 Месяц назад

      совсем не вышло найти работу на пайтон? или не изучал джанго фласк или другие фреймворки?

    • @Фома-ж7я
      @Фома-ж7я Месяц назад

      @@mr.ukrainian6578 фласк особо не трогал, так пару недель в ознакомительных целях. На джанго написал для текущей работы сайт (простейший со списком услуг, прайс-листом, формой обратной связи), потом сделал пару туториалов из ютуб с написанием интернет-магазина и закончил общение с джанго на решении задачи, аналогичной задачам из экзамена по 1С, а также сделал сам себе простейшую программку для изучения английского, запихал ее в докер-контейнер.
      Затем немного потыкал в ДРФ, а также во vue.js, чтобы не в постмэне смотреть результат. а на реальном фронте. Переписал на ДРФ + Вью свою задачу аналогичную задачам 1С. И сделал какой-то туториал, где использовался редис и селери вместе с ДРФ.
      Затем перешел к фастапи. Пару месяцев его по изучал.
      И для общего развития где-то в перерывах между фреймворками потыкался в написание телеграм-ботов.
      Но попробовал по откликаться на вакансии, никто на мои резюме не отреагировал, и я решил. что резюме с цифрой 0 в графе опыт работы вряд ли кому-то потребуется. вернусь к 1С, благо там в графе опыт можно писать 10 лет.
      Но не желаю о времени, потраченном на питон, как минимум я перестал бояться задач в 1С, связанных с взаимодействием по API с какими-то системами, плюс могу сам себе для таких задач сделать бэк, чтобы испытывать подключение и получение данных до того. как мне клиент предоставит доступ к своему API.

    • @Фома-ж7я
      @Фома-ж7я Месяц назад

      @@mr.ukrainian6578 странно, написал длиннющий ответ, а он не появился

    • @Фома-ж7я
      @Фома-ж7я Месяц назад

      @@mr.ukrainian6578 фреймворки изучал. Фласк чуть-чуть, чтобы потрогать что за зверь.
      Джанго мне понравился, через месяц после его изучения сделал сайт для текущей своей работы со списком услуг, прайс-листом, формой обратной связи. 2 года сайт поработал, но как-то им не сильно пользовались и месяц назад не стал продлевать хостинг. После рабочего сайта сделал еще пару туториалов с интернет-магазинами, для себя сделал программу для изучения английского, поместил ее в докер-контейнер и использовал.
      Потом закончил общение с Джанго, сделав задачу по условиям из экзаменов 1С. (документы приход товаров, расход товаров, приход денег, расход денег, контроль остатков. расчет себестоимости).
      Затем решил по изучать ДРФ, и чтобы нормально проекты на ДРФ выглядели, посмотрел на vue.js, чтобы не в постмэне запросы делать, а из более-менее приемлемого фронта (правда без красивой верстки). Сделал пару туториалов в ДРФ в том числе с использованием редис и селери. Затем переписал на ДРФ+Вью свою задачу из экзаменов по 1С.
      После этого приступил к ФастАпи. Его пару месяцев потыкал, поделал по видео с этого канала, потом по введению из документации прошелся и сделал.
      В промежутках между фреймворками потрогал написание телеграм-ботов.
      А затем понял. что работодатели не очень реагируют на мои отклики с цифрой 0 в графе опыт в резюме и решил вернуться к 1С, где в графе опыт могу писать больше 10 лет.
      Но не жалею, что на питон потратил время, т.к. добавило понимания в работе с API, и в задачах по взаимодействию 1С с какими-то ресурсами, я могу сам сделать свое API, которое бы выдавало данные в нужном формате, а в 1С описывать обработку этой информации до того. как клиент предоставит мне свой доступ.

    • @Фома-ж7я
      @Фома-ж7я Месяц назад

      странная история, второй раз мой ответ пропал.

  • @dien0000
    @dien0000 Месяц назад +3

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

  • @МаксимНовиков-ь4ц
    @МаксимНовиков-ь4ц 17 дней назад

    Теперь нужно видео обзор по Dbeaver. Расскажт плиз как запускал скрипты?

  • @CrazyElf1971
    @CrazyElf1971 Месяц назад

    Отличное видео, наконец-то у меня всё сложилось. Но вообще нужно упомянуть, что в PostgreSQL уровень изоляции read uncommited отсутствует от слова совсем. Потому что у него другой способ работы движка, у него вместо блокировок версионирование и увидеть незакоммиченные данные там невозможно - они живут в отдельной версии, которую до коммита никто не видит, просто нет никакого механизма их увидеть из другой сессии.

  • @user-buser_eto_ja
    @user-buser_eto_ja Месяц назад +1

    Хорошее доступное объяснение. Спасибо!
    P.S А D Durability я пропустил? Долговечность иными словами?

  • @sower_tg
    @sower_tg Месяц назад +1

    Ладно. Убедил, подписываюсь

  • @couragic
    @couragic Месяц назад

    Теперь надо про BASE

  • @АртемМирошниченко-л2н

    не хватило расшифровки каждой буквы. Я люблю более наглядно получать и закреплять информацию. А так клёво. Спасибо

  • @whatyoumean1498
    @whatyoumean1498 Месяц назад

    Спасибо за видео, а что за программа на которой ты показывал транзакции?

  • @renyazh
    @renyazh Месяц назад +1

    Отличное видео! Про depends будет ролик?
    P.s. не слушай комментарии, что не надо выпускать ролики про собесы. Мне и я думаю многим очень интересно слушать такие важные вещи простым и главное - правильным языком. Часто очень некоторые люди при объяснении упускают какую-то мелкую деталь из-за которой потом складывается неправильное представление о тех или иных вещах.

  • @Holstinin007
    @Holstinin007 Месяц назад

    огонь

  • @Claertyy
    @Claertyy Месяц назад

    Разве Repeatable read решает проблему фантомного чтения? Он решает проблему неповторяющегося чтения в рамках одной транзакции, которая возникает на уровне Read Committed. Проблема неповторяющегося чтения здесь даже не была упомянута, а проблема фантомного чтения решается на уровне Serializable.

    • @DimaSDota
      @DimaSDota 22 дня назад

      Вот я тоже это заметил, все верно, Repeatable Read (Повторяемое чтение) даже исходя из названия, защищает от неповторяемого чтения. Но остается проблема фантомного чтения. Которая в свою очередь решается на уровне Serializable.
      Но есть жирное НО. В PostgreSQL уровень изоляции Repeatable Read предотвращает фантомное чтение (Phantom Read), что отличает его от некоторых других СУБД.

  • @ol_suh
    @ol_suh Месяц назад

    13 Никто не восходил на небо, как только сшедший с небес Сын Человеческий, сущий на небесах.
    14 И как Моисей вознес змию в пустыне, так должно вознесену быть Сыну Человеческому,
    15 дабы всякий, верующий в Него, не погиб, но имел жизнь вечную.
    16 Ибо так возлюбил Бог мир, что отдал Сына Своего Единородного, дабы всякий верующий в Него, не погиб, но имел жизнь вечную.
    17 Ибо не послал Бог Сына Своего в мир, чтобы судить мир, но чтобы мир спасен был чрез Него.
    18 Верующий в Него не судится, а неверующий уже осужден, потому что не уверовал во имя Единородного Сына Божия.
    19 Суд же состоит в том, что свет пришел в мир; но люди более возлюбили тьму, нежели свет, потому что дела их были злы;
    20 ибо всякий, делающий злое, ненавидит свет и не идет к свету, чтобы не обличились дела его, потому что они злы,
    21 а поступающий по правде идет к свету, дабы явны были дела его, потому что они в Боге соделаны.
    (Иоан.3:13-21)

  • @yevheniipolovinchuk5326
    @yevheniipolovinchuk5326 Месяц назад

    ОЧень хочу детальное видео по индексации таблиц

  • @thechrom007
    @thechrom007 Месяц назад +1

    Какая-то странная обработка звука... наверное даже через чур обработано 🙄
    Иногда даже такое чувство что мне кто-то плямкает в уши 🤔

  • @АнтонБ-х9у
    @АнтонБ-х9у Месяц назад

    Консистентность - согласованность.

  • @alexanderten9540
    @alexanderten9540 Месяц назад

    Соблюдайте гигиену кода...и кода и скрипта!

  • @itprogsby2671
    @itprogsby2671 13 дней назад

    Атомы делятся

  • @АвгустинаЦентровская

    удивительно, но нигде никогда ни разу и никто.

  • @legrontik
    @legrontik Месяц назад

    Эм… без таблицы с транзакциями балансы никто не меняет

  • @hsqlk
    @hsqlk Месяц назад +1

    Только настоящая транзакция не существует в СУБД

  • @grayboy
    @grayboy Месяц назад +1

    атом делим:)

    • @CrazyElf1971
      @CrazyElf1971 Месяц назад

      Но когда его так назвали, считалось, что нет ))

    • @grayboy
      @grayboy Месяц назад

      @@CrazyElf1971 деление атома открыли раньше, чем создали первый компьютер

    • @NikolayShangutov
      @NikolayShangutov Месяц назад +1

      Не душни😄

    • @CrazyElf1971
      @CrazyElf1971 Месяц назад

      @@grayboy А само понятие атома восходит к древним грекам, до компьютеров было совсем далеко )

    • @ИмяФамилия-э4ф7в
      @ИмяФамилия-э4ф7в Месяц назад

      Слово с греческого переводится "неделимый". Т.е., по факту, физические атомы переименовывать нужно. А тут все норм.

  • @Nixguy
    @Nixguy Месяц назад

    Зачем же отнимать хлеб у DBA? Эти специалисты хорошо управляются с базами данных.
    А разработчикам в 99% случаев возможностей ORM за глаза, а оставшийся 1% можно и DBA отдать.

  • @АнтонБ-х9у
    @АнтонБ-х9у Месяц назад +1

    Консистентность неверно обяснили. В блокноте не обьяснишь, нужно понимать как работет код на низком уровне.
    Вобщем не пройдешь собеседование 😊

    • @ИмяФамилия-э4ф7в
      @ИмяФамилия-э4ф7в Месяц назад

      Что тебе на низком уровне? Консистентность - свойство транзакции оставлять после себя базу данных в состоянии, когда все записи удовлетворяют всем ограничениям и требованиям к таблицам. Если какой-либо запрос в транзакции приводит к нарушению консистентность БД, то вся транзакция отменяется. Вопросы?

  • @ASFNFSW
    @ASFNFSW Месяц назад

    хватит видосы про собесы. С нынешними hr-ами про работу можно забыть. Расскажи уже, как хантить заказы backend-разработчикам.