Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Konstrukcja bazy danych
evenementrf
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.04.2012

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


Witam wszystkich.
Niedawno otrzymałem do napisania aplikacje, a raczej mam zaprojektować bazę danych, która będzie magazynowała dane z plików txt. Przerosło mnie to zadanie gdyż nigdy nie zajmowałem się aż tak ogromną ilością danych. Ale po kolei....
Dane wyglądają następująco:
tabela demoraficzna z pacjentami, każdy pacjent ma przydzielone badania, moga to być badania robione w odstępach czasowych np co ok 5 min, pojedyńcze badanie zwraca plik txt, który ma np 10 kolumn i 20 000 wierszy, są to liczby int badz double. Ja ten plik (a konkretnie dane z tego pliku) mam uploadować do bazy, po to żeby mozna było podglądac na szybko wyniki danego pacjenta.

Szczerze to nie mam pomysłu jak to ugryźć, bo dla 10 pacjentów tych danych może być kilka milionów. Uproszczeniem jest to że każde badanie (rodzaj badania) zwraca określona liczbę kolumn.
Wiadomo jak w każdej bazie chodzi mi o optymalizacje. No bo jeżeli do każdego badania będę tworzył dynamicznie nową tabelę to baza będzie puchła i myślę, że wyszukiwanie wyników badania jakiegoś pacjenta może trwać bardzo długo.

Dziękuję za każdą podpowiedz!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
evenementrf
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.04.2012

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


NOSQL - ciekawe, jednam mam już wytyczne, serwer stoi na mysql więc nie mam zbyt wielkiego pola do popisu... ;/

a mam pytanie czy jeżeli będę tworzył do każdego badania dla pacjenta nową tabelę, baza urośnie do kilkudziesięciu tysiecy tabel (oczywiście zakładam że indeksy mi w tym pomoga) to czy wyszukiwanie będzie w miarę szybkie? bo wyczytałem że MYSQL nie ma ogranicznenia, ograniczeniem jest tylko przestrzeń dyskowa.

Pomysł z plikami *.txt ciekawy, jednak dane mają siedziec w bazie, pozatym mają być szyfrowane więc pliki odpadają.
Go to the top of the page
+Quote Post
bpskiba
post
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


Cytat(evenementrf @ 17.04.2012, 21:42:59 ) *
NOSQL - ciekawe, jednam mam już wytyczne, serwer stoi na mysql więc nie mam zbyt wielkiego pola do popisu... ;/

a mam pytanie czy jeżeli będę tworzył do każdego badania dla pacjenta nową tabelę, baza urośnie do kilkudziesięciu tysiecy tabel (oczywiście zakładam że indeksy mi w tym pomoga) to czy wyszukiwanie będzie w miarę szybkie? bo wyczytałem że MYSQL nie ma ogranicznenia, ograniczeniem jest tylko przestrzeń dyskowa.

Pomysł z plikami *.txt ciekawy, jednak dane mają siedziec w bazie, pozatym mają być szyfrowane więc pliki odpadają.


Gdyby jedynym problemem było szyfrowanie problem byłby banalny. Plik można zaszyfrować dowolnym algorytmem z losowym kluczem,a klucz ten (inny dla każdego pliku) przechowywać w bazie danych.
Jeżeli natomiast podtrzymana zostanie konieczność przechowywania danych w tabelach mysql widzę tu jedyną możliwość:
Zastosowanie dwóch serwerów mysql (na dwóch osobnych fizycznych maszynach) Pierwszy do obsługi danych pacjentów, całej aplikacji, uwierzytelniania itd, a drugi przechowywania wyników badań. Pierwszy serwer nie będzie problemem. Dodatkowo należy tu zapisać wskaźniki do szybkiego odnalezienia rekordu na serwerze 2

Dla określenia struktury bazy serwera nr2 trzeba będzie odpowiedzieć na kilka pytań. 90% zapytań o wyniki będzie dotyczyć ostatnich badań(ostatni dzień, ostatni tydzień). Należy określić ten czas i te dane trzymać blisko (może w osobnej bazie, a może nawet na serwerze nr 1)
Serwer 2 powinien przechowywać dane w osobnych bazach dla jakiegoś czasu (rok, rok_miesiąc, rok_tydzień)
Najstarsze dane należy przechowywać w tabeli archive
Mechanizmem pomocnym może być tutaj również partycjonowanie tabel
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 16:48