| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 2:01 pm Titlul subiectului: Cum e mai bine? [rezolvat] |
|
|
Vreau sa fac o interfata web (cu php si apache) ce are in spate o baza de date cu multe informatii.
Toti jucatorii de fotbal, de la toate cluburile, din toate diviziile, din toate campionatele, din toate tarile europei.
In mare, informatiile de identificare, foarte pe scurt sa zicem, vor fi:
- tara
- campionat
- divizie
- club
- jucator
Pe aceasta baza de date vreau sa pot face cautare din interfata web. Intrebarea mea e cum sa implementez baza de date - toate inregistrarile intr-o tabela sau in mai multe tabele, pe tari? In care din cele 2 cazuri utilizatorul interfetei va primi mai repede raspuns la o cautare de genul "toti jucatorii de la clubul A din divizia B din campionatul C din tara D" ?
Multumesc. |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1781
Locație: Sibiu
|
| Trimis: Vin Oct 31, 2008 2:08 pm Titlul subiectului: |
|
|
Ideea e sa ai cat mai putine informatii redundante. De exemplu nu are rost sa tii dubletul tara-divizie in aceeasi tabela intrucat nu toate tarile au aceleasi divizii, deci ajunge sa stii divizia ca sa stii si tara.
Eu as tabelele cam asa:
jucatori - id_jucator, id_club, alte informatii (nume, varsta etc.)
cluburi - id_club, id_tara, alte informatii
divizii - id_divizie, id_tara, nume
campionate - id_campionat, nume
legaturi_divizi - id_divizie, id_club
legaturi_campionate - id_campoinat, id_club
tari - id_tara, nume
(am lasat id_tara si in cluburi si in divizii pentru ca un club poate fi si intr-o divizie, si intr-un campionat - care nu e necesar sa fie ceva national). |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 2:21 pm Titlul subiectului: |
|
|
| ok, deci raspunsul ar fi ca merge mai repde daca fac 5-6 select-uri in 5-6 tabele mai mici decat un singur select intr-un tabel mare? |
|
| Sus |
|
Birkoff
Data înscrierii: 18/Mar/2004
Mesaje: 2605
Locație: Bucuresti
|
| Trimis: Vin Oct 31, 2008 2:32 pm Titlul subiectului: |
|
|
Amazing Science a scris: ok, deci raspunsul ar fi ca merge mai repde daca fac 5-6 select-uri in 5-6 tabele mai mici decat un singur select intr-un tabel mare?
dimpotriva, faci 1 singur select folosind joinuri si tinand partile de tabel mai des folosite in cache :D |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 2:40 pm Titlul subiectului: |
|
|
ok, select cu join-uri
dar... cum tin in cache partile folosite mai des? |
|
| Sus |
|
Amenthes
Data înscrierii: 12/Dec/2005
Mesaje: 616
|
| Trimis: Vin Oct 31, 2008 3:00 pm Titlul subiectului: |
|
|
| S-ar putea sa nu ai nevoie de cache. Implementeaza baza de date, pune indecsii de rigoare, realizeaza query-ul care iti trebuie si daca merge bine e ok. Daca merge greu mai optimizeaza putin, cu EXPLAIN query si cautari pe Google si daca nici dupa asta nu merge bine de abia atunci poti sa te gandesti la un cache. Eu personal folosesc Zend_Cache din Zend Framework cand e vorba sa cache-uiesc rezultate. |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 3:15 pm Titlul subiectului: |
|
|
| ok, multumesc tuturor pentru sfaturi. daca voi mai avea nevoie de ajutor voi reveni. |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 3:28 pm Titlul subiectului: |
|
|
| inca o intrebare: folosesc mysql pentru baza de date - ce credeti ca ar fi mai indicat sa folosesc? MyISAM sau InnoDB ? |
|
| Sus |
|
Amenthes
Data înscrierii: 12/Dec/2005
Mesaje: 616
|
| Trimis: Vin Oct 31, 2008 3:30 pm Titlul subiectului: |
|
|
| http://rackerhacker.com/2007/11/06/when-to-use-myisam-or-innodb/ |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 3:39 pm Titlul subiectului: |
|
|
ok, am citit.
dar, avand in vedere ca v-am spus pe scurt ce vreau sa fac, voi ce-ati folosi daca ati fi in locul meu? MyIsam sau InnoDb?
momentan parca m-as duce pe MYIsam. Daca peste 3 ani sa zicem ajung la limita de 4,284,867,296 rows, pot trece pe InnoDB sau e mai greu?
mersi. |
|
| Sus |
|
Amenthes
Data înscrierii: 12/Dec/2005
Mesaje: 616
|
| Trimis: Vin Oct 31, 2008 3:46 pm Titlul subiectului: |
|
|
| Eu unul as merge pe MyISAM. Acolo unde stiu ca or sa fie multe SELECT-uri aleg MyISAM. Unde sunt multe inserturi si eventual am nevoie de tranzactii folosesc InnoDB. |
|
| Sus |
|
Amazing Science
Data înscrierii: 15/Oct/2006
Mesaje: 114
|
| Trimis: Vin Oct 31, 2008 4:24 pm Titlul subiectului: |
|
|
| bun, asa ma gandesc si eu, sa ma duc pe myisam. dar daca la un moment dat ajung la limita si trebuie sa trec pe innodb se poate? ce implicatii ar avea aceasta trecere? |
|
| Sus |
|
ebogdan
Data înscrierii: 27/Iul/2006
Mesaje: 151
|
| Trimis: Sâm Noi 01, 2008 4:11 pm Titlul subiectului: |
|
|
Mi se par foarte ciudate întrebările astea despre InnoDB vs. MyISAM. InnoDB are securitate și fiabilitate mult mai mare decât MyISAM, este mai rapid în aproape orice privință (și la INSERT, și la SELECT), are optimizări mult mai bune etc. Iar MyISAM e totalmente varză, nu suportă nici măcar chei străine sau tranzacții, deci nu ar trebui să mai fie considerat bază de date în ziua de azi decât la categoria „glume proaste”.
Deci orice ai face, tot InnoDB e mai bun.
Oricum, momentan MyISAM este menținut doar ca să aibă și cei care habar n-au de baze de date ceva cu care să se joace și să zică că se pricep și ei la ceva. Căci la modul cel mai serios, de altceva nu e bun.
Și despre cache: vezi că MySQL suportă query cache și key cache. Google it! |
|
| Sus |
|
Amenthes
Data înscrierii: 12/Dec/2005
Mesaje: 616
|
| Trimis: Sâm Noi 01, 2008 6:02 pm Titlul subiectului: |
|
|
@ebogdan, ai uitat de faptul ca MyISAM suporta indexare FULLTEXT.
E unul dintre motivele pentru care Flickr nu a putut renunta complet la MyISAM. Ma rog, nu stiu ce au ei in prezent, dar acum vreun an asa spuneau intr-o prezentare. |
|
| Sus |
|
ebogdan
Data înscrierii: 27/Iul/2006
Mesaje: 151
|
| Trimis: Dum Noi 02, 2008 4:36 pm Titlul subiectului: |
|
|
Nu am uitat de FULLTEXT. L-am omis pentru că nu mi se pare importantă această facilitate. De ce zic asta: e mai ușor să emulezi un FULLTEXT decât chei străine și tranzacții. Pur și simplu faci un modul cu o tabelă de cuvinte, tabelă cu articolele unde apar, de câte ori, scorul, etc etc etc și mai pui și un filtru să omiți cuvintele uzuale. Evident, index pe cuvânt.
Rezultă o căutare FULLTEXT emulată, universală pentru toată aplicația, care va funcționa comparabil de bine cu cea din MyISAM.
Pe de altă parte, cheile străine sunt greu de emulat. La fiecare ștergere, actualizare sau inserare în tabelă (și chiar și la selectări) trebuie să faci o grămadă de verificări. Sau, mai rău, trebuie să le facă cine scrie helperele de DB, și nu poți fi mereu sigur că nu uită ceva.
Iar tranzacțiile nu le poți emula programatic. Numai motorul de DB în sine poate face totul corect, la nivel de fișier și loguri. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |