Co to jest „duża baza danych”?


80

Ok, głupie pytanie, wiem, ale widzę mglisty komentarz „duża baza danych” oraz mała i średnia i zastanawiam się, co to oznacza. Czy ktoś może zdefiniować, czym dla nas, neofitów SQL, jest mała, średnia i duża baza danych?


Przepraszamy, nie udało ci się, nie dostaniesz +5 za głupie pytanie ;-).
Toon Krijthe

Oznaczę to jako subiektywne, daj mi znać, jeśli się nie zgadzasz.
James McMahon,

Nawiasem mówiąc, ciekawe pytanie, właśnie o tym myślałem.
James McMahon

2
Tak, nauka SQL i projektowania baz danych pomogła mi spojrzeć na to z odpowiedniej perspektywy.
Randin,

Włamałem się do dużej bazy danych. Podoba mi się odpowiedź @dkretz, która przedstawia ją w kategoriach wydajności i kodowania.
Milo LaMar

Odpowiedzi:


106

Nie ma progu, w którym mała baza danych staje się średnią lub średnia baza danych staje się duża. Generalnie, kiedy słyszę te terminy, myślę o poszczególnych rzędach wielkości w kategoriach całkowitej ilości przechowywanych rekordów.

  • Mały: 10 5 lub mniej rekordów.
  • Medium: 10 5 do 10 7 rekordów.
  • Duży: 10 7 do 10 9 rekordów.
  • Bardzo duża: 10 9 lub więcej rekordów.

Jak zasugerował poster dkretz , można również pomyśleć o tym w kategoriach właściwości każdego rodzaju bazy danych. Kategoryzując to w ten sposób, powiedziałbym:

  • Mały: wydajność nie jest problemem. Twoje zapytania działają poprawnie bez dokonywania żadnych specjalnych optymalizacji. Podczas korzystania z ulepszeń z pierwszej linii, takich jak indeksy, widać tylko marginalną różnicę w wydajności.

  • Średni: Twoja baza danych prawdopodobnie ma co najmniej jeden personel przydzielony w niepełnym wymiarze godzin do jej utrzymania i opieki. Osoby te zwracają uwagę na stan bazy danych; ich głównym obowiązkiem administracyjnym jest zapobieganie niedopuszczalnym problemom z wydajnością i minimalizowanie przestojów.

  • Duży: prawdopodobnie ma wyznaczonego członka personelu, którego zadaniem jest praca w bazie danych i poprawa wydajności, a także upewnienie się, że zmiany aplikacji nie spowodują uszkodzenia schematu przez cały okres istnienia bazy danych. Metryki dotyczące kondycji i stanu bazy danych są ściśle monitorowane. Do zrozumienia i przeprowadzenia optymalizacji wymagana jest znaczna wiedza.

  • Bardzo duża: baza danych przechowuje ogromne ilości informacji, które muszą być łatwo dostępne. Optymalizacja wydajności jest absolutnie wymagana, aby wycisnąć z każdego zapytania do ostatniej uncji szybkość, a bez niej baza danych byłaby znacznie mniej użyteczna lub wręcz niemożliwa do użycia. Baza danych może wykorzystywać wyrafinowane lub innowacyjne techniki replikacji lub klastrów, przesuwając granice obecnej technologii.

Zauważ, że są one całkowicie subiektywne i że ktoś może mieć całkowicie uzasadnioną alternatywną definicję „dużego”.


Znakomita odpowiedź, prawie dokładnie to, co powiedziałbym, co jest interesujące, biorąc pod uwagę subiektywność i ruchome słupki bramki.
Peter wygrał

Doskonała odpowiedź, John. Bardzo zwięzłe. Próbowałem wyjaśnić to samo, ale poszedłem inną i bardziej złożoną trasą: S
vmarquez

Podoba mi się druga część odpowiedzi, ale pierwsza część, odnosząca się do liczby rekordów, jest trochę myląca. Możesz mieć naprawdę prostą tabelę z mnóstwem rekordów lub małą liczbą rekordów, ale bardzo skomplikowaną organizację tabel.
Outlaw Programmer

Właściwie powiedziałbym, że każdy z twoich dwóch przykładów można zakwalifikować jako duży. Sugerujesz, że ogromny słownik kluczy właściwości składający się z pojedynczej tabeli z 50 milionami rekordów jest w rzeczywistości „małą bazą danych”?
John Feminella,

Powiedziałbym, że uzasadnione jest również uznanie odwrotności za małą. I odwrotnie, rozważ niezwykle złożoną strukturę schematu składającą się z 10 000 tabel, która zawiera łącznie tylko 5 wierszy. Czy to jest „duża baza danych”?
John Feminella,

27

Jednym ze sposobów ustalenia tego jest obserwacja zapytań testowych.

Mała baza danych to taka, w której indeksy nie mają znaczenia.

Średnia baza danych to taka, w której zapytania trwają dłużej niż jedną sekundę, jeśli nie masz odpowiedniego indeksu.

Duża baza danych to taka, w której zapytania często wymagają godzin optymalizacji przy użyciu połączenia projektowania zapytań, modyfikacji indeksu i wielu cykli testowych.


@le dorfier: BTW, wierzę, że miałeś rację co do aktualizacji atomowej z max select (chociaż nadal bym tego nie zrobił)
Mitch Wheat

4

Duże bazy danych to takie, które wymuszają zaprzestanie korzystania z relacyjnych baz danych.

Innymi słowy, znormalizowana, relacyjna baza danych, w której wszystkie indeksy na świecie nie mogą pomóc w spełnieniu wymagań dotyczących czasu odpowiedzi z powodu ogromnych połączeń JOIN.

Jeśli kiedykolwiek musiałeś porzucić relacyjne bazy danych dla czegoś innego, jesteś albo kiepskim programistą baz danych, nie masz eksperta DBA lub masz bardzo dużą bazę danych.


3

„Duża baza danych” to rzeczywiście mglista koncepcja. W odpowiedziach na to pytanie są już bardzo różne odpowiedzi i opinie. Niektóre podejścia do definiowania „małych”, „średnich” i „dużych” baz danych mogą mieć więcej sensu niż inne, ALE WTEDY w pewnym momencie uważam, że każda definicja jest właściwa, prawdziwa i ważna.

Niektóre definicje mają więcej sensu niż inne, ponieważ koncentrują się na różnych aspektach ważnych dla projektowania, programowania, użytkowania, konserwacji i administrowania bazą danych, a te różne aspekty są tym, co naprawdę ma znaczenie dla użytecznej bazy danych. Tak się po prostu składa, że ​​na wszystkie te aspekty wpływa mgliste pojęcie „rozmiaru bazy danych”.

Czy to oznacza, że ​​nie ma znaczenia, czy jesteś w stanie określić, czy dana baza danych jest duża, czy nie?

Zdecydowanie nie. Oznacza to, że będziesz stosować tę koncepcję w inny sposób, oceniając różne aspekty projektowe / operacyjne / administracyjne bazy danych. Oznacza to również, że za każdym razem ta koncepcja będzie mglista.

Na przykład: na strategię indeksu bazy danych (aspekt projektu bazy danych) ma wpływ liczba rekordów dla każdej tabeli (miara „rozmiaru”), rozmiar rekordu pomnożony przez liczbę rekordów (inna miara „rozmiaru”) oraz zapytanie Vs . Współczynnik operacji tworzenia / aktualizacji / usuwania (aspekt wykorzystania bazy danych).

Czasy odpowiedzi na zapytania są lepsze, jeśli indeksy są używane w tabelach z dużą liczbą rekordów. W zależności od charakteru klauzul WHERE, ORDER BY i agregacji rekordów możesz potrzebować kilku indeksów dla niektórych tabel.

Na operacje tworzenia, aktualizowania i usuwania ma negatywny wpływ wzrost liczby indeksów w tabelach, których dotyczy problem. Więcej indeksów dla dotkniętej tabeli oznacza więcej zmian, które RDBMS musi wykonać, poświęcając więcej czasu i zasobów, aby zastosować te zmiany.

Ponadto, jeśli system RDBMS poświęca więcej czasu na zastosowanie tych zmian, wówczas blokady są utrzymywane również przez dłuższy czas, wpływając na czas odpowiedzi innych zapytań wysyłanych do systemu w tym samym czasie.

Jak więc zrównoważyć ilość i wygląd swoich indeksów? Skąd wiesz, czy potrzebujesz dodatkowego indeksu i czy dodając ten indeks nie będziesz miał dużego negatywnego wpływu na czasy odpowiedzi na zapytania? Odpowiedź: Testujesz i profilujesz swoją bazę danych pod kątem obciążenia docelowego zgodnie z wymaganiami dotyczącymi obciążenia / wydajności i analizujesz dane profilowania w celu wykrycia, czy potrzebne są dalsze optymalizacje / przeprojektowanie / indeksy.

Różne strategie indeksu są wymagane dla różnych zapytań vs. Współczynniki tworzenia / aktualizowania / usuwania operacji. Jeśli baza danych jest bardzo obciążona zapytaniami, ale rzadko jest aktualizowana, wydajność całej aplikacji będzie lepsza, jeśli dodasz każdy indeks, który skraca czas odpowiedzi na zapytania. Z drugiej strony, jeśli baza danych jest stale aktualizowana, ale nie ma dużych operacji zapytań, wydajność będzie lepsza, jeśli użyjesz mniejszej liczby indeksów.

Istnieją oczywiście inne aspekty: projekt schematu bazy danych, strategia przechowywania, projekt sieci, strategia tworzenia kopii zapasowych, procedury składowane / wyzwalacze / itp. programowanie, programowanie aplikacji (w oparciu o bazę danych) itp. Na wszystkie te aspekty wpływają w różny sposób różne koncepcje „rozmiaru” (rozmiar rekordu, liczba rekordów, rozmiar indeksu, liczba indeksów, projekt schematu, rozmiar pamięci itp.).

Chciałbym mieć więcej czasu, bo ten temat jest fascynujący. Mam nadzieję, że ten mały wpis będzie dla Ciebie punktem wyjścia w tym fascynującym świecie SQL.


3

Musisz wziąć pod uwagę zaawansowanie sprzętu dla tej definicji:

  1. Mała baza danych: zestaw roboczy mieści się w fizycznej pamięci RAM pojedynczego serwera towarowego (teraz około 16 GB)

  2. Średnia baza danych: mieści się na jednym lub kilku (poprzez RAID) dyskach twardych na jednym komputerze (teraz do kilku TB)

  3. Duża baza danych: dane muszą być rozproszone na wielu serwerach towarowych, aby pasowały (teraz do kilku PB).


2

Zgodnie z artykułem Wikipedii w bardzo dużej bazie danych

Bardzo duża baza danych lub VLDB to baza danych, która zawiera niezwykle dużą liczbę krotek (wierszy bazy danych) lub zajmuje bardzo dużą fizyczną przestrzeń dyskową w systemie plików. Najpopularniejszą definicją VLDB jest baza danych, która zajmuje więcej niż 1 terabajt lub zawiera kilka miliardów wierszy, chociaż naturalnie ta definicja zmienia się w czasie.


2

Jeśli masz bazę danych na tyle dużą, że nie możesz jej po prostu wykonać „kopii zapasowej” w celu umieszczenia w polu programistycznym lub testowym, prawdopodobnie masz „dużą bazę danych”.


0

Myślę, że coś takiego jak wikipedia lub dane ze spisu ludności w USA to „duża” baza danych. Moje osobiste listy adresów lub rzeczy do zrobienia to mała baza danych. Baza danych średniej wielkości jest czymś pośrednim.

Możesz spróbować zdefiniować rozmiary na podstawie liczby potrzebnych serwerów. Mała baza danych jest składnikiem aplikacji uruchamianej na komputerze stacjonarnym, średniej wielkości baza danych byłaby pojedynczym serwerem mysql (jakimkolwiek), a duża baza danych będzie wymagała wielu serwerów z pewnego rodzaju obsługą replikacji / przełączania awaryjnego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.