Jump to content
php.lv forumi

Padoms par vairākam DB


euphoric

Recommended Posts

Sveicināti !

 

Sniedzos pēc padoma, kā būtu labāk darīt .

 

Iedomāsimies šādu situāciju, ir i-veikali ar tādiem subdomeniem www.viens.all.lv, www.divi.all.lv, utt..

 

Bet uz paša www.all.lv bāzējas resurss, kas apkopo visu šo i-veikalu, preces, klientus, uc. info.

 

Katram i-veikalam attiecīgi sava Datu bāze.

 

Pieņemsim iekš www.all.lv man vaig izvilktu visu i-veikalu preces vienuviet.

 

Kā labāk darīt ?

 

Konektēties pie katras Db atsevišķi un vilkt ara..

 

Vai uztaisīt iekš www.all.lv Datu bāzes katram mērķim savu `table`, > precēm vienu, klientiem otru.. un kad kāds i-veikals kko updeito, tad arī updeitojas iekš www.all.lv DB attiecīgais `table` ?

 

Vai arī vēl kādi varianti ?

 

Galvenais jau laikam tas ātrums..

 

Pāldies !

Link to comment
Share on other sites

Vienīgi, ja katrs no apakšveikaliem ir liels, tad būtu stulbi katram kverijam kabināt klāt papildus where nosacījumu.

Papildus WHERE nosacijums galiigi nav stulbi ... Stulbi buutu katram veikalam veidot atseviskju tabulu ..

Piedevam ko noziime Liels ? Ja visi dzivojas uz viena Domena...

Link to comment
Share on other sites

piekrītu mārcim par where lietošanu pie katra query pieprasījuma. Manuprāt ātrāk tad darbotos, ja katram veikalam būtu sava db. Preču pievienošanu var automātiski ierakstīt visās db vienlaicīgi un atlasīt dati tiks daudz ātrāk.

suņa murgi.

Esi dzirdējis kaut ko par indeksiem?

Edited by codez
Link to comment
Share on other sites

ar indexiem būtu ātrāk kā izmantojot atsevišķas db? neesmu īpaši iedziļinājies par cik % indexi palīdz ātrāk strādāt, bet pēc loģikas un uz sitiena šķiet, ka atsevišķas db darbotos raitāk. Droši vien esi šajā jomā gudrāks par mani - labprāt uzklausītu tavu pieredzi, mošk arī man pašam noderēs kādreiz.

Link to comment
Share on other sites

Paņemsim populārāko no indeksa veidiem: BTREE

BTREE ir tāda datu struktūra, kad ļauj veikt meklēšanu, ievietošanu, selektošanu, dzēšanu logaritmiskā laikā.

Logaritmisks laiks nozīmē, ka darbību skaits, kurš nepieciešams konkrētai darbībai, ir log2 no ierakstu skaita.

Tātad,

ja ir 16 ieraksti, tad laiks ir 4,

ja ir 1024 ieraksti, tad laiks ir 10.

 

Tātad, ja ir veikals ar 100 000 precēm, tad meklēšanas laiks būs log2(100 000)=17

Tagad, ja ir 20 veikalu db apvienotas vienā, mums ir 2 000 000 ierakstu - log2(2 000 000)=21

21/17=1,23, kas nozīmē ka 20 db apvienotām vienā tabulā, ieraksta meklēšana notiks par 23% lēnāk.

Ja mēs paņemam 1000 db, tad log2(100 000 000)=27.

tātad 1000 datubāzēm apvienotām vienā tabulā šīs darbības notiks par 58% (27/17=1,58) lēnāk.

Bet palēlinājums dēļ ierakstiem ir saistīts tikai ar ieraksta meklēšanu. Realitātē vēl, ieraksts ir jānolasa, vai jāupdeito, jāizveido konekcija ar db, jāpārsē sql teikums, nolasītie dati jāsamet xml datu struktūrā, kuru sūta klientam, jātsūta dati klientam.

Tākā visas pārējās darbības abos gadījumos būs vienādas, tad reālais palēlinājums būs daudz mazāks. Lai precīzāk to noteiktu jātaisa benčmarks.

 

Bet ieguvumi ir nenovērtējami.

Vieglāka db un visas aplikācijas administēšana.

Vienkāršāks aplikācijas kods (nav jāsinhronizē n-tās db).

Ātrāka datu updeitošana, jo dati jāupdeito tikai vienā db.

Iespēja vienkāršā veidā veikt tādas darbības, ko, ja dati glabātos atsevišķās db, būtu ļoti sarežģīti, piemēram:

Tev visos dažādajos veikalos tirgo baltu xxl kreklu, bet tam ir dažādas cenas, tagad tu gribi atlasīt no visiem veikaliem šo preci un salīdzināt tās cenu dažādos veikalos. Ar vienu db, tas ir viens vienkārš sql kverijs, kamēr otrā gadījumā tās ir desmitiem konekcijas un demistiem kveriju, pluss vēl kods, kas sakompilē datus vienā kopumā.

 

Tā kā par dažiem procentiem ātruma, ko šeit iegūst, ir muļķīgi runāt, jo tad, jau dati jāglabā failā, kur ir pieņemts ieraksta lielums un ar fseek jāatrod vajadzīgais - strādās ne tikai par dažiem procentiem ātrāk, bet vairāki desmiti reižu ātrāk.

Link to comment
Share on other sites

piekrītu mārcim par where lietošanu pie katra query pieprasījuma. Manuprāt ātrāk tad darbotos, ja katram veikalam būtu sava db. Preču pievienošanu var automātiski ierakstīt visās db vienlaicīgi un atlasīt dati tiks daudz ātrāk.

 

Ierakstot preces visās DB vienlaicīgi tev vienalga būs viens lielais veikals, kur tev būs VIENA LIELA TABULA ar precēm un tu pilnīgi neko neatrisināsi, tikai ieviesīsi sev papildus galvassāpes un uzturēšanas murgus.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...