praegune kellaaeg 27.06.2025 18:44:42
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
09.10.2010 16:14:13
|
|
|
Le Inc kirjutas: |
Pole küll MySQL aga Oracle (sarnased ). |
MySql'i lehe jaluses ongi kirjas fraas "Oracle copyright", ja ma saan aru, et Oracle peale Sun'i ostu on kas lähimas tulevikus MySql-i ära ostmas, või on seda juba juba osaliselt omamas mingil moel. Ma arvan, et MySQL-i arendajad räägivad suht sarnast süntaksit ilmselt juba praegu ja ka edaspidi, seetõttu. Kuid ma täpselt aru ei saagi, kellele ja mil moel MySql siis kuulub hetkel.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
09.10.2010 16:31:52
|
|
|
estrose kirjutas: |
Le Inc kirjutas: |
Pole küll MySQL aga Oracle (sarnased ). |
MySql'i lehe jaluses ongi kirjas fraas "Oracle copyright", ja ma saan aru, et Oracle peale Sun'i ostu on kas lähimas tulevikus MySql-i ära ostmas, või on seda juba juba osaliselt omamas mingil moel. Ma arvan, et MySQL-i arendajad räägivad suht sarnast süntaksit ilmselt juba praegu ja ka edaspidi, seetõttu. Kuid ma täpselt aru ei saagi, kellele ja mil moel MySql siis kuulub hetkel. |
Jaanuar 2008 - Sun ostis MySQL'i
April 2009 - Oracle ostis Sun''i
Simple as that, wiki on sinu sõber
_________________ Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist. |
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
2korda2
HV kasutaja
liitunud: 19.07.2003
|
09.10.2010 22:29:15
|
|
|
morgoth kirjutas: |
Tabelil ei pea ju ilmtingimata mingit autoincrement PK välja olema... Näiteks, kui tegemist on miski seoste tabeliga. |
Alustuseks, mina ei rääkinud autoincrement PK-st vaid lihtsalt PK-st (tõsi, see ei muuda antud väite sisu). Võid teha seosetabeli ilma PK-ta ja kui hästi läheb, hoiad isegi pisut aega ja ressurssi kokku. Kui aga halvasti läheb (selgub, et seosele on vaja viidata kolmandast tabelist või et seosele on vaja lisatunnuseid lisada vms), siis saad tunda, mida tähendab läbimõtlemata andmemudel. Nagu ma teises teemas kirjeldasin, tegin viimati PK-ta tabeli >2 aastat tagasi (arendaja arvas, et nii on javas lihtsam). Kokkuvõttes ei olnud hea mõte.
Le Inc,
ole meheks, pane mõni indeks peale. Masin on küll loll ja tal on palju jõudu aga sellel pole lihtsalt mõtet.
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
10.10.2010 19:37:12
|
|
|
Fukiku kirjutas: |
Jaanuar 2008 - Sun ostis MySQL'i
April 2009 - Oracle ostis Sun''i
Simple as that, wiki on sinu sõber  |
Ma olen wikist leidnud ka valeinfot omajagu, toiduainete ja keemia teemal, ses suhtes ega ta kuigi kompetentne sõber pole alati.
Sun-i aktsia lühend oli kunagi SUNW, kui Java sai populaarsemaks siis muudeti aktsia nimeks ka JAVA, ja nüüd siis ma saan aru, et ilmselt on kadunud ka see tähis, ja jäänud on vaid ORCL, eks tuleb wikist üle vaadata kellelgi.
Oma praeguses töökohas näen andmete dubleerimise näiteid küll, aga pole infot mis eesmärgil need on tehtud.
Oma eelmise töökoha juures puutusin kokku mitmete andmebaasi süsteemsete vigadega, lausa sellise vea leidis, kus ORDER-BY-klausli lisamine päringule eemaldas päringutulemusest kõik read, tegu oligi andmebaasi selle versiooni teada oleva süsteemse veaga. Sedalaadi vead on küll selged ja kuhugile dokumenteeritud, kuid aeg-osaliselt andmebaas näib ikkagi toimima päringute puhul mitte ootuspäraselt, ja ei saa seal põhjendada et arendaja ise ei olnud pädev, sedalaadi olukorrad ilmselt on ka üheks põhjuseks kui valitakse lahendusi, mis heale tavale ei vasta.
Tooksin dubleerimise praktilise näite andmebaasis, mida kasutab tarkvara nimega "vBulletin forum 4.07". Seal andmebaasis on tabel post(postid, threadid, title, dateline,...) ja tabel thread(threadid, title, firstpostid, lastpostid, dateline,...). Andmetabelite vahel pole välisvõtit defineeritud, kuid veerge firstpostid, lastpostid kasutatakse viitamiseks tabelile Post, kust saaks leida kõik Thread-i postitused, sealhulgas ka noorima ja vanima. Kui keegi leiab veel huvitavaid dubleerimise näiteid praktilisest elust siis tooge siia ja vaatame üle.
--
Ja ka tabelis Forum(forumid, title, laspostid, lastthreadid, replycount,...) on dubleeritud veerge. Kuidas käesoleva HV-saidi andmebaasis dubleerimisega on? Kasvõi toodud kolme tabeli post. thread, forum puhul?
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
10.10.2010 20:24:13
|
|
|
Pakuks et morgothi mõte ei olnud mitte see, et üldse pole vaja PK vaid pigem see et alati ei pea olema autoincrement PK, kuna ta mainib kohe ka seoste tabelit.
Kui sul on MxN seoste kirjeldamise tabel, siis minimaalselt on sinna vaja ainult kahte välja: tabel1_id ja tabel2_id. Ja sinna ei ole eriti kasulik veel kolmandat välja juurde teha lihtsalt selleks et oleks autoincrement PK, vaid täiesti saab panna tabelile sellise PRIMARY KEY (tabel1_id, tabel2_id) mis tagab ka indeksite kombinatsiooni unikaalsuse.
estrose, kuigi esmapilgul võib tunduda nagu oleks firstpostid, lastpostid mõttetu andmete dubleerimine (kuna tõepoolest, saab post tabelist threadid järgi leida noorim ja vanim postitus) siis väheke edasi mõeldes selgub et asi ei ole siiski mõttetu dubleerimine vaid langeb umbes samasse kanti andmebaasi indekseerimisega kiiruse jaoks. Võta ükskõik millise foorumi esileht lahti ja mida sa näed: on foorumite nimekiri ja iga foorumi juures näha viimase postituse info. Võta alamfoorum lahti kus on threadide nimekiri näha: samamoodi on viimase postituse link ja info olemas. Nüüd kujuta ette et sul on andmebaasis 30 000 threadi, 2 miljonit postitust. Ja nüüd kujuta ette et selle threadide vaate välja kuvamiseks sa ei tee mitte lihtsalt "select * from thread where forumid=x" ja ei saa sealt koheselt kätte lastpostid vaid et iga thread row kohta peaks tegema subquery stiilis: "select id from post where threadid=x order by id desc limit 1".
Kui alamfoorumi vaates kuvatakse ette mingi 100 threadi rida, siis iga rea kohta jooksutatakse tema kohane subquery: 1 päringu asemel teed baasi rõõmsalt 101 päringut. Ja seda iga threadi vaate lehe kohta. Väga hea näide kus teoorias poleks vaja lastpostid, aga reaalselt kui asjalikumat jõudlust taga ajada on selline asi möödapääsmatu. Ja isegi kui sul on andmebaas indekseeritud hästi, siis iga subquery võtab ikkagi oma aja ära, mis sõltub väga suuresti post tabeli suurusest.
Le Inc, tõsiselt huvitab mis veebileht sul jookseb sellise indeksivaba andmebaasi peal nii rõõmsalt ? Ja kuidas siiamaani pole pähe torganud mõnda indeksit peale panna. Kui sa päringute järgi korraliku indeksi peale paned ei peaks kiirusevõit olema mingi hädine 3x vaid hoopis suurusjärgus 30x.
Esiteks see miks kustutamise peale asi aeglasemaks läks on see, et sul jäi asi optimeerimata peale kustutamist: olenevalt baasitüübist jäävad peale kustutamist tavaliselt tabelisse failisüsteemi tasemel nö augud sisse mis sunnivad baasimootorit kettalt teineteisest kaugemal olevaid andmeblokke lugema ning ka andmepuu läbimine võtab rohkem aega kuna puu ei ole optimeeritud.
Indekseerimise mõtet puust ja punaselt ette tehes: kui sul on indekseerimata andmebaasis 150 000 rida ja päring võtab aega 2 sekundit, siis 600 000 rea korral võid ilusti selle läbi korrutada neljaga ehk 8 sekundit päringu kohta kui otsid mingi välja alusel, kuna andmebaas käib järjest read läbi kuni leiab sobiva. Kui sul oleks aga otsitava välja peal indeks (ehk baas hoiab väärtuseid sorteeritult) siis sorteeritud välja korral saab leida sobiva rea ülesse kahendotsinguga: baas võtab keskelt väärtuse, võrdleb sinu otsinguga kas sai suurema või väiksema või õige väärtue, kui ei saanud õiget siis võtab 50% viimase sammu suurusest ülesse või allapoole ja kontrollib uuesti. 600 000 reaga tabelist õige rea ülesse leidmine võtaks maksimum 20 kontrolli selle asemel et kõik 600 000 ükshaaval läbi käia. 6 000 000 reaga tabeli korral 23 kontrolli (log2(ridade arv)), ehk 10 korda suurema baasi korral ei muutuks päring mitte 900% võrra aeglasemaks vaid kõigest 15% võrra. Ja sarnane jõudluse/kiiruse vahe on ka 600 000 reaga indekseerimata ja indekseeritud tabelil.
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
11.10.2010 12:28:38
|
|
|
tsitaat: |
Le Inc, tõsiselt huvitab mis veebileht sul jookseb sellise indeksivaba andmebaasi peal nii rõõmsalt ? Ja kuidas siiamaani pole pähe torganud mõnda indeksit peale panna. Kui sa päringute järgi korraliku indeksi peale paned ei peaks kiirusevõit olema mingi hädine 3x vaid hoopis suurusjärgus 30x.
Esiteks see miks kustutamise peale asi aeglasemaks läks on see, et sul jäi asi optimeerimata peale kustutamist: olenevalt baasitüübist jäävad peale kustutamist tavaliselt tabelisse failisüsteemi tasemel nö augud sisse mis sunnivad baasimootorit kettalt teineteisest kaugemal olevaid andmeblokke lugema ning ka andmepuu läbimine võtab rohkem aega kuna puu ei ole optimeeritud. |
Õigus sul on. Tegin indeksi ID jaoks ning formuleerisin sql päringu mõõturi koodi põhiselt ümber ID peale. Enne küsis ~1,3 s, nüüd saab ~0,4 s hakkama. Esimene päring tuleb sipa pikem, kui indekseid pole sisse loetud!? Pole hullu, veebi sisse logides tehakse kiire päring ära indeksitega ja edasi teine link, kus keerulisem päring tuleb ludinal.
Hüva nõu.
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
11.10.2010 15:26:31
|
|
|
serk kirjutas: |
Andmete dubleerimine on väga väga bad practice töö tabelites |
Kuidas sa soovitaksid sel juhul modelleerida andmebaasi tabelid "Postitus, Teema, Foorum", kas ilma dubleerimisteta?
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
11.10.2010 17:17:49
|
|
|
estrose kirjutas: |
serk kirjutas: |
Andmete dubleerimine on väga väga bad practice töö tabelites |
Kuidas sa soovitaksid sel juhul modelleerida andmebaasi tabelid "Postitus, Teema, Foorum", kas ilma dubleerimisteta? |
Dubleerimisel ja linkide loomisel on väike vahe sees.
topicu tabelisse lastpost_id panemine ei ole kuidagi dubleerimine. Täiesti unikaalne info on.
Kui mõtled, et seda kasutatakse nii foorumi kui topicu taelis siis see on tõesti dubleerimine. Aga tegu on ka suht vähetähtsa infoga. Isegi kui see süngist välja läheb siis ei juhtu midagi. Kõik töötab endistviisi edasi. Küll aga on saadav koormuse võit sellist ebamugavust väärt.
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
morgoth
HV kasutaja

liitunud: 14.01.2004
|
11.10.2010 18:35:02
|
|
|
Pane siis foorumi tabelisse lastThreadId ning Teemade tabelisse lastPostId
|
|
Kommentaarid: 11 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
11.10.2010 21:28:14
|
|
|
estrose kirjutas: |
serk kirjutas: |
Andmete dubleerimine on väga väga bad practice töö tabelites |
Kuidas sa soovitaksid sel juhul modelleerida andmebaasi tabelid "Postitus, Teema, Foorum", kas ilma dubleerimisteta? |
last_post_id ei ole andmete dubleerimine mõttes, mida ma siin teemas laitsin. Andmete dubleerimise ehe näide on selles samas topicus, kus veerg HIND dubleeritakse tabeli ulatuses kolmandasse tabelisse - kordan veelkord, täiesti ajuvaba tegevus.
Foorumite puhul on otstarbekas hoida last_post_id veergu kategooriate tabelite juures eesmärgiga vältida FULL SCANi postituste tabelile, kus pead tegema group by ja joini et kätte saada vastavad andmed - see on jõhkralt aeglane, olen näinud ka vennikesi, kes ei oska group by't kasutada ja toovad vastavat infot FOR tsükliga. Ok, see selleks... Olenevalt arhitektuurist ja masinatest on last_XXX veergude täitmine juba lahendatud erinevalt.
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
11.10.2010 22:10:59
|
|
|
serk kirjutas: |
last_post_id ei ole andmete dubleerimine |
Veerg "viimane postitus", ja "vastuste kogus" on täpselt samasugune asi nagu ka veerus "viimaneHind" tehakse:
post(postid, threadid, title, dateline,...)
thread(threadid, title, firstpostid, lastpostid, dateline,...)
forum(forumid, title, laspostid, lastthreadid, replycount,...)
--
hind(toode, viimaneHind)
hinnaAjalugu(toode, hind, kpvalates, kpvKuni) |
Kui seda dubleerimiseks ei nimeta, siis võib seda eel-arvutuseks nimetada. Ja seda tehakse perfoomansi eesmärkidel, ja võib andmed korrektsest up-to-date süngist välja viia. Ma ei näe mingit erinevust veergudel "viimane postitus", "viimane hind" või muu selline "viimane xxx", ja neist ei erine ka veerg "vastuste kogus"- tegu on samamoodi perfoomansi eesmärgiga eelvarundatud väärtus.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
11.10.2010 22:50:26
|
|
|
estrose kirjutas: |
serk kirjutas: |
last_post_id ei ole andmete dubleerimine |
Veerg "viimane postitus", ja "vastuste kogus" on täpselt samasugune asi nagu ka veerus "viimaneHind" tehakse:
post(postid, threadid, title, dateline,...)
thread(threadid, title, firstpostid, lastpostid, dateline,...)
forum(forumid, title, laspostid, lastthreadid, replycount,...)
--
hind(toode, viimaneHind)
hinnaAjalugu(toode, hind, kpvalates, kpvKuni) |
Kui seda dubleerimiseks ei nimeta, siis võib seda eel-arvutuseks nimetada. Ja seda tehakse perfoomansi eesmärkidel, ja võib andmed korrektsest up-to-date süngist välja viia. Ma ei näe mingit erinevust veergudel "viimane postitus", "viimane hind" või muu selline "viimane xxx", ja neist ei erine ka veerg "vastuste kogus"- tegu on samamoodi perfoomansi eesmärgiga eelvarundatud väärtus. |
Viide teise tabeli PK'le on korrektne lähenemine - igati ok kõik. Ma muidugi hetkel natuke jokkis peaga ei saa aru viimaneHind veerust. Kas see on miskise hindade tabeli PK või lambi summa lihtsalt.
Teine lugu oleks siis, kui toote tabelisse lisada veerg keskmine hind ehk veerg, mida pead koguaeg üle arvutama - see on juba küsitav olenevalt süsteemist, kas seda töötabelisse lisada või lahendada teistmoodi.
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
11.10.2010 22:55:07
|
|
|
serk kirjutas: |
Viide teise tabeli PK'le on korrektne lähenemine - igati ok kõik. Teine lugu oleks siis, kui toote tabelisse lisada veerg keskmine hind ehk veerg, mida pead koguaeg üle arvutama - see on juba küsitav olenevalt süsteemist, kas seda töötabelisse lisada või lahendada teistmoodi. |
Aa, ma kirjutasin üht, mõtlesin teist, mõtlesin sellist olukorda:
toode(toode, viimaneHind)
hinnaAjalugu(toode, hind, kpvalates, kpvKuni)
Ja veerg viimaneHind on siis sedalaadi andmepesa, mida saab leida ka aeglase päringu abil. Sellsit varianti mõtlesin.
Sa mõtled ,et see oleks ok vist:
toode(toode, viimaneHindID)
hinnaAjalugu(toode, HindID, hind, kpvalates, kpvKuni)
kus oleks seos viimaneHindID=HindID.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
11.10.2010 23:18:34
|
|
|
Andmemudeli mõistes oleks ju ilusam jah, kui sa hoiaks toote juures viimaseHInna ID'd aga performanci mõttes mitte. Aga noh, kui viitsimist, siis tee test. Loo PK hindade ajaloo tabelisse ning toote juures hoia siis viidet PK'le. Tee join ja vaata palju aeglasemaks jääb. Postita tulemused siia ja saamegi real-life näite, kas sinu puhul on see lahendus mõttekas või mitte
Foreign key abil saaksid ka hoida andmed jõuga süngis, ehk toote juures olev viimane hind on ALATI reaalselt eksisteeriv kirje ajaloo tabelis, mitte mingi lambi hind mis programmi veatõttu või tabelisse sattuda. Aga noh, oleneb süsteemist jällegi, kõik see teeb baasi aeglasemaks...
Ma olen muutunud laisaks, lasen baasil enamuse tööd ära teha, sealhulgas väga suure osa äriloogikast, eelistan seda hoida kas baasis või mõnes vahekihis aga kindlasti mitte UI's. Aga noh, tõenäoliselt ma kahetsen seda väljaütlemist, kuna see on umbes sama teema nagu kumb on parem, kas Windows või Linux
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
11.10.2010 23:19:34
|
|
|
Sellist ideed ka ennem soovitati:
Fukiku kirjutas: |
Mul tekkis see küsimus, et kui juba sellist lahendust kasutatakse, kas siis ei oleks mõistlik hindade tabelisse tekitada veerud id, hind, kehtivuse_lopp ja komponentide tabelisse mitte hinda numbriliselt salvestada, vaid viidata kehtivale hinnale id kaudu? Andmete dubleerimine kahte tabelisse ei tundu hea mõte olevat andmebaasi disaini mõttes. |
Nüüd siis nagu 2 sedalaadi lahenduse soovitajat kokku.
Ma siiski mõtlen veel radikaalsema lahenduse üle, et mitte salvestada veergu "lastXXX_ID" kuhugile, vaid salvestada "lastXXX_Value" veergu, ehk siis viimast hinda ennast lausa hoida eraldi kiirelt kättesaadavas kohas. Ma pigem sooviks teha ise selle omapoolse mõtte kohta testi, või leida selle kohta mingi näitelahenduse ja uurida kuidas siis sünkimise jm asjad sujuvad.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
nemu
HV vaatleja

liitunud: 22.01.2002
|
12.10.2010 00:43:32
|
|
|
Variant on ka partitsioneerida tabel lõpu kuupäeva järgi ja kasutada hetkel kehtiva jaoks "dummy" väärtust.
Kõik ilusti ühes tabelis ja hetke hindade jaoks käid ainult ühe partitsiooni kallal.
Näiteks:
CREATE TABLE tootehinnad
(
tooteid number(10) NOT NULL,
hind number(22,2) NOT NULL,
alguskpv DATE NOT NULL,
loppkpv DATE DEFAULT TO_DATE('0001-01-01', 'YYYY-MM-DD') NOT NULL
)
PARTITION BY RANGE (loppkpv)
(
PARTITION TH_PART_PRAEGUNE VALUES LESS THAN (TO_DATE('2008-01-01', 'YYYY-MM-DD')),
PARTITION TH_PART_2008 VALUES LESS THAN (TO_DATE('2009-01-01', 'YYYY-MM-DD')),
PARTITION TH_PART_2009 VALUES LESS THAN (TO_DATE('2010-01-01', 'YYYY-MM-DD')),
PARTITION TH_PART_2010 VALUES LESS THAN (TO_DATE('2011-01-01', 'YYYY-MM-DD'))
)
ENABLE ROW MOVEMENT;
|
Igasuguse kasutuse jaoks ei sobi või siis vajab läbimõeldud indekseerimist.
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
12.10.2010 09:58:16
|
|
|
Mina kasutaks partitsioneerimist juhul, kui saaksin ühte partitsiooni panna min. 10 miljonit rida, isegi see on tegelt liiga vähe...
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
2korda2
HV kasutaja
liitunud: 19.07.2003
|
14.10.2010 13:30:29
|
|
|
serk,
andmebaasis äriloogikat üldiselt ei tehta. Põhjus elementaarne - mootori vahetumise korral tuleb suure tõenäosusega see kõik ümber kirjutada. Paras PITA. Samas ma eksin ka vahel selle vastu - andmebaasi elemendi uuendamine on võrreldamult lihtsam terve rakenduse vahetamisest, kui peaks LIVE keskkonnas äkki mingi kala välja ujuma.
Tabelite partitsioneerimine 650K kirje puhul ei ole üldiselt õigustatud. Kirjete arv peaks märksa suurem olema.
Le Inc ütles, et päringutes kasutatakse palju alampäringuid "in" konstruktsiooniga. Jällegi sõltuvalt mootorist on tulemused erinevad aga mina soovitan "exists" kasutada.
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
nemu
HV vaatleja

liitunud: 22.01.2002
|
14.10.2010 14:22:41
|
|
|
Ma ei suuda kuskilt välja lugeda, et see toote-hinna näide oleks sama mis LeInci 650k tabel.
Ridade arv ei ole samuti ainus aspekt, mida partisioneerimisel aluseks võtta.
Iga konkreetne juht tuleks eraldi läbi mõelda.
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
14.10.2010 16:15:27
|
|
|
2korda2 kirjutas: |
serk,
andmebaasis äriloogikat üldiselt ei tehta. Põhjus elementaarne - mootori vahetumise korral tuleb suure tõenäosusega see kõik ümber kirjutada. Paras PITA. Samas ma eksin ka vahel selle vastu - andmebaasi elemendi uuendamine on võrreldamult lihtsam terve rakenduse vahetamisest, kui peaks LIVE keskkonnas äkki mingi kala välja ujuma.
|
Jällegi teema, mille üle natuke kohatu vaielda teadmata IT valdkondi.
Senini on meil olnud alati üks eesmärk - hoida võimalikult palju äriloogikat andmebaasis, eks midagi on ja jääb ka alati UI'sse, üsna suur hulk reaalsuses, aga kui vähegi võimalik, siis kõik baasi. Mootori vahetuse põhjendus - kumba sa rohkem vahetad, kas Java JDK'd/ Muid frameworke või andmebaasi providerit? Andmebaas valitakse välja 1 ja sellega töötatakse aastaid, kui baasipeal jooksvaid rakendusi treitakse üle aasta uusi. Näiteks Java rakenduste kohapealt on siiski olnud lähenemine, et uue JDK puhul kirjutatakse baasi peal jooksev rakendus nullist ringi - oluliselt lihtsam seda teha, kui äriloogika suures osas baasis asub, veel parem kui suhtlus baasiga käb üle custom protokolli - võimalus üldse outsourceida kogu arendus ja ise mitte tegeleda lollakate joonte vedamistega jne... Baasi versiooni uuendamisel äriloogika jääb nagu ta on, implementatsioon võib muutuda vähesel määral.
See kõik on nii valdkonniti erinev(äriloogika keerukus ja suurus), et ei tasu üldistusi teha. Iga ettevõte otsustab selle ise kus ta äriloogikat hoiab ning loomulikult igal asjal omad plussid ja miinused ning mis peamine, palju on pappi.
Minujaoks on äriloogika baasis way to go, sinu jaoks mitte, mis teha, peame edasi elama ja kui kunagi kokku saame, siis konsensuse leidma
viimati muutis serk 14.10.2010 17:19:56, muudetud 2 korda |
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
14.10.2010 16:39:48
|
|
|
Oracle ja MS Sql-Server'i puhul on andmebaasi äriloogika programmeerimiseks kõik vajalikud vahendid olemas, ja on võimalik teha äriloogikat seal hõlpsalt, aga väiksemate andmebaasi mootorite puhul ilmselt on programmeerimis-Keskkond ilmselt kasin ja ei saagi eriti hõlpsalt keerumat äriloogikat realiseerida andmebaasi tasemel. Minu mäletamistmööda pole MySql-i andmebaasis kollektsioonide tuge üldsegi, kui googeldasin hiljuti selle kohta kuidas andmebaasi protseduurile kollektsiooni-parameetrit defineerida, siis sain vastuse, et polegi kollektsioone, et teha tuleks muud moodi, seega ilmselt pole eriti võimaluste-rohke MySql-i ja väiksemate andmebaasimootorite programmeerimise keskkond veel, ja ei ole hea neis äriloogikat programmeerima hakatagi seetõttu.
--
(tooksin siia ka definitsiooni PITA: Pain in the ass, pain in the arse)
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
2korda2
HV kasutaja
liitunud: 19.07.2003
|
14.10.2010 20:57:11
|
|
|
See, et vahendid on olemas, ei tähenda ju, et neid kasutama peaks :p
Kas olete võrrelnud, mis maksab ja kui keeruline on:
1. klasterdada rakendusserverit
2. klasterdada DB-serverit
Minul pole veel viimast tulnud teha, esimest aga on kasutatud päris mitmes projektis. Suurte lahenduste korral on tüüpiline lahendus, et rakendusservereid on terve pinu, need on suhteliselt lihtsad/odavad blade-tüüpi sahtlid. Nende taga aga töötab üks suur (ja kallis) DB server. Ka see on põhjuseks, miks peaks üritama andmebaasist äriloogikat välja saada - las DB server teeb ikka seda, milleks ta ette nähtud on - serveerib andmeid. Aga nagu öeldud - on teatud kontrollid, mida võiks DB tasemel teha. Äriloogikat DB-s teha on aga üldjuhul märksa kallim (pole OO-d).
Sel teemal leiab netist lugemist lademes:
http://www.codeproject.com/KB/architecture/DudeWheresMyBusinessLogic.aspx
http://giorgiosironi.blogspot.com/2010/02/where-is-business-logic.html
http://blogs.msdn.com/b/rogerwolterblog/archive/2006/04/04/568351.aspx
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
14.10.2010 21:58:37
|
|
|
Nagu ka ise ütlesid, it's all about money.
PL/SQL on programmeerimis keel
Java on programmeerimis keel
C on programmeerimis keel
Äriloogika võib panna mistahes keelde, mistahes kihti - pigem on asi ettevõte pikas perspektiivis ja platvormides mida soovitakse kasutada süsteemi alustalana. Eks see nii olegi, et kui äriloogika kasutajakihis, siis kogu pauk läheb rak. serverile ja vastupidi, rääkimata meetodidest kuidas üldse sellistel juhtudel rakendusi ehitada.
Ma ei tea, ma ei ülistaks OO niivõrd väga
Aga kui sellele juba jutt läks siis PL'ist:
Encapsulation - olemas, samuti inheritance ja polymorphism, nii et päris lootuseta see kraam pole OO suhtes
Tegelt vist peaks uue teema tegema, tegemist siiski MySQLi topicuga ja sujuvalt oleme teemat vahetanud
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mirko28
Aeg maha 1p

liitunud: 31.12.2003
|
14.10.2010 22:06:16
|
|
|
serk kirjutas: |
PL'ist:
Encapsulation - olemas, samuti inheritance ja polymorphism, nii et päris lootuseta see kraam pole
Tegelt vist peaks uue teema tegema, tegemist siiski MySQLi topicuga ja sujuvalt oleme teemat vahetanud  |
PLSQL omab moodsast programmeerimis-maailmast siiski vaid võimalust sama nime kuid erineva signatuuriga meetodite tegemist, mingit OO-temaatikat seal küll pole, tegu on nagu nimi siiski ütlebki- protseduuride põhise grammatikaga. Niiet mingit uhket OO-arhitektuuri kindlasti PL-is ei tehta, iga ärivaldkond saab enamasti oma mooduli, on mingi ühine Common-moodul, ja neis kõigis hulk protseduure ja that's all, mingeid mooduleid ja aalam mooduleid jm teemasid mida "design patterns"-i teemal tuua saaks OO-keelte puhul, seal PL-is pole ja ei tehta. Niipalju siis PL-i OO kohta üldiselt. Kuid PL-is saab äriloogika täielikult realiseeritud, olen seda kahes projektis ka teinud, käesolevas projektis aga on nagu 2korda2 räägib, et andmebaas on tühi, pole seal mingit äriloogikat, ju me siis töötame temaga samas firmas.
Teema on veidi kaaperdatud tõepoolest. Aga mis sellest kaaperdamisest siis niiväga kahju on? Teema-algataja/moderaator võib teema pealkirja üldistada korrektsemaks, moderaator võiks tõsta uude teemasse osad postitused.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
serk
HV kasutaja
liitunud: 24.05.2003
|
14.10.2010 22:39:39
|
|
|
Päris nii see tegelikkuses pole - läbi Object Type'ide saab ikka päris palju tehtud ning pigem on tegemist teadmatusega Oracle erinevatest võimalustest.
OO Oracles on esmapilgul keeruline ja veel raskemini loetav, tema suurim miinus minuarust hetkel, aga eelneva jutuga suures osas küll nõustuda ei saa.
Kel huvi lugemiseks, andke tuld:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14260/adobjint.htm#ADOBJ001
Üks vanem dok.
|
|
Kommentaarid: 8 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|