BAZY DANYCH

Jak zmigrować dane pomiędzy tabelami utrzymując zero downtime?

Załóżmy, że potrzebujemy przykładowo rozdzielić jedną tabelę na dwie mniejsze. Tylko, że nasz system musi cały czas działać (zero downtime). Problem Tabela z polami (A,B,C,D). A chcemy mieć dwie z polami (A,B) oraz (C,D). Rozwiązanie 1. Tworzysz dodatkowe table (A,B) oraz (C,D). Stare pozostają na miejscu2. Adaptujesz tak kod, aby od teraz zapisywał zarówno do …

Jak zmigrować dane pomiędzy tabelami utrzymując zero downtime? Czytaj dalej »

ACID – o transakcjach w relacyjnych bazach danych

ACID – jest to akronim od angielskich słów: Atomicity (atomowość), Consisteny (spójność), Isolation (izolacja) oraz Durability (trwałość). Cztery człony akronimu mówią o zasadach gwarantujących poprawne przetwarzanie transakcji. Hipotetyczna sytuacja w aplikacji (tabela oraz transakcja) Atomowość (Atomicy) Atomicity (atomowość) – mówi o tym, że albo wykona się każdy element transakcji, albo żaden. Przykładowo gdyby w powyższym …

ACID – o transakcjach w relacyjnych bazach danych Czytaj dalej »

Serializable

Jest to najbardziej restrykcyjny poziom izolacji – ma za zadanie zabezpieczać przed wszystkimi anomaliami. Niestety okazuje się, że bazy Oracle i SQL Server (MVCC) wyłamują się jeśli chodzi o anomalię Zniekształconego zapisu (Write skew). Anomalia SQL Server SQL Server (MVCC) PostgreSQL MySQL Oracle Brudny odczyt (Dirty read) Nie występuje Nie występuje Nie występuje Nie występuje …

Serializable Czytaj dalej »

MVCC

MVCC to skrót od Multiversion Concurrency Control, czyli tłumacząc swobodnie na język polski – oparte o wersje zarządzanie współbieżnością. A mówiąc prościej, jest to sposób na to jak za pomocą wersji (przypisywanych do rekordów) zarządzać dostępem do/modyfikacją danych. MVCC rozwiązuje problem dostępu do zasobów, który pojawia się przy zastosowaniu blokad. Warto też wspomnieć, że zastosowanie …

MVCC Czytaj dalej »

Repeatable Read

Jest to poziom izolacji zabezpieczający przed Brudnym odczytem (Dirty read), Brudnym zapisem (Dirty write), Zniekształconym odczytem(Read skew) oraz (jak sama nazwa wskazuje) przed Niepowtarzalnym odczytem (Non-Repeatable Read). Dodatkowo broni on także przed innymi anomaliami, lecz tutaj występują różnice pomiędzy silnikami baz danych (Oracle nie wspiera tego poziomu izolacji): Anomalia SQL Server PostgreSQL MySQL Brudny odczyt …

Repeatable Read Czytaj dalej »

Read Committed

Jest to jeden z najczęściej stosowanych poziomów izolacji (i w większości baz danych jest to domyślny poziom izolacji). Zabezpiecza on przed takimi anomaliami jak Brudny odczyt (Dirty read) oraz Brudny zapis (Dirty write). Pozostałe anomalie mogą wystąpić. Anomalia SQL Server PostgreSQL MySQL Oracle Brudny odczyt (Dirty read) Nie występuje Nie występuje Nie występuje Nie występuje …

Read Committed Czytaj dalej »

Read Uncommitted

Jest to poziom izolacji, który zabezpiecza jedynie przed anomalią typu Brudny zapis (Dirty write). Wszystkie inne anomalie mogą wystąpić przy tym poziomie izolacji. Pozwala on na odczyt danych jeszcze nie zatwierdzonych (commit) przez inne transakcje. Niektóre bazy danych nie wspierają tego poziomu izolacji (na przykład Oracle czy PostgreSQL). Anomalia SQL Server PostgreSQL MySQL Brudny odczyt …

Read Uncommitted Czytaj dalej »

Anomalie integralności (Phenomena)

W sytuacji gdy chcemy zapewnić najwyższy poziom izolacji transakcji często kończy się to zbyt długim czasem jej obsługi. Rozwiązaniem często jest tutaj zmniejszenie poziomu izolacji. Aczkolwiek w takim wypadku trzeba się liczyć z różnymi anomaliami, które mogą wystąpić. Wyróżnić można następujące anomalie: Brudny odczyt (Dirty read)Brudny zapis (Drity write)Niepowtarzalny odczyt (Non-repeatable read)Odczyt widmo (Phantom read)Zniekształcony …

Anomalie integralności (Phenomena) Czytaj dalej »