Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> bardzo szybka baza danych? struktura? czy moze skrypt, czy to mozliwe? :S
test30
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 15.12.2007

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


witam,
istnieje strona tibiaring.com,
nie chce nawiazywac do tego o czym gromadzi ona informacje, tylko zapytac czy ma ktos pomysl, w jaki sposob to robi i w jaki sposob w tak szybkim czasie analizuje informacje juz zgromadzone,

zrobilem mechanizm pozwalajacy w jakims stopniu przewidziec kto moze miec jaka inna postac bazujac sie na plikach, ktore powstawaly przez ponad miesiac na serverze hostingujacym przy uzyciu crona,
tak juz zgromadzone dane 'wrzucilem' do mysql'a
struktura mojej bazy wygladala mniej wiecej tak:
dla kazdego nowego sprawdzenia (sprawdzanie bylo odnotowywane co 5 minut) powstawala nowa tabela, w tabeli byla jedna kolumna typu varchar o dlugosci ~35 znakow, srednio w kazdej tabeli istnieje 500 rekordow,
jesli gromadzilem takie dane przez miesiac, to tabel powstalo ~30*24*(60/5)=30*24*12[skryopt zapisuje dane o graczach online 12 razy na godzine; daje to +/-8640 tabel miesiecznie;

napisalem skrypt w php laczacy sie z baza danych
nastepnie pobieralem wszystkie tabele z bazy (liste sprawdzen kto byl online i kiedy)
wykonywalem petle na kazdej z tabel w bazie w poszukiwaniu danej nazwy gracza,
jesli takowa istnieje, skrypt wrzuca roznice zbioru graczy w tabeli, ktora jest aktualnie oraz sasiednich sprawdzen w bazie, czyli mam na mysli ze jesli mamy tabele A,B,C i w tabeli B znaleziono dana nazwe gracza, to B-A oraz A-B oraz B-C oraz C-B wedrowalo do, mmm, nazwijmy to sobie np lista podejrzanych.

w tym problem, ze ten caly proces trwa bardzo dlugo (okolo 5-10 minut), czy ma ktos pomysl, w jaki sposob moznaby zmienic strukture bazy czy sam mechanizm, aby to wszystko dzialalo sprawniej?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
test30
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 15.12.2007

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


  1. CREATE TABLE `200712191455` (`n` varchar (35)); INSERT INTO `200712191455` VALUES ("nazwa1"),("nazwa2");
  2. CREATE TABLE `200712191500` (`n` varchar (35)); INSERT INTO `200712191500` VALUES ("nazwa2"),("nazwa3");


takich wpisow mam w pliku [dzien gromadzenia informacji].sql okolo 250 na dzien;
przejscie przez importowanie do bazy jeszcze jakos mija, ale samo wyszukiwanie trwa bardzo dlugo;

co do tego oddzielania przecinkami, juz zastanawialem sie nad tym, ale jesli samo przeszukiwanie bazy trwa tyle, to ile bedzie trwalo odnalezienie kazdego wpisu+podzielenie go na ciagi nazw graczy+obliczenie roznic zbiorow sasiednich ciagow nazw graczy
w pierwszym poscie napisalem jak ten mechanizm wyglada, ale troche moze to byc niezrozumiale, wiec podam przyklad:
zalozmy ze o godzinie 11:30 sprwadzonie dalo wynik:
Kod
a,b,c

o 11:35
Kod
b,c,d

a o 11:40
Kod
d,e,f

to jesli jako osobe poszukiwana podam nazwe 'c', to skrypt powinien zwrocic {11:40}-{11:35} [tylko, poniewaz tylko na granicy 11:35 a 11:40 pojawia sie taka roznica w zbiorach, ze w kolejnym nie ma c,

chodzi tutaj o to, zeby wychwycic te momenty, kiedy dana postac z gry jest wylogowywana (i byc moze przelogowywana na inna, czyli ta ktora chcemy poznac);

i w tym tkwi problem, ze chce aby takie sprawdzanie przeszlo przez cala baze, czyli w moim wypadku juz przez ponad 8000 wpisow,

dlatego troszke moze potrwac rozdzielanie srednikow
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: 26.12.2025 - 00:35