euphoric Posted August 12, 2010 Report Share Posted August 12, 2010 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 ! Quote Link to comment Share on other sites More sharing options...
codez Posted August 12, 2010 Report Share Posted August 12, 2010 Vai tad nevar būt viena db uz visiem? ieliec products tabulā lauku owner, kas norāda kuram subdomeinam tā prece pieder. un tad viens.all.lv liec: SELECT * FROM products WHERE owner='viens' kamēr www.all.lv liec: SELECT * FROM products Quote Link to comment Share on other sites More sharing options...
euphoric Posted August 12, 2010 Author Report Share Posted August 12, 2010 He,he :) Tiešām, nebiju iedomājies. Laba ideja paldies :) Quote Link to comment Share on other sites More sharing options...
marcis Posted August 12, 2010 Report Share Posted August 12, 2010 +1 codez Vienīgi, ja katrs no apakšveikaliem ir liels, tad būtu stulbi katram kverijam kabināt klāt papildus where nosacījumu. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 12, 2010 Report Share Posted August 12, 2010 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... Quote Link to comment Share on other sites More sharing options...
marcis Posted August 12, 2010 Report Share Posted August 12, 2010 liels = pārdesmit/simt tūkstoši preces * veikalu skaits Quote Link to comment Share on other sites More sharing options...
Kavacky Posted August 12, 2010 Report Share Posted August 12, 2010 Labai DB tas ir sīkums. Quote Link to comment Share on other sites More sharing options...
Uldis Posted August 16, 2010 Report Share Posted August 16, 2010 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. Quote Link to comment Share on other sites More sharing options...
codez Posted August 16, 2010 Report Share Posted August 16, 2010 (edited) 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 August 16, 2010 by codez Quote Link to comment Share on other sites More sharing options...
Uldis Posted August 16, 2010 Report Share Posted August 16, 2010 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. Quote Link to comment Share on other sites More sharing options...
codez Posted August 16, 2010 Report Share Posted August 16, 2010 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. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted August 16, 2010 Report Share Posted August 16, 2010 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[..] Es arī šo to esmu sakomponējis, galvenais atcerēties, ka indeksi ir zāles, un zāles nevajag pārdozēt http://datubazes.wordpress.com/2009/03/04/indeksi/ Quote Link to comment Share on other sites More sharing options...
Kaklz Posted August 16, 2010 Report Share Posted August 16, 2010 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.