
Сразу успокоим — мы создаем классическую реляционную СУБД с точки зрения пользователя, которая работает с данными в памяти и на диске и имеет все классические элементы СУБД. Сокол — полностью транзакционная система.
- Атомарность (А) — Сокол обеспечивает атомарность операций и гарантирует, что никакая транзакция не будет зафиксирована в системе частично.
- Согласованность (C) — транзакции в нашей СУБД, как и в других классических, фиксируют только допустимые операции, которые сохраняют согласованность данных.
- Изолированность (I) — мы поддерживаем режимы изоляции... и будем их развивать.
- Долговечность (D) — все изменения, сделанные успешно завершенными транзакциями, будут сохранены после возвращения системы в работу после, например, обесточивания или сбоев в оборудовании.
Посредством чего реализуется ACID в классических СУБД и Соколе?
Атомарность и долговечность — обеспечиваются журналом WAL. Консистентность и изолированность обеспечивается механизмами MVCC и иерархическими блокировками.
Как видим, требования ACID обеспечиваются в Соколе теми же механизмами, что и в других СУБД. Вопрос только в том, как они реализованы. С точки зрения философии Сокола, все должно быть построено на неблокирующих (lock-free) подходах. А как же упомянутые выше блокировки, спросите вы? Это же противоречит lock-free подходу. Как бы это парадоксально не звучало, но блокировки в Соколе тоже реализуются с использованием неблокирующих подходов!
Следите за новостями и задавайте вопросы в нашем телеграм-канале @soqol_dbms