2009-08-02 8 views
6

W następstwie this question zastanawiałem się, czy nie było dobre studia porównawcze mogłem skonsultować i przekazać o zaletach korzystania z RDMBS do optymalizacji łączenia vs systematycznie denormalizowanie, aby zawsze uzyskać dostęp do pojedynczego stołu na raz.Dobra literatura na temat wydajności łączenia a systematyczna denormalizacja?

Konkretnie chcę informacje o:

  • wydajności lub normalizacji kontra denormalizacji.
  • Skalowalność systemu znormalizowanego vs zdenormalizowanego.
  • Problemy z utrzymaniem denormalizacji.
  • Problemy z konsystencją modelu z denormalizacją.

Trochę historii, aby zobaczyć, dokąd zmierzam: nasz system korzysta z wewnętrznej warstwy abstrakcji bazy danych, ale jest bardzo stary i nie obsługuje więcej niż jednej tabeli. Jako takie wszystkie złożone obiekty muszą być tworzone przy użyciu wielu zapytań na każdej z powiązanych tabel. Teraz, aby upewnić się, że system zawsze korzysta z pojedynczej tabeli, w tabelach stosuje się ciężką systematyczną denormalizację, czasami spłaszczając dwa lub trzy poziomy głębokości. Jeśli chodzi o relację n-n, wydawało się, że pracowali nad tym, starannie opracowując swój model danych, aby uniknąć takich relacji i zawsze powracają na 1-n lub n-1.

Rezultatem końcowym jest zawiłe zbyt skomplikowany system, w którym klient często skarży się na wydajność. Analizując taki szyjka nigdy nie kwestionują tych podstawowych przesłanek, na których opiera się system i zawsze szukają innego rozwiązania.

Czy coś mi umknęło? Myślę, że cały pomysł jest błędny, ale w jakiś sposób brakuje mu niepodważalnych dowodów, aby udowodnić (lub obalić to), to tutaj zwracam się do twojej zbiorowej mądrości, by wskazać mi na dobrą, dobrze przyjętą literaturę, która może przekonać drugiego człowieka w moim zespole podejście jest błędne (przekonać mnie, że jestem po prostu zbyt paranoidalny i dogmatyczny co do spójnych modeli danych).

Moim kolejnym krokiem jest zbudowanie własnego stanowiska testowego i zebranie wyników, ponieważ nie znoszę odnawiać koła, chcę wiedzieć, co już jest na ten temat.

---- EDIT Uwagi: system został po raz pierwszy zbudowany z płaskich plików bez systemu baz danych ... dopiero później został przeniesiony do bazy danych, ponieważ klient nalegał na system przy użyciu Oracle. Nie doprowadziły one do refaktoryzacji, ale po prostu dodały obsługę relacyjnych baz danych do istniejącego systemu. Wsparcie dla plików płaskich zostało później wycofane, ale wciąż czekamy na refaktory, aby wykorzystać zalety bazy danych.

Odpowiedz

2

myśl: masz wyraźną niezgodność impedancji, warstwę dostępu do danych, która umożliwia dostęp tylko do jednej tabeli? Zatrzymaj się, jest to po prostu niespójne z optymalnym wykorzystaniem relacyjnej bazy danych. Relacyjne bazy danych są zaprojektowane tak, aby naprawdę dobrze wykonywać skomplikowane zapytania. Nie ma innej opcji niż zwrócenie pojedynczej tabeli i prawdopodobnie jakiekolwiek połączenie w warstwie bausiness, po prostu nie ma sensu.

Aby uzasadnić normalizację i potencjalne koszty spójności, można odnieść się do wszystkich materiałów od firmy Codd, patrz Wikipedia article.

Przewiduję, że testy porównawcze tego rodzaju rzeczy będą niekończącą się działalnością, szczególne przypadki będą obfite. Twierdzę, że normalizacja jest "normalna", ludzie osiągają wystarczająco dobre wyniki z czystej bazy danych. Być może podejściem może być ankieta: "Jak znormalizowane są twoje dane? Skala od 0 do 4.„

+0

Zgadzam się z tobą na temat niedopasowania, wszystkie włókna mojej technicznej istoty krzyczą na mnie, jak źle to jest, ale żeby być przekonującym potrzebuję czegoś więcej niż uczuć i przeczuć. Moje doświadczenie z bazą danych jest bardziej praktyczne niż akademickie, ponieważ brakuje mi teoretycznego tła, aby złożyć wniosek. Z artykułu, o którym wspomniałeś, jest dużo materiału, przejście przez gałęzie zajmie mi trochę czasu. – Newtopian

1

O ile mi wiadomo, Dimensional Modeling to jedyna technika systematycznego denormalizacji że ma pewną teorię za nim. To jest podstawa data warehousing technik.

DM zostało zainicjowane przez Ralph Kimball w” A Dimensional Modeling Manifesto "w 1997 roku Kimball napisał także wiele książek.Księga, która wydaje się mieć najlepsze recenzje, to "The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (Second Edition)" (2002), ale jeszcze jej nie czytałem.

Nie ma wątpliwości, że denormalizacja poprawia wydajność niektórych typów zapytań, ale robi to kosztem innych zapytań. Na przykład, jeśli masz relację wiele do wielu między, powiedzmy, Produkty i zamówienia (w typowej aplikacji e-commerce), a Ty potrzebujesz, aby najszybciej wyszukiwać produkty w danym zamówieniu, możesz przechowywać dane w sposób zdenormalizowany, aby to wspierać i uzyskać pewne korzyści.

Ale to sprawia, że ​​bardziej niewygodne i nieefektywne jest odpytywanie o wszystkie Zamówienia na dany Produkt. Jeśli masz równą potrzebę tworzenia obu typów zapytań, powinieneś trzymać się znormalizowanego projektu. Wpływa to na kompromis, dający obu zapytaniom podobną wydajność, ale żaden z nich nie będzie tak szybki, jak w przypadku denormalizowanego projektu, który faworyzowałby jeden typ zapytania.

Dodatkowo, podczas przechowywania danych w sposób zdenormalizowany, należy wykonać dodatkową pracę w celu zapewnienia spójności. To znaczy. bez przypadkowego powielania i bez złamanej integralności referencyjnej. Musisz wziąć pod uwagę koszt ręcznego sprawdzania spójności.

+0

to rzeczywiście wymaga dużej ilości dodatkowej pracy i zapewnia dużą nadmiarowość, którą trzeba zarządzać, i sprawia (moim zdaniem), że cały system jest kruchy, ponieważ ma tendencję do tworzenia wielu sprzężeń w warstwie biznesowej aplikacji. które zazwyczaj powinny być pochowane w warstwie trwałości i materializacji. Chociaż wątpię, by ich oryginalny projekt i pomysły wywodziły się z modelowania wymiarowego, będę o tym czytał, to musi być pierwszy raz, kiedy słyszę o denormalizacji, która ma zastosowanie bardziej niż chirurgiczne optymalizacje. – Newtopian

Powiązane problemy