2010-04-09 12 views
8

Pracuję nad projektem obejmującym dużą ilość danych z pysznej strony internetowej. Dostępne dane to "Date, UserId, Url, Tags" (dla każdej zakładki).Projekt bazy danych dla bardzo dużej ilości danych

I znormalizowałem moją bazę danych do 3NF, a ze względu na charakter zapytań, które chcieliśmy zastosować w połączeniu, zszedłem do 6 tabel ... Wygląda jednak dobrze, teraz, gdy duża ilość dane znajdują się w bazie danych, większość zapytań musi przyłączyć się do co najmniej 2 tabel razem, aby uzyskać odpowiedź, czasami 3 lub 4. Na początku nie mieliśmy żadnych problemów z wydajnością, ponieważ do testów nie dodaliśmy zbyt wiele dane do bazy danych. Teraz, gdy mamy dużo danych, proste dołączanie do bardzo dużych tabel zajmuje dużo czasu, a dla naszego projektu, który musi być w czasie rzeczywistym, jest to katastrofa.

Zastanawiam się, jak duże firmy rozwiązują te problemy. Wygląda na to, że normalizowanie tabel zwiększa złożoność, ale jak duża firma obsługuje duże ilości danych w swoich bazach danych, czy nie używają normalizacji?

Dzięki.

Odpowiedz

13

Ponieważ poprosiłeś o tym, jak duże firmy (ogólnie) zbliża się następująco:

Zwykle mają DBA (administratora bazy danych), który żyje i oddycha bazę Spółka korzysta.

Oznacza to, że mają osoby, które wiedzą wszystko od optymalnego projektowania tabel, profilowania i dostosowywania zapytań/indeksów/OS/serwera do wiedzy, jaka wersja oprogramowania układowego kontrolera RAID może powodować problemy dla bazy danych.

Nie mówisz dużo o tym, jaki rodzaj strojenia wykonałeś, np.

  • Czy korzystasz z tabel MyISAM lub InnoDB? Ich wydajność (i nie najmniej ich funkcje) jest radykalnie różna dla różnych obciążeń.
  • Czy tabele są odpowiednio indeksowane zgodnie z uruchomionymi zapytaniami?
  • uruchom funkcję WYJAŚNIJ we wszystkich zapytaniach - co pomoże Ci zidentyfikować klucze, które można dodać/usunąć, a następnie wybrać odpowiednie klucze, porównać zapytania (SQL pozostawia wiele sposobów na wykonanie tych samych czynności)
  • dostroiłeś pamięć podręczną zapytań? W przypadku niektórych obciążeń pamięć podręczna zapytań (domyślnie włączona) może powodować znaczne spowolnienie.
  • Ile pamięci ma twoje pudełko i czy jest ona dostrojona, aby to wykorzystać?
  • Czy korzystasz z systemu plików i konfiguracji raidu dostosowanego do bazy danych?
  • Czasami potrzebna jest niewielka de-normalizacja.
  • Różne produkty bazodanowe będą miały różne charasteryzmy, MySQL może być niesamowicie szybki dla niektórych worlkoads i wolny dla innych.
+3

Dziękuję za odpowiedź. Szczerze mówiąc, nie myślałem o rzeczach, o których tutaj wspomniałeś. Teraz zdałem sobie sprawę, że bardzo dużo zignorowałem podczas projektowania bazy danych. Baza danych wykorzystuje MyISAM. Przeczytam o rzeczach, o których wspomniałeś. wielkie dzięki – Hossein

Powiązane problemy