Skocz do zawartości
Gość Kamikadze

Duże bazy mysql

Polecane posty

Gość Kamikadze

Ma ktoś może doświadczenie jak zachwowują się duże bazy np. po 10-20 000 000 rekordów? A raczej tabele bo w jednej tabeli tyle rekordów będzie prawdopodobnie. Duże są straty na przeszukiwaniu takich baz?

 

 

Zastanawiam się czy opłaca się pchać niektóre rzeczy do bazy danych i zamiast do plików lub jakoś jeszcze podzielić bazę na kilka tabel.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wszystko zależy od modelu danych, ilości dostępnej pamięci i jakie zapytania będziesz stosował. Nie da się prosto odpowiedzieć na to pytanie.

 

Najlepiej sprawdź doświadczalnie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Jest masa zależności, mam na serwerach bazy z tabelami po 20 mln rekordów i działają ;)

 

Jeżeli chcesz się bawić większymi ilościami danych, a projekt będzie się rozrastał to pomyśl o Apache Hadoop.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Wszystko zależy od modelu danych, ilości dostępnej pamięci i jakie zapytania będziesz stosował. Nie da się prosto odpowiedzieć na to pytanie.

 

Najlepiej sprawdź doświadczalnie.

 

No można powiedzieć że przygotowuję środowisko testowe i tabela ma na razie 4mln rekordów i się stale zwiększa. Zastanawiałem się czy ktoś trzyma przy mniejszych serwerach takie bazy i czy to w ogóle rusza się z miejsca :)

 

 

Sprzęt można powiedzieć że niska półka - prawie podłoga...

 

 

20mln rekordów to już ładna baza.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Klient ma na serwerze tabelke, która ma 114 449 234 rekodów :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Będzie śmigać.

 

Wszystko zależy od sprzętu, konfiguracji serwera bazodanowego i po części od samej architektury bazy. Tabele zawierające 20-30 kk rekordów to już jest "coś", ale nie na tyle wielkiego, żeby aż tak się przejmować, chyba, że sprzęt faktycznie "piwniczny".

 

Swoją drogą, jaka baza? Postgres, MySQL czy coś innego?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Klient ma na serwerze tabelke, która ma 114 449 234 rekodów :)

 

Miłosz sam na mysql mam tabelke 84 345 754. Jej rozmiar to 34GB i jak na razie całość daje radę. Też mysql, ale myślę czy postgresql nie byłby lepszy.

Edytowano przez HaPe (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No ta ma 42 GB. Może by był lepszy, a może nie. Głównie to jest widzimisię programisty, który robi aplikacje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Będzie śmigać.

 

Wszystko zależy od sprzętu, konfiguracji serwera bazodanowego i po części od samej architektury bazy. Tabele zawierające 20-30 kk rekordów to już jest "coś", ale nie na tyle wielkiego, żeby aż tak się przejmować, chyba, że sprzęt faktycznie "piwniczny".

 

Swoją drogą, jaka baza? Postgres, MySQL czy coś innego?

 

MySQL :)

 

Ogólnie dzięki za info.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale to zależy od tak wielu czynników. Najważniejsze chyba czy będziesz dane trzymał czy analizował, sortował, zmieniał.

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No i oprócz tego od tego jak sformułowane będą same zapytania.

Jeżeli będą odpowiednio doprecyzowane i zoptymalizowane to powinno działać. Ale zapuść tam jakiegoś ogólnego LIKE na jakimś ciągu, to baza może dostać sporej zadyszki.

 

Jeżeli upchniesz dużo danych do plików, to ich przeszukiwanie również będzie obciążało system. Będziesz musiał opracować jakieś klasy do wyszukiwania, co będzie wolniejsze niż w bazie.

 

Dodatkowo warto zastanowić się nad strukturą bazy, aby jej przeszukiwanie było optymalne. W zależności od charakteru zapytań, więcej tabel i relacje między nimi sprawdzi się lepiej, niż jedna kolosalna tabela, zwłaszcza jeżeli wyciągasz tylko kilka kolumn.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Ale to zależy od tak wielu czynników. Najważniejsze chyba czy będziesz dane trzymał czy analizował, sortował, zmieniał.

 

 

No właśnie myślałem nad sortowaniem i "używaniem" ich. Tylko to jeszcze nie jest doprecyzowane bo dopiero można powiedzieć projekt jest w fazie wczesnych przygotowań a sam chciałem się dowiedzieć czy opłaca się pchać taką ilość danych do mysql.

 

No i oprócz tego od tego jak sformułowane będą same zapytania.

Jeżeli będą odpowiednio doprecyzowane i zoptymalizowane to powinno działać. Ale zapuść tam jakiegoś ogólnego LIKE na jakimś ciągu, to baza może dostać sporej zadyszki.

 

Jeżeli upchniesz dużo danych do plików, to ich przeszukiwanie również będzie obciążało system. Będziesz musiał opracować jakieś klasy do wyszukiwania, co będzie wolniejsze niż w bazie.

 

Dodatkowo warto zastanowić się nad strukturą bazy, aby jej przeszukiwanie było optymalne. W zależności od charakteru zapytań, więcej tabel i relacje między nimi sprawdzi się lepiej, niż jedna kolosalna tabela, zwłaszcza jeżeli wyciągasz tylko kilka kolumn.

 

To także jest w trakcie pracy bo na taką ilość danych co ja chcę upchnąć to naprawdę muszę dobrze pogłówkować jak to upchnąć żeby działało :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@Kamikadze - popatrz sobię na NoSQL'e. Ja mam np. bazę 79GB w MongoDB. Dokumentów w sumie jest 617mln i na jakimś słabym serwerze to teraz stoi (2x2.2, dyski HDD w RAID1) i daje to radę. RAMu mam "aż" 4GB, więc dane przed insertem dzielę na paczki po ~800-1200 dokumentów i zrzucam z RAMu do bazy w kolejce (paczki kolejkuję, do tej pory mam tak, że w kolejce jest cały czas 1 paczka, więc nic się nie zapycha). Dane to odczyty zbierane z munin-node z paru serwerków (400 mln to dane wstawione skryptem wyliczone na podstawie aktualnych odczytów). Instalacja jest testowa na udostępnionym mi dedyku.

 

Wyszukiwanie starych danych troszkę trwa, ale wykresy danych wstawionych w ciągu ostatnich 24h dostaję w parę sekund, więc problemu nie ma. Za parę dni muszę się z tego dedyka wynieść niestety.

 

MySQL może da radę, ale po co?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@Kamikadze - popatrz sobię na NoSQL'e. Ja mam np. bazę 79GB w MongoDB. Dokumentów w sumie jest 617mln

 

A w jaki sposób replikujesz tę bazę i robisz backupy?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@regdos - gdyby to nie była instalacja testowa dla klienta tylko produkcyjna to tak jak @up napisał - Replica Set, czyli wbudowana kopia w MongoDB. Na serwerze dodatkowo jest RAID, także podstawowa awaria 1 dysku jest niegroźna.

 

W normalnym środowisku zamiast takiego dedyka wziąłbym sobie 2-3 chmurki z shardingiem, bo teraz testujemy tylko instalację takiej bazy zbiorczej, a końcowo ma ona przeysłać (i podawać na stronie) wykresy z wielu danych i ich analizy, więc trzeba do tego więcej mocy. Do takich zadań chmurka jest według mnie idealna, bo nawet jeśli baza zmieści się na 1 to robisz 2 chmurki w Replica Set i na 1 jest serwer www i zapisane są wykresy,a druga chmurka liczy dane i podaje na pierwszą.

 

@maniack - nie zakładam z góry, że nie da rady. Napisałem, że nawet jeśli da radę to do tego typu ilości danych są lepsze bazy - choćby PostgreSQL. Oczywiście jeżeli potrzebne są relacje.

Edytowano przez Misiek08 (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeżeli przyrost danych da się oszacować, to dedyki będą tańszym i lepszym rozwiązaniem niż chmurka

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Wiecie w sumie projekt w fazie pomysłu i tworzę bazę aby przetestować to na serwerze testowym, to trochę potrwa zanim sam zdecyduję czy tego nie rozdzielić jakoś, przerobić danych - będę szukał złotego środka :)

 

Na razie używam MySQL i działa dobrze i nie widzę potrzeby zmieniać czegoś co daje radę :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość AceDude

Hmm... ja z kolei mam dziwne doświadczenia z Postgre - mam na Heroku tabelę z kilkunastoma milionami rekordów która jest w relacji jeden do wielu z tabelą o podobnej ilości rekordów. Uruchomienie DELETE z tej pierwszej jest praktycznie niewykonalne pomimo indeksów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niewykonalne ? tzn co się się dzieje, kończy się czas zapytania ? Miałem coś podobnego, ale to właśnie indeksy były skopane. Aha i żeby było w temacie, mam tabele w bazie monitoringu na postgresie które mają po 80 mln krotek, pewnie teraz już więcej. Oczywiście tabele są partycjonowane z automatu.

 

Edytowano przez micrus (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

U nas w 95% projektów używamy Postgresa.

Sprawdza nam się nawet w projektach o sporej skali. Mogę polecić.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Tu jeszcze dochodzi kwestia budowy projektu, sprzętu i jego konfiguracji ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×