Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projekt bazy - tabela na 500mln wierszy - optymalizacjia
Forum PHP.pl > Forum > Bazy danych > Oracle
psyho
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.
emp
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.
psyho
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)
tvister
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
psyho
Dziękuje za pomoc, zobaczymy co z tego wyjdzie biggrin.gif
redman2
Ja bym zaproponował partycjonowanie tej tabeli

http://www.oracle.com/global/pl/solutions/...rtitioning.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.