You are on page 1of 11

C s d liu hng i tng

HC VIN CNG NGH BU CHNH VIN THNG

Khoa sau i hc
Lp: CH10CNK1

**************************

ti

Bi tp ln

C S D LIU HNG I TNG

Ging vin: Phm Th Qu. Hc vin: Hong Phan Bo Trung.

C s d liu hng i tng

H Ni, 12/2010

C s d liu hng i tng

MC LC

C s d liu hng i tng c tnh ch o


C s d liu hng i tng cung cp persistent storage cho i tng. Ngoi ra, chung cso th cung cp: mt ngn ng truy vn, nh ch mc, giao tc, trong sut i tng phn tn trn nhiu server.

Ng cnh
Khng ging c s d liu quan h, thng lm vic vi SQL, mt c s d liu hng i tng lm vic trn mt ngn ng lp trnh c th nh C++, C or Java. Hn na, mt c s d liu hng i tng c th host-specific, hoc n c th c cng mt d liu trn nhiu host,

Rng buc
Vi c s d liu quan h, bn cha thng tin trn cc bng, v sau ly chng bng cc cu truy vn. Vi c s d liu hng i tng, phn mm gi hm d liu ti illustration, nhng cc i tng khoogn c to trn b nh cho n khi cn. Thay vo , chng s c c cha trong c s d liu. Khi mt i tng thay i, c s d liu c th m thm vit cc thay i vo c s d liu, to nn mt phin bn d liu, khi c yu cu lu tr, tt c cc ng dng s commit giao tc hin thi. Vic lp trnh khng cn quan tm n nh dng file l tr.

Truy cp d liu
Hu ht ng dng s dng mt c s d liu hng i tng truy cp d liu bng navigation: trong C hoc C++ l cc con tr, v trong Java chng l cc tham chiu. V d trong C++ bn c cu trc mt cy, class Tree { private: int Value; Tree *LeftChild; Tree *RightChild; public: Tree *Tree(int Value, Tree *Left, *Right) { this->Value = Value; this->LeftChild = Left; this->RightChild = Right; return this;
4

C s d liu hng i tng


} Tree *getLeft() { return LeftChild; } Tree *getRight() { return RightChild; } int getValue() { return Value; } Tree *setLeft(Tree *Left) { return LeftChild = Left; } Tree *setRight(Tree *Right) { return RightChild = Right; } int setValue(int V) { return Value = V; } }; // recursive function to visit a tree and add up the values: int Tree::getTotal() { int Result = Value; if (LeftChild) { Result += getTotal(LeftChild); } if (RightChild) { Result += getTotal(RightChild); } return Result; } Chng ta c th khi to chng nh sau: Tree *myTree = getTree("tree one"); cout << "Total for tree one: " << myTree->getTotal() << "\n"; Hm getTree ch th ci t c mt file t a, nhng trong chng ny, vic ci t nn c lm nh sau: Tree *Tree::getTree(const char *Name)
5

C s d liu hng i tng


{ return (Tree *) database::get(Name); } Hm ny to mt a ch nh duy nht trong b nh cha nh v mt c s d liu. OODB cng s kh to hai con tr LeftChild v RightChild. Khi getTotal() truy cp hoc tr n con tr con, c s d liu s ti i tng tng ng vo b nh v tnh ton gi tr cn thit. Thao tc con tr c th thc hin bng nhiu cch, ph thuc vo phn mm c s d liu. Cch chung nht trong C v C++ l s dugnj mt hm h thng memprot. C s d liu s h tr th vin ngt tn hiu, tm kim a ch v ti n vo b nh, ng thi nh u b nh l c cp pht vo cc page tng Vic bo v b nh s dng theo c ch bng cc page ca my tnh; Trong thc t, ni dung ca cc page thng c ti mt lc m bo hiu sut. Mt page c kch thc 64Kbytes trn mt s h thng. Ty theo i tng cha trong c s d liu m chng qun l, bn nn c mt lp Persistent. Cc i tng m khng phi l cc thnh phn ca cc lp khng c dn xut superclass l cc transient, v cc lp loi ny khng c lu tr. Khi cc i tng cha con tr hoc tham chiu n cc i transient objects c ti li vo database, cc con tr transient c th c thit lp v NULL; Mt s c s d liu some databases c th s dng d liu transient rang buc d liu. Trong Java, nu khng s dng cc phng thc sn th khoogn c cch no qun l b nh. Thay va cc tham chiu c th c to thnh cc "stub objects" rng vi cc phng thc ti d liu ln u v sau so gi phng thc d liu tng ng. Trong thc t, cc stub object c th c cng kch thc vt l nh cc i tng thc s.

Figure 1: Memory before LeftChild has been accessed

C s d liu hng i tng

Figure 2: Memory after LeftChild has been accessed

Ti d liu vo b nh i tng
Gi s mt on code m c s d liu nh x mt string v mt i tng. Tc l, bn bind mt chui vo i tng; bn c th to li i tng trong nhng ln sau t chui ni trn. Mt s c s d liu s a ra cnh bo nu bn binding hng ngn hoc hng triu i tng. Trong thc t, bn ch cn bind nhng i tng mc trn l .

C s d liu hng i tng Lu tr vt l cc i tng


Hu ht cc c s d liu hng i tng t ng lu tr khi bn hon thnh thao tc vi chng. Mt s m hnh (c bit l cc ngn ng kch bn nh PERL) thng yu cu bn gi mt phng thc save trn i tng lu tr chng.

Truy vn
Truy vn, bn c th t c hiu sut cao nht nu s dng nhiu cn tr cho mt vi truy . khng c ngn ng truy vn chun cho cc c s d liu hng i tng. Mt s nh cung cp phn mm s dng Object Query Language (OQL) c cung cp bi Object Database Management. Ty theo mc ch s dng, bn c th ci t mt phng thc sort trnh by d liu. Mt s h thng cung cp cc truy vn nhng trong bng m C hoc C++ v cho php truy vn thi gian chy. y l mt v d ca truy vn OQL theo chun cng cng ODMG 2.0. N thc s ging vi mt truy vn SQL. select c.address from Persons p, p.children c where p.address.street="Main Street" and count(p.children) >= 2 and c.address.city != p.address.city Gi s rng i tng Person cha mt tham chiu n mt con (children) tr n mt thc th Person khc. Truy vn s yu cu database server (hoc th vin) tm kim mi thc th n ca mt Person kim tra xem n c hai con v a ch ti Main Street, v a ch thnh ph ca con khc vi a ch thnh ph ca cha. Truy vn ny c th yu cu mt b nh ln trong vic ci t. N c th yu cu ti mi i tng Person vo b nh. Nu bn c th xy dng ch mc trn trng Persons.address.street; r rang l bn c cn quan tm n vic thit k cc i tuonwgj nh th no lm vic vi c s d liu m bn ang s dng. Vic chuyn i ht thng ny sang h thng khc c th to ra nhiu iu khng mong. Bn cn m bo rng bn n vic ci t cc rng buc nhiu nht c th. Lu rng, php ton khc, "!=", c th s dng a ch ca i tng thnh ph thay v gi tr ca n. Trong cc h thng nh C++, cc phng thc np chng nn c s dng inh ng nht cc i .

C s d liu hng i tng nh ch mc


Tng t nh cc c s d liu quan h, mt c s d liu hng i tng c th to mt ch mc c th truy xut mt trng c th vi tc cao. Trong v d v Tree pha trn, bn c th xy dng mt ch mc cc cc thnh phn Value, v sau s dng chng tm i tng Tree objects vi cc gi tr xc nh mt cch nhanh chng. Mt s c s d liu h tr c hashing v b-trees. Mt s c s d liu c th nh ch mc da trn nhiu trng v c th tr v con tro ti cc i tng phc.

Giao tc
Ging nh relational database, mt transaction l mt tun tc thc thi d liu m ch chp nhn cng thnh cng hoc cng tht bi. Nu mt trong s chng tht bi, chng trnh s gi phng thc abort ddeer hy b ton b thao tc khc. Mt s c s d liu c th kha cc tin trnh ang c truy cp v d liu m ang c thay i bi cc giao tc khc; iu c ngha l c th xy ra hin tng deadlock, khi nhiu tin trnh cng ch i nhau. c t ODMG khng cho php nested transactions, mc d mt s nh cung cp th h tr chng; vic ny c th to nn cc deadlock, nhng n s lm n gin ha vic thit k v lp trnh. Nu bn c nhiu tin trnh trong mt ng dng, mi tin trnh c th c mt giao tc, bn c th gii hn mt giao tc duy nht cho mt ng dng. Giao tc c th rt phc tp khi ci t v chng c th hn ch vn hiu nng. iu ny cng ng vi c s d liu quan h. S dng giao tc nu bn cm thy cn cc thao tc undo (roll back) mt tp tun t cc thc thi; nu bn loi b bic truy cp thi gian ngn, bn nn tm mt c ch kha n gin hn v nhanh hn. Nhiu ng dng, cho php nhiu u c nhng ch cho php mt u ghi, mt s thi iu tt c c cc u c s ch cho u ghi hon thnh tc v. Nu bn c nhiu tc v ghi d liu nh, v tc v c th rt nhiu, bn nn s dng chin lc trn, tc l tc v ghi cho php xen tc v c.

Cc i tng phn tn
Mt s c s d liu hng i tng rang buc i tng vo cc migrate t mt database server n cc server khc. Thng th, cc server c th chy trn cc h iu hnh khc nhau, vi cc kin trc khc nhau CPU, v c s d liu vit cc i tng nu cn thit. iu ny c th lm t ng, c th bng mt b qun l m cc b, hoc c th yu cu i tng t xa mt cch r rng.

C s d liu hng i tng


Cc c s d liu h tr phn tn i tng c th s dng rt nhiu a cha cng mt d liu bi v chng thng cha thong tin lu tr v server no cha bn gc ca mi i tng.

M hnh ho cc i tng
i tng (Object): B su tp cc yu t DL c cu trc, c ng nht bi mt tham chiu duy nht. Mi i tng u c c trng bng mt tn duy nht, gi l OID (Object Indentifier). Hai i tng l ng nht (O1==O2) nu chng c cng OID. Hai i tng l bng nhau (O1=O2) nu chng c cng gi tr.Cc i tng c trng bi cc tnh cht . Tnh cht (Property): c trng ca mt i tng c ch nh bng mt tn c th ng vi mt thuc tnh, mt hm hay mt i tng con thnh phn. V d: Thuc tnh n: tn ca mt ngi,... Hm: Hm tui (ca mt ngi),... Thuc tnh kp: cc con ca mt ngi,...

Lp: Cc i tng c cng tnh cht, c c trng bi mt cu trc v tp cc php ton tc dng ln cc i tng ca lp bng cch che du cu trc. Vic c t tin trin ca cc lp i tng lm thnh mt CSDL hng i tng, cho php m hnh ho hnh vi chung ca cc i tng mt cch n th v m rng c. Phng thc: thao tc lin kt vi mt lp, x l hay a tr li trng thi ca mt i tng hay mt phn ca i tng thuc lp. Mt i tng c thao tc bi phng thc ca lp v c thy qua cc phng php: nguyn l bao gi. Phng thc c th p dng c cho nhiu i tng thuc cc lp khc nhau: a lp dng m hnh ho cc mi lin kt gia cc lp. Thng ip: cc i tng trao i (giao lu thng tin) vi nhau bng thng ip. Thng ip gm tn ca mt phng php v cc tham s ca n. Khi tham s cho php bng vic gi i dn gi mt phng php cng cng ca mt i tng. i tng phn ng li mt thng bo bng cch thc hin phng php lin kt v a tr v cc tham s kt qu ca phng php. Khi qut ha: lin kt phn cp gia hai lp xc nh rng cc i tng ca lp trn tng qut hn cc i tng ca lp di, cc i tng ca lp di c cc tnh cht y v tinh t hn.

10

C s d liu hng i tng


Tnh k tha: s truyn tnh cht ca mt lp ti lp con ca n. Mi phn t ca lp con k tha cc tnh cht ca lp trn. Mt s tnh cht ca lp con c th c lm tinh t hn (nh ngha li). Tnh k tha bi: cho php mt lp c nhiu lp trn trc tip. Lp con k tha cc tnh cht v phng php ca cc lp trn. C th xy ra v cn c gii quyt nhng xung t v tn cc tnh cht hay phng php Cc m hnh i tng thng phn bit cc tnh cht c phn chia bi nhiu lp v whom hp chng trong nhng lp c bit gi l cc mi lin kt. Mi lin kt l lin h cu trc cho php lin kt cc lp i tng vi nhau bng cc tnh cht phn chia. Cu t (constructor): lp cu trc, cho php p t mt cu trc ln mt tp i tng v nh ngha cc tnh cht cu trc a tr. B (tuple): cho php gp cc thuc tnh (tch cc). Tp (set): cho php nh ngha cc i tng khng sp th t, khng cha cc phn t ging nhau. Ti (bag): cc tp khng sp th t, c cc phn t ging nhau. Danh sch (list): cho php nh ngha cc i tng c th t, c php c cc phn t ging nhau. Bng (table): cc thc th c th t v c ch s.

11

You might also like