🎯 Definicja
ACID to 4 przykazania bezpiecznej bazy danych. Gwarantują, że dane nie znikną, nie popsują się i nie pomylą, nawet jak wyciągniesz wtyczkę z kontaktu w połowie zapisu. A: Atomicity (Wszystko albo nic). C: Consistency (Zasady zachowane). I: Isolation (Każdy widzi swoje). D: Durability (Zapisane na wieki).
🔑 Kluczowe punkty
- Atomowość: Przelew bankowy. Odejmij X z konta A, Dodaj X do konta B. Jak padnie w połowie → Cofnij wszystko (Rollback). Pieniądze nie mogą zniknąć.
- Data Lakehouse: Nowoczesne formaty jak Delta Lake i Apache Iceberg przyniosły ACID do świata plików (S3/ADLS). Kiedyś na Data Lake’u jak zapis padł, zostawał śmieć. Teraz jest transakcja.
📚 Szczegółowe wyjaśnienie
- Isolation: Użytkownik A czyta tabelę. Użytkownik B ją kasuje. Izolacja decyduje, co widzi A. (Zazwyczaj widzi stan sprzed skasowania - Snapshot Isolation).
- Durability: Po komunikacie “Success”, dane muszą być na dysku. Nie w RAMie.
💡 Przykład zastosowania
Dwa procesy ETL piszą do tej samej tabeli w Delta Lake. Proces 1: Aktualizuje klientów z Polski. Proces 2: Aktualizuje klientów z Niemiec. Dzięki ACID (Optimistic Concurrency Control), oba zapiszą się poprawnie. Bez ACID, jeden mógłby nadpisać plik drugiego i połowa danych by zniknęła (“Last write wins”).
📌 Źródła
- Designing Data-Intensive Applications.
- Delta Lake Transaction Log docs.
👽 Brudnopis
- NoSQL (np. MongoDB, Cassandra) kiedyś odrzucały ACID dla wydajności (tzw. BASE). Dziś większość wraca do ACID (lub daje taką opcję), bo deweloperzy nie chcą martwić się o spójność danych ręcznie.