Projekt bazy danych
Jan Kowalski - 11-11-2005 11:40
Projekt bazy danych
Prosze o opinie i rade. Tworze system ktory ma zapisywac zdarzenia do bazy danych. Wybralem MySql. Uzytkownicy beda przesylali zdarzenia. Zadarzen bedzie nawet do 50 tys. dziennie od jednego uzytkownika, kazdy rekord to ok 30 liczb lub tekstow. Zastanawiam sie nad projektem bazy.Pola w tabeli moga wygladac tak:
User ID Data1 Data2 .. .. .. DataN
A moze zalozyc tabele dla kazdego uzytkownika ktorej nazwa bedzie User ID? Czy nie bedzie tak szybciej uzyskac dostep do danych usera? Jakie jest ograniczenie wielkosci bazy (lub tabeli ) w MySql? Jakie moga wystapic problemy z utrzymaniem tak duzej ilosci danych?
Pozdrawiam Janek
Wojtek pBT (lapt) - 11-11-2005 11:41
Dnia 2005-11-08 16:34, Użytkownik Jan Kowalski napisał:
> Prosze o opinie i rade. > Tworze system ktory ma zapisywac zdarzenia do bazy danych. Wybralem MySql. > Uzytkownicy beda przesylali zdarzenia. Zadarzen bedzie nawet do 50 tys. > dziennie od jednego uzytkownika, kazdy rekord to ok 30 liczb lub tekstow. > Zastanawiam sie nad projektem bazy.Pola w tabeli moga wygladac tak: > > User ID > Data1 > Data2 > . > . > . > DataN > > A moze zalozyc tabele dla kazdego uzytkownika ktorej nazwa bedzie User ID? > Czy nie bedzie tak szybciej uzyskac dostep do danych usera? Jakie jest > ograniczenie wielkosci bazy (lub tabeli ) w MySql? Jakie moga wystapic > problemy z utrzymaniem tak duzej ilosci danych?
Mam nadzieję że to projekt na zaliczenie a nie coś produkcyjnego...
zrób kilka tabel:
Zdarzenia idZ|nazwa|...
User idU|nazwisko|...
Log idL|data|idZ|idU|...
Przy czym tabela Lol powinna miec jak najmniej kolumn. Możesz nawet myśłec o relacji 1:1 jeżeli bo części danych bedziesz dobierał się rzadziej. Zaplanuj dobrze indeksy (Bo kiedyś mysql nie najlepiej wypadała przy złączeniach). A może zmien bazę.
Ograniczeniem jest wielkość pliku, który wytrzyma twój system operacyjny. Jedna tabela skłąda sę z 3 plików: opisu_danych, danych, indeksu
pBT
Jan Kowalski - 11-11-2005 11:41
Raczej cos komercyjnego. Zdarzenia beda takie same (datagodzina, wartość1,wartość2) wiec nie potrzebuje tabel id zdarzenia. A potem chce te dane odczytywac i wyswietlac dane z okreslonego okresu (sumowac, srednie, ilosc itp.)
Użytkownik "Wojtek pBT (lapt)" <bato3@WirtualanPolskap.pl> napisał w wiadomości news:dkqh3b$qm9$1@news.dialog.net.pl... > Dnia 2005-11-08 16:34, Użytkownik Jan Kowalski napisał: > >> Prosze o opinie i rade. >> Tworze system ktory ma zapisywac zdarzenia do bazy danych. Wybralem >> MySql. >> Uzytkownicy beda przesylali zdarzenia. Zadarzen bedzie nawet do 50 tys. >> dziennie od jednego uzytkownika, kazdy rekord to ok 30 liczb lub tekstow. >> Zastanawiam sie nad projektem bazy.Pola w tabeli moga wygladac tak: >> >> User ID >> Data1 >> Data2 >> . >> . >> . >> DataN >> >> A moze zalozyc tabele dla kazdego uzytkownika ktorej nazwa bedzie User >> ID? Czy nie bedzie tak szybciej uzyskac dostep do danych usera? Jakie >> jest ograniczenie wielkosci bazy (lub tabeli ) w MySql? Jakie moga >> wystapic problemy z utrzymaniem tak duzej ilosci danych? > > > Mam nadzieję że to projekt na zaliczenie a nie coś produkcyjnego... > > zrób kilka tabel: > > Zdarzenia > idZ|nazwa|... > > User > idU|nazwisko|... > > Log > idL|data|idZ|idU|... > > Przy czym tabela Lol powinna miec jak najmniej kolumn. Możesz nawet myśłec > o relacji 1:1 jeżeli bo części danych bedziesz dobierał się rzadziej. > Zaplanuj dobrze indeksy (Bo kiedyś mysql nie najlepiej wypadała przy > złączeniach). A może zmien bazę. > > > Ograniczeniem jest wielkość pliku, który wytrzyma twój system operacyjny. > Jedna tabela skłąda sę z 3 plików: opisu_danych, danych, indeksu > > pBT
darek - 11-11-2005 11:41
Jan Kowalski napisał(a): > Raczej cos komercyjnego. Zdarzenia beda takie same (datagodzina, > wartość1,wartość2) wiec nie potrzebuje tabel id zdarzenia. A potem chce te > dane odczytywac i wyswietlac dane z okreslonego okresu (sumowac, srednie, > ilosc itp.)
A czytales cos na temat normalizacji i jej zalet, a takze tego kiedy mozna z niej zrezygnowac? To co zaproponowales wyglada nienaturalnie w relacyjnych bazach danych.
Pozdrawiam Darek
Jan Kowalski - 11-11-2005 11:41
Użytkownik "darek" <chq_at_wp_pl@spam.pl> napisał w wiadomości news:b5cae$4370f979$540a1666$31142@news.chello.pl. .. > A czytales cos na temat normalizacji i jej zalet, a takze tego kiedy mozna > z niej zrezygnowac? > To co zaproponowales wyglada nienaturalnie w relacyjnych bazach danych.
Piszesz o tej ostatniej propozycji? Masz inny pomysl na zapis tych danych?
Jan Kowalski - 11-11-2005 11:41
> A czytales cos na temat normalizacji i jej zalet, a takze tego kiedy mozna > z niej zrezygnowac? > To co zaproponowales wyglada nienaturalnie w relacyjnych bazach danych. > OK, poczytalem. Oczywiscie dane klientów beda w innej tabeli. Dla uproszczenia skupilem sie tylko na danych ktore sa wynikiem chwilowych parametrow i chodzi mi o konstrukcje tylko tego fragmentu bazy w ktorej bedzie np:
datagodzina temperatura wartosc napiecia
Pytanie brzmi czy w tym wypadku lepiej uzyc jednej tabeli i dodac pole IDKlienta czy dla kazdego IDKlienta utworzyc nowa tabele.
Pozdrawiam Janek
emes - 11-11-2005 11:41
w zaleznosci jak pozniej chcesz na tym wykonywac zapytania + jaka bedzie liczba tych klientow
-- emes
Jan Kowalski - 11-11-2005 11:41
Użytkownik "emes" <emesemes@wp.pl> napisał w wiadomości news:43710493$0$5427$f69f905@mamut2.aster.pl... >w zaleznosci jak pozniej chcesz na tym wykonywac zapytania + jaka bedzie >liczba tych klientow >
Klientow kilkaset (a w skrajnych wypadkach kilka tysiecy). Zapytania to sumy, wyswietlanie rekordow z zadanego okresu lub o zadanej wartosci, srednie, wyswietlanie wartosci z zadanego czasu u wszystkich klientów, sumowanie wartości z zadanego czasu pogrupowane wg klientow itp.
Kazek Kurz - 11-11-2005 11:41
Jan Kowalski wrote: > Prosze o opinie i rade. > Tworze system ktory ma zapisywac zdarzenia do bazy danych. Wybralem MySql. > Uzytkownicy beda przesylali zdarzenia. Zadarzen bedzie nawet do 50 tys. > dziennie od jednego uzytkownika, kazdy rekord to ok 30 liczb lub tekstow. > Zastanawiam sie nad projektem bazy.Pola w tabeli moga wygladac tak: > > User ID > Data1 > Data2 > . > . > . > DataN > > A moze zalozyc tabele dla kazdego uzytkownika ktorej nazwa bedzie User ID? > Czy nie bedzie tak szybciej uzyskac dostep do danych usera? Jakie jest > ograniczenie wielkosci bazy (lub tabeli ) w MySql? Jakie moga wystapic > problemy z utrzymaniem tak duzej ilosci danych? > > Pozdrawiam > Janek Przy takim rozmachu normalizacja bazy to duzo za mala wiedza aby projekt z sensem prowadzic i zakonczyc. Musisz odpowiedziec takze na takie pytania jak: a) czy dane moga byc tracone? Jesli absolutnei konieczne jest aby zapisaly sie wszystkie wpisy, w istocie projektujesz system typu bilingowego: to sa systemy o najwyzszych wymaganiach wydajnosciowycj i niezawodnosciowych Jesi budujesz takiu system pocztaj o kolejn\kowaniu i o monitorach tranzakcyjnych. Mozna rozwazac rozdwojenie bazy zarowno z powodw wydajnosciowych jak i niezawodnosciowych b) czy wpisy moga przychodzic jednoczesnie z wielu zrodel, czy siec, dysk, procesor, logi wydola. Znowu byc moze monitor tranzakcyjny sie przycac moze. c) czy potrzebna jest pelna transakcyjnosc: jesli nie wywal ja zaraz jak sie tylko da: po co ci wpisy i do tabel i do logow, skoro chcesz miec tylko dane. d) rozwaz podzielenei tabeli w taki sposob aby zwiekszyc wydajnosc zapisu. W informixie sa mechanizmy pozwalajace JEDNA tabele rozlozyc na N dyskow ( klauzula FRAGMENT BY) tak, zeby zapisy komunikatow Adamskiego, Kowalskiego i Żubra odbywaly sie roznymi kontrolerami dyskowymi. Alternatywnie mozesz miec wpisy o komunikacie a, b, c d... albo inna fragmentacje. pamietaj: w relacyjnej bazie danych dane w tabeli nie sa przechowywane w okreslonej kolejnosci. A mzoe powinienes pisac do kilku serwerow bazodanowych? Uzywa sie wowczas monitora tranzakcyjnego. Wogole uzycoie go w takim projekcie jest BARDZO UZASADNIONE patrz p. a. e) jakim mechanizmem bedziesz tabele czyscil. Pamietaj: po tygodniu od 200 uzytkownikow bedziesz mial 50*10^3 * 200 = 10^6 rekordow. MILION rekordow. Co z nimi zrobisz po pol roku? Mechanizm backupu ktory musi tu byc uzyty musi zapewne spelniac jakies wymogi: czy bedza chcieli pzreszukiwac archiwa? Czy beda chcieli je przechowywac w jakiejs sensowenj postaci? czy moze istniec koniecznosc spojnego uzowania danych takze historycznych?
Na koniec nadmienei ze jedyne tego typu rozwiazania jakie widzialem, co prawda znacznei wiekszej skali, dzialaly na DB2. 50 tysiecy dziennie/na usera i kilkaset userow... czlowieku: za co ty sie bierzesz.... Kazek
-- O ktorym Wojtek Wierba napisal: Kiedyś mówiło się "cogito ergo sum". No Kazek chyba powiedzialby jednak: "cogito ergo zum" co tlumaczy sie jako "... jezdem"
Jan Kowalski - 11-11-2005 11:41
Użytkownik "Kazek Kurz" > > Na koniec nadmienei ze jedyne tego typu rozwiazania jakie widzialem, co > prawda znacznei wiekszej skali, dzialaly na DB2. > 50 tysiecy dziennie/na usera i kilkaset userow... > czlowieku: za co ty sie bierzesz.... > Kazek
Wlasciwie zakladalem zapis wszystkich rekordow w wierszu, ale czesto w wierszu zmienia sie tylko zapis jednej kolumny a ja planowalem zapis calego wiersza. Moze rzeczywiscie to rozbic na tabele: Tabela 1: Data, UserID, wartosc1
Tabela2 Data, UserID, wartosc2
i tak 30 tabel?
Jako ciekawostke powiem Ci ze do tej pory robilem to w BAZACH ACCESOWYCH!!!! i to działa pare lat! Moze to szok dla niektorych ale tak to jest. Zakladalem codziennie 1 baze ktorej nazwa byla datą i kazdy klient mial swoją tabele.
Jednak dostęp do tych danych nie był za bardzo wygodny ale był. Ponieważ obecnie serwery bazodanowe są tanie lub wrecz bezpłatne, dlatego chce zrezygnowac z MSJet.
Pozdrawiam Janek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
=?iso-8859-2?Q?=5BSQL_Server_2000=5D_uprawnienienia_do_u=BFyw ania_widoku_?==?iso-8859-2?Q?opartego_na_tabeli_z_innej_bazy?=
Dwie bazy czy dwie tabele?
[PHP i MySQL] Wstawianie =?ISO-8859-2?Q?rekord=F3w_do_bazy_?==?ISO-8859-2?Q?a_z=B3e_kodowanie?=
[mssql] insert do tabeli na podstawie danych z innej tabeli
=?ISO-8859-2?Q?=5Bmysql=5D_synchronizacja_struktury_bazy_?==? ISO-8859-2?Q?lokalnej_ze_zdaln=B1?=
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|