Denormalizacja - Denormalization

Denormalizacja to strategia stosowana na uprzednio znormalizowanej bazie danych w celu zwiększenia wydajności. W informatyce denormalizacja to proces polegający na próbie poprawy wydajności odczytu bazy danych kosztem utraty części wydajności zapisu, poprzez dodanie nadmiarowych kopii danych lub grupowanie danych. Jest często motywowane wydajności lub skalowalności w relacyjnej oprogramowania bazy danych , która chciałaby przeprowadzić bardzo dużą liczbę odczytanych operacji. Denormalizacja różni się od formy nieznormalizowanej tym, że korzyści z denormalizacji można w pełni zrealizować tylko w modelu danych, który w przeciwnym razie jest znormalizowany.

Realizacja

Znormalizowane projekt często „Store” różne, ale podobne fragmenty informacji w oddzielnych tabelach logicznych (zwane relations). Jeśli te relacje są fizycznie przechowywane jako oddzielne pliki dyskowe, wykonanie zapytania do bazy danych, które pobiera informacje z kilku relacji ( operacja złączenia ) może być powolne. Jeśli łączy się wiele relacji, może to być zbyt powolne. Istnieją dwie strategie radzenia sobie z tym.

Obsługa DBMS

Jedną z metod jest utrzymanie znormalizowanego projektu logicznego, ale umożliwienie systemowi zarządzania bazami danych (DBMS) przechowywanie dodatkowych nadmiarowych informacji na dysku w celu optymalizacji odpowiedzi na zapytania. W takim przypadku oprogramowanie DBMS jest odpowiedzialne za zapewnienie spójności wszelkich nadmiarowych kopii. Metoda ta jest często implementowana w SQL jako widoki indeksowane ( Microsoft SQL Server ) lub widoki zmaterializowane ( Oracle , PostgreSQL ). Widok może, między innymi, reprezentować informacje w formacie wygodnym do wykonywania zapytań, a indeks zapewnia, że ​​zapytania względem widoku są zoptymalizowane fizycznie.

Wdrożenie DBA

Innym podejściem jest denormalizacja logicznego projektu danych. Zachowując ostrożność, można osiągnąć podobną poprawę w odpowiedzi na zapytania, ale kosztem — teraz projektant bazy danych jest odpowiedzialny za zapewnienie, że zdenormalizowana baza danych nie stanie się niespójna. Odbywa się to poprzez tworzenie reguł w bazie danych zwanych ograniczeniami , które określają, w jaki sposób nadmiarowe kopie informacji muszą być synchronizowane, co może łatwo uczynić procedurę denormalizacji bezcelową. To wzrost logicznej złożoności projektu bazy danych i dodatkowa złożoność dodatkowych ograniczeń sprawiają, że takie podejście jest niebezpieczne. Ponadto, ograniczenia wprowadzają kompromis , przyspieszając czyta ( SELECTSQL), podczas gdy spowolnienie pisze ( INSERT, UPDATE, i DELETE). Oznacza to, że zdenormalizowana baza danych pod dużym obciążeniem zapisu może oferować gorszą wydajność niż jej znormalizowany odpowiednik funkcjonalnie równoważny.

Denormalizacja a dane nieznormalizowane

Zdenormalizowany model danych nie jest tym samym, co model danych, który nie został znormalizowany, a denormalizacja powinna mieć miejsce dopiero po osiągnięciu zadowalającego poziomu normalizacji i po utworzeniu wszelkich wymaganych ograniczeń i/lub reguł, aby poradzić sobie z nieodłącznym anomalie w projekcie. Na przykład wszystkie relacje są w trzeciej postaci normalnej, a wszelkie relacje z zależnościami sprzężonymi i wielowartościowymi są odpowiednio obsługiwane.

Przykłady technik denormalizacji obejmują:

  • „Przechowywanie” liczby elementów „wielu” w relacji jeden-do-wielu jako atrybut relacji „jeden”
  • Dodanie atrybutów do relacji z innej relacji, z którą będzie ona połączona
  • Schematy gwiezdne , które są również znane jako modele faktów-wymiarów i zostały rozszerzone na schematy płatków śniegu
  • Gotowe podsumowania lub kostki OLAP

Wraz z ciągłym dramatycznym wzrostem wszystkich trzech rodzajów pamięci masowej, mocy obliczeniowej i przepustowości, na wszystkich poziomach, denormalizacja w bazach danych przeszła z nietypowej lub rozszerzającej się techniki do powszechnej, a nawet normy. Na przykład jedną konkretną wadą denormalizacji było po prostu to, że „zużywa więcej pamięci” (to znaczy dosłownie więcej kolumn w bazie danych). Z wyjątkiem naprawdę ogromnych systemów, ten szczególny aspekt stał się nieistotny, a wykorzystanie większej ilości pamięci nie stanowi problemu.

Zobacz też

Bibliografia