Skocz do zawartości

Jak zaprojektować baze?


MMP

Jaką wybrać baze?  

19 użytkowników zagłosowało

  1. 1. Jaką wybrać baze?

    • MySQL
      13
    • PgSQL
      1
    • Inna
      1


Rekomendowane odpowiedzi

Stanąłem przed problemy optymalizacji bazy danych.

Jej wielkość sięgła już prawie 2 GB

Baza składa się z dwóch tabel `Content`( siteURI, siteContent ) oraz `Site`( siteURI, siteAddDate, siteIndexedDate ).

Teraz tabela `Content` ma 1.8GB( 100k rekordów ) a `Site` 20mb( 130k rekordów ). Noi operacje są bardzo wolno chodź są nałożone indexy na siteURI obu tabel.

Zastanawiam się czy trza zmienić typ tabel ( teraz MyISAM ) albo zmienić baze danych. Tylko na jaką? Bo nie znam języka zapytań innych baz a przydało by sie jak najbardziej zoptymalizować baze pod skrypt.

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 37
  • Dodano
  • Ostatniej odpowiedzi

moze rozbic tabele content na dwie i content trzymac w osobnej.

zalezy od tego co robisz z ta baza, jak wykorzystujesz dane, jakie sa operacje.

moze upgrade serwera ? :brawa:

jesli inna baze to oracle polecam.

Rems Ridgid dla profesjonalistów

malarze malarstwo - biografie artystów

projekty graficzne - dla klientów Twojej firmy

Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak napisał przedpiszca - zależy co robisz z tymi danymi.

Baza jest prosta, więc przesiadka na postgre raczej nie zwiększy wydajności.

Miało by to sens, jeśli chciałbyś używać bardziej zaawansowanych operacji (transakcje) czy też

np. triggerów.

Jeśli masz to na jakimś własnym lokalnym serwerze, to również polecam Oracle. Można na tym zrobić bardzo fajny system rozproszony, jeśli pojedyncza maszyna przestanie się wyrabiać z obsługą bazy.

Odnośnik do komentarza
Udostępnij na innych stronach

Albo zmienić podejście do bazy.

Content wsadzić do plików a w bazie trzymac tylko wskaźniki.

Jeżeli musisz wyszukiwać po contencie - to może ogranicz wyszukiwanie - do jkiegoś prostego - wtedy baza bedzie zawierała jedynie idkesy i słowniki do wyszkukiwania z pewnością mniejsze niż cała zawartość contentu

Odnośnik do komentarza
Udostępnij na innych stronach

500k1hk.th.jpg50k6qp.th.jpg

Magazyn PHP solutions 3/2005 przeprowadził taki test baz danych dużego forum 1) 500 tyś wiadomości / 2)kopia pierwszej zmniejszona o 90% Wynika z niego, że PostgreSQL jest nieznacznie wydajniejsza od MySQL.

Jeśli chciał byś zmienić tabele na InnoBD musisz się liczyć z ogromnym wzrostem bazy danych i raczej spadkiem jej wydajności. Obawiam się, że w wypadku tak dużej bazy 2GB jej optymalizacja nic nie da i trzeba myśleć o innych rozwiązaniach - system rozproszony może właśnie przejście na Oracle.

Co do języka zapytań, to składnia języka SQL jest prawie taka sama dla wszystkich baz danych :brawa:

https://helion.pl/ksiazki/sqlpod.htm

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Może właśnie rozbicie tabeli content na kilka mniejszych i przerobienie tabeli Site jest rozwiązaniem.

100k rekordów to nie jest dużo - problem stanowi wielkość bazy, co prawda jej wielkość nie zmaleje ale nawet nieznacznie wzrośnie jednak będzie to rozłożone na kilka tabeli. Wtedy tabela Site musiała by mieć dodatkową kolumnę zawierającą informacje gdzie - w jakiej tabeli znajdują się dane Content...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

jesli inna baze to oracle polecam.

Ja jestem licealistą więc mnie nie stać na taką baze :winko:

moze rozbic tabele content na dwie i content trzymac w osobnej.

Tabela ciągle sie rozrasta, więc żeby wykonywać automatycznie operacje powielania tabel zmniejszyło by to wydajność skryptu

Miało by to sens, jeśli chciałbyś używać bardziej zaawansowanych operacji (transakcje) czy też

np. triggerów.

Możliwe że można by coś wykorzystać by usprawnić skrypt, ale jak pisałem nie znam składni i mechanizmy jakie posiadaja te bazy.

Content wsadzić do plików a w bazie trzymac tylko wskaźniki.

O to by był pomysł bo te dane wykorzystuje tylko dwa razy. Dodając i analizując pojedyńcze wiersze.

Chyba przejde jednak na te pliki bo to miało by sens.

Tylko czy linux nie będzie sie kopać przy > 100k plikach i laczej wielkosci 2gb?

W tej chwili baza ma 2,1 gb :brawa:

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Tabela ciągle sie rozrasta, więc żeby wykonywać automatycznie operacje powielania tabel zmniejszyło by to wydajność skryptu
Nie trzeba robić jakiegoś automatycznego powielanie tylko rozbijasz dane tabeli content np: na 5 tabel do tego dajesz 6 gdzie są zapisywane już nowe dane content... ta sie zapełni dodajesz kolejną itd. Tak jak napisałem wymaga to przerobienia bazy...

Jedna tebela Site z wskaznikami do wielu tabel Content

Site

|-Content1

|-Content2

|-Content3

|-Content4

|-Content5

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Nie będe zerkał do skryptu co 8 godzin by sprawdzić czy aby tabela sie nie przepełniła.

Teraz zauważyłem pewien problem z plikami. Jak ja mam je przenieść na pliki skoro zwykły select wykonuje sie strasznie długo? Chyba będe musiał przejść na samą konsole i zostawić tak laptopa włączonego przez 24 h :brawa:

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Nie będe zerkał do skryptu co 8 godzin by sprawdzić czy aby tabela sie nie przepełniła.
Takim tokiem rozumowaia daleko nie zajdziesz :brawa: -> Powodzenia

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

A co za problem napisać kod php który będzie tworzył następną tabelę i w razie potrzeby i do niej zapisywał dane ? Zresztą tak czy inaczej musisz przyjąć, że ten system nie będzie a właściwie będzie jak balon... Będzie się powiększał aż w pewnym momencie pęknie.

Bez inwestycji w stricte serwer bazodanowy do tego na Oracje Twój projekt nie ma szans na przetrwanie skoro planujesz rozrosty bazy do n wielkości ... Drugiego google w "domu" nie zrobisz :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Na oracle przejde jak bedzie 80gb danych, wtedy może zarobie na tą baze.

A co za problem zrobić kod php który będzie tworzył następną tabelę w razie potrzeby i do niej zapisywał dane ?

Żadny ale wykonanie COUNT() na takich tabelach będzie trwało bardzo długo.

A przenoszenie jeszcze więcej. W tej chwili jeden DELETE wykonuje sie 5 sekund

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności