Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Projekt bazy - tabela na 500mln wierszy - optymalizacjia
psyho
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.12.2009

Ostrzeżenie: (0%)
-----


Witam,

Biorę udział w budowie systemu zbierania i przetwarzania danych pomiarowych opartego na bazie Oracle 11g.

Zastanawiam się nad zunifikowaniem większości danych pomiarowych i wrzucenie ich do jednej tabeli.
Problem w tym, że system ma przechowywać dane z 5 lat czyli szacunkowo w tej tabli znalazłoby się ok. 500 mln. rekordów.
Najczęściej wykorzystywane dane w systemie będą obejmowały okres przede wszystkim ostatnich 2-óch miesięcy (ok. 70% zapytań) oraz ostatniego rok (ok.25%).

I tutaj moje pytania:
Czy stworzenie tak dużej tabeli znacząco wpłynie na wydajność zapytań na tej tabeli w stosunku do mniejszych tabel powiedzmy z 50 mln. rekordów?
Czy lepiej podzielić table na kilka mniejszych i korzystać z operatora UNION w razie potrzeby? Ile takich mniejszych tabel zastosować?
Czy może złym pomysłem jest unifikacja i tworzenie tak dużej tabeli z punktu widzenia optymalizacji bazy?

Z góry dziękuje za udzielone odpowiedzi oraz sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
emp
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 14
Dołączył: 12.01.2006
Skąd: Gotham City

Ostrzeżenie: (0%)
-----


Trzymaj się standardowych zasad tworzenia baz danych, tabel nie kombinuj chyba że wiesz co kombinujesz, porobiłeś testy na tej konkretnej bazie i wiesz że na tym dobrze wyjdziesz.

Jedna tabela to zły pomysł jeśli będzie w niej 100 kolumn i zero logiki.
Go to the top of the page
+Quote Post
psyho
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.12.2009

Ostrzeżenie: (0%)
-----


Nie zajmuje się bezpośrednio bazą danych i nie mam za bardzo możliwości przetestowania tego rozwiązania.
Pytam ponieważ nie chce wyskoczyć jak Filip z konopi z jakimś dziwnym pomysłem.

Jeżeli chodzi o ilość kolumn szacuje że będzie to jakieś 3-4 kolumny z indeksami, 6 kolumn CHAR(1) oraz 6 kolumn NUMBER(8,2)
Go to the top of the page
+Quote Post
tvister
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


W twoim przypadku jak masz jasno określone długości i typy kolumn to radze składować wszystko w jednej tabeli.
Siła bazy leży w relacjach więc nie jest to zabieg dobry bo porównywalnie można składować dane w pliku.
Miałem trochę do czynienia z Oraclem XE i jedynym plusem tego rozwiązania że będziesz posiadał potężny zasób
narzędzi do operacji na danych.
Myślę że z czasem kiedy dostrzeżesz zależności pomiędzy to założysz relacje, ustadaryzujesz i podzielisz na tabele.
Najważniejsze jest to aby nie dopuścić do zbędnej redundancji składowanych danych.
Na początek, na podstawie tego co napisałeś, proponuje wyodrębnienie zakresu danych(2 miesięcznych) do bezpośrednich obliczeń
do oddzielnej tabeli (bufora). Tak samo rocznych. To przyśpieszy operacje.
Powodzenia
Go to the top of the page
+Quote Post
psyho
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.12.2009

Ostrzeżenie: (0%)
-----


Dziękuje za pomoc, zobaczymy co z tego wyjdzie (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
redman2
post
Post #6





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

Ostrzeżenie: (0%)
-----


Ja bym zaproponował partycjonowanie tej tabeli

http://www.oracle.com/global/pl/solutions/...rtitioning.html
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 06:39