Sa mga object-oriented database (OODB), ang mga user ay maaaring magtakda ng mga operasyon sa isang partikular na database, na binubuo ng mga bagay na maaaring may iba't ibang uri at kung saan itinakda ang mga operasyon. Mahusay nilang mapangasiwaan ang binary na impormasyon tulad ng mga multimedia object. Ang isa pang dagdag na benepisyo ng OODB ay maaari itong ma-program na may kaunting mga pagkakaiba sa pamamaraan nang hindi naaapektuhan ang buong system.
Mga kinakailangan para sa paglikha ng pamantayan
Ang kasaysayan ng object-oriented na mga database ng OODB ay nagsisimula sa katapusan ng huling siglo. Nilikha ang mga ito upang matugunan ang mga pangangailangan ng mga bagong aplikasyon. Ang palagay ay ang object-oriented database ay magbabago ng mga sistema ng software noong 1990s. Malinaw na ngayon na hindi ito ang kaso. Gayunpaman, ang muling pagkabuhay ng konseptong ito sa pamamagitan ng mga komunidad ng libreng software at ang pagtukoy ng mga angkop na aplikasyon para dito ay nag-uudyok ng pagsusuri sa mga katangian. OODB, na isang alternatibo sa lahat ng mga database ng relasyon.
Ang Object-oriented ay nagbibigay ng flexibility na pangasiwaan ang ilan o lahat ng mga kinakailangan at hindi limitado sa mga uri ng data at query na wika ng mga tradisyonal na database. Ang isang pangunahing tampok ng mga OODB ay ang kakayahang ibinibigay nila sa developer, na nagpapahintulot sa kanya na tukuyin ang parehong istraktura ng mga kumplikadong bagay at ang mga pagpapatakbo ng application. Ang isa pang dahilan sa paglikha ng mga OODB ay ang lumalagong paggamit ng mga wika para sa pagbuo ng software.
Ang mga database ay naging pundasyon ng maraming sistema ng impormasyon, ngunit ang mga tradisyonal na database ay mahirap gamitin kapag ang mga application na nag-a-access sa kanila ay nakasulat sa C++, Smalltalk o Java. Halimbawa, ang 1C object-oriented database ay idinisenyo sa paraang direktang maisama ang mga ito sa mga application gamit ang object-oriented na mga wika sa pamamagitan ng pag-ampon ng kanilang mga konsepto: Visual Studio. Net, C ++, C, Microsoft SQL Server at iba pa.
Ang pangunahing bentahe ng OODB ay ang kumpletong pag-aalis ng pangangailangan para sa RMs1 (impedance) na may kasunod na mga pagpapabuti sa pagganap.
Mga Kapintasan:
- Napaka-primitive na mekanismo ng konsultasyon, walang self-standard na tinatanggap na platform.
- Hindi makapag-imbak ng mga pamamaraan dahil maa-access lang ang mga bagay sa kliyente.
- Immaturity sa market.
- Walang pisikal na pagpapangkat ng mga bagay.
Object paradigm
Ang Object-oriented database ay mga programmable database na direktang nag-iimbak ng kumplikadong data at mga relasyon nito nang hindi nagtatalaga ng mga row at column, na ginagawang mas angkop ang mga ito para sa mga application na gumagana sa malalaking batch. Ang mga bagay ay may maraming-sa-maraming relasyon at naa-access sa pamamagitan ng paggamit ng mga pointer na nauugnay sa kanila upang magtatag ng mga relasyon. Tulad ng anumang programmable, ang OODB ay nagbibigay ng environment development ng application at isang patuloy na repository na handa para sa pagsasamantala. Nag-iimbak at nagmamanipula ito ng impormasyon na maaaring i-digitize sa anyo ng mga bagay, nagbibigay ng mabilis na pag-access at nagbibigay ng mahusay na mga kakayahan sa pagproseso.
Mga pangunahing konsepto na ginamit sa isang object-oriented database:
- object identity;
- uri ng tagabuo;
- pagkatugma sa wika;
- type hierarchies at inheritance;
- pagproseso ng mga kumplikadong bagay;
- polymorphism at overloading ng operator;
- lumilikha ng mga bersyon.
Upang ganap na maisaalang-alang ang lahat ng aspetong nagpapakilala sa isang object-oriented database, mahalagang tandaan ang lahat ng mahahalagang object paradigms:
- Ang Encapsulation ay isang property na nagbibigay-daan sa iyong itago ang impormasyon para sa iba pang mga bagay, sa gayon ay maiiwasan ang maling pag-access o mga salungatan.
- Ang inheritance ay isang property kung saan namamana ng mga object ang gawi sa isang class hierarchy.
- Ang Polymorphism ay isang pag-aari ng isang operasyon kung saan maaari itong mailapatiba't ibang uri ng mga bagay.
- Ang interface o lagda ng isang operasyon ay kinabibilangan ng pangalan at mga uri ng data ng mga argumento o parameter nito.
- Ang pagpapatupad o paraan ng isang operasyon ay tinukoy nang hiwalay at maaaring baguhin nang hindi naaapektuhan ang interface. Ang mga application ng user ay maaaring gumana sa data sa pamamagitan ng pagtawag sa mga tinukoy na operasyon sa pamamagitan ng kanilang mga pangalan at argumento, hindi alintana kung paano ito ipinatupad.
Mga klase at functionality
Kapag isinasaalang-alang ang konsepto ng mga klase sa OODB, kinakailangang makilala ang mga terminong "klase" at "uri". Ang isang uri ay ginagamit upang ilarawan ang isang hanay ng mga bagay na may katulad na pag-uugali. Sa ganitong kahulugan, depende ito sa kung anong mga operasyon ang maaaring tawagin sa bagay. Ang isang klase ay isang koleksyon ng mga bagay na may parehong panloob na istraktura, kaya tinutukoy nito ang isang pagpapatupad, habang ang isang uri ay naglalarawan kung paano ito gamitin.
Ang terminong instantiation ay tumutukoy sa katotohanan na ang instantiation ng isang klase ay maaaring gamitin upang makabuo ng isang set ng mga bagay na may parehong istraktura at pag-uugali tulad ng itinakda ng klase.
Ang isang tampok na napakahalaga para sa ebolusyon ng mga bagay ay ang maaari nitong baguhin ang klase nito, kabilang ang mga katangian at pagpapatakbo, habang pinapanatili ang pagkakakilanlan. Mangangailangan ito ng mekanismo para pangasiwaan ang resultang semantic integrity.
Ang pagmamana ng object-oriented database ng isang organisasyon ay nagbibigay-daan sa isang klase na tukuyin bilang isang subclass ng isang umiiral nang superclass. Ito ay magmamana ng lahat ng mga katangian at pamamaraan mula sa huli at maaaring opsyonal na tukuyinsariling. Ang konseptong ito ay isang mahalagang mekanismo para suportahan ang muling paggamit. Ang parehong mga bahagi ng istraktura ng dalawang magkaibang mga klase ay maaari lamang tukuyin nang isang beses sa isang karaniwang superclass, kaya mas kaunting code ang isusulat. Mayroong ilang mga system na nagpapahintulot sa isang klase na maging isang subclass ng higit sa isang superclass. Ang feature na ito ay tinatawag na multiple inheritance bilang kabaligtaran sa single inheritance.
Halimbawa ng object-oriented database
Kadalasan ay kapaki-pakinabang ang paggamit ng parehong pangalan para sa iba't ibang paraan ng media superclass mula sa mga klase ng larawan at video. Maraming mga file ang maaaring matingnan ng iba't ibang mga manonood. Kadalasan kailangan nilang tingnan ang lahat ng mga larawan at video gamit ang "view" na paraan, at dapat na ilunsad ang naaangkop na programa. Kapag tinawag ang function at naipasa ang isang link sa video, ilulunsad ang media player. Upang ipatupad ang tampok na ito, una sa lahat, kinakailangan upang tukuyin ang "pagtatanghal" na operasyon sa karaniwang superclass ng media mula sa mga klase ng larawan at video. Ang bawat isa sa mga subclass ay muling tinutukoy ang operasyon ng paghahanap para sa kanilang mga partikular na pangangailangan. Nagreresulta ito sa iba't ibang pamamaraan na may parehong pangalan ng operasyon. Sa kasong ito, ang paggamit ng function na ito ay may mahalagang bentahe.
OoDB structure
Ang object-oriented na paradigm ay nakabatay sa encapsulation ng data at code na nauugnay sa bawat object sa isang module. Sa konsepto, ang lahat ng mga pakikipag-ugnayan sa pagitan nito at ng iba pang bahagi ng system ay isinasagawa gamit ang mga mensahe. Kaya ang interfacesa pagitan ng mga ito ay tinutukoy ng pinahihintulutang hanay.
Sa pangkalahatan, ang bawat bagay ay nauugnay sa isang set:
- Mga variable na naglalaman ng object data at tumutugma sa mga attribute ng ER model.
- Mga mensaheng tinutugunan niya. Ang bawat isa ay maaaring may mga parameter o wala, isa o higit pa.
- Mga pamamaraan, ang bawat isa ay isang code na nagpapatupad ng mga mensahe at nagbabalik ng halaga bilang tugon dito.
Ang Messaging sa isang OO environment ay hindi nagpapahiwatig ng paggamit ng pisikal na SMS sa mga computer network. Sa kabaligtaran, ito ay tumutukoy sa pagpapalitan ng mga kahilingan sa pagitan ng mga bagay, anuman ang tamang mga detalye ng kanilang pagpapatupad. Minsan ang isang expression ay tumatawag ng isang paraan upang ma-trigger ang katotohanan na ang isang mensahe ay naipadala sa isang bagay, at ginagamit ang pagpapatupad ng kaukulang pamamaraan.
Object identity
Ang object-oriented database system ay nagbibigay ng natatanging pagkakakilanlan para sa bawat independiyenteng bagay na nakaimbak sa database. Karaniwan itong ipinapatupad gamit ang isang system na binuo ng natatanging object identifier o OID. Ang halaga ng OID ay hindi nakikita ng panlabas na user, ngunit ginagamit ito ng system sa loob upang pamahalaan ang mga link sa pagitan ng mga bagay.
Ang pangunahing katangian ng isang OID ay ang pagiging hindi nababago. Ang halaga ng OID para sa isang partikular na bagay ay hindi dapat magbago. Pinapanatili nito ang pagkakakilanlan ng totoong mundo na kinakatawan. Mas gusto din na ang bawat OID ay ginagamit nang isang beses, kahit na ito ay tinanggal mula sa database, ang OID nito ay hindi dapat italaga sa iba. Madalas ding itinuturing na hindi naaangkop na ibase ito sa isang pisikalang address ng bagay sa imbakan, dahil ang muling pagsasaayos ng mga ito sa database ay maaaring magbago ng OID. Gayunpaman, ginagamit ng ilang system ang pisikal na address bilang OID upang mapataas ang kahusayan ng pagkuha ng mga bagay. Ang isang object-oriented na framework ay awtomatikong nagpapataw ng relational na mga hadlang, kadalasang mas naaangkop: domain, key, object integrity, at referential integrity.
Tatlong pangunahing konstruktor
Sa OODB, ang mga value o estado ng mga kumplikadong bagay ay maaaring gawin mula sa iba gamit ang mga constructor ng ilang uri. Ang isang paraan upang kumatawan sa kanila ay ang isipin ang bawat isa bilang isang triplet (i, c, v), kung saan ang i ay ang natatanging identifier (OID) ng object, c ay ang constructor, iyon ay, isang pointer sa kung paano ang halaga ng bagay ay nilikha, at ang v ay ang halaga o estado ng bagay. Maaaring may maraming constructor depende sa data model at sa OO system.
Tatlong pangunahing object-oriented database constructors:
- atoms;
- tuples;
- sets.
Iba pang mas karaniwang gamit ay mga listahan at chart. Mayroon ding D domain, na naglalaman ng lahat ng mga pangunahing halaga ng atomic na direktang magagamit sa system. Karaniwang kasama sa mga ito ang mga integer, totoong numero, string ng character, petsa, at anumang iba pang uri ng data na direktang pinangangasiwaan ng system. Parehong kasama ang istruktura ng mga bagay at pagpapatakbo sa mga kahulugan ng klase.
Pagiging tugma sa mga programming language
Ang mga pangunahing konsepto ng object-oriented na database ay ginagamit sabilang mga tool sa disenyo at na-codify para gumana sa database.
May ilang posibleng mga wika kung saan maaaring isama ang mga konseptong ito:
- Pagpapalawak ng wika para sa pagproseso ng data tulad ng SQL sa pamamagitan ng pagdaragdag ng mga kumplikadong uri at OOP. Nagbibigay ang mga system ng object-oriented na extension sa relational system, na tinatawag na object-oriented relational system.
- Paggamit ng umiiral nang object-oriented na programming language at pagpapalawak nito upang gumana sa mga database. Ang mga ito ay tinatawag na persistent programming language at pinapayagan ang mga developer na gumana nang direkta sa data nang hindi kinakailangang dumaan sa isang data processing language tulad ng SQL. Ang mga ito ay tinatawag na persistent dahil ang data ay patuloy na umiiral pagkatapos ng pagtatapos ng program na lumikha nito.
Kapag nagpapasya kung aling opsyon ang gagamitin, tandaan na ang mga paulit-ulit na wika ay may posibilidad na maging makapangyarihan, at medyo madaling gumawa ng mga pagkakamali sa programming na nakakasira sa database. Ang pagiging kumplikado ng mga wika ay nagpapahirap sa mga awtomatikong pag-optimize ng mataas na antas, tulad ng pagbabawas ng disk I/O. Sa maraming mga application, ang kakayahang gumawa ng mga deklaratibong query ay mahalaga, ngunit ang patuloy na mga wika ay kasalukuyang hindi pinapayagan ang mga naturang query nang walang problema.
Hierarchy ng mga uri ng mana
Object-oriented database schema ay karaniwang nangangailangan ng malaking bilang ng mga klase. Gayunpaman, ang ilang mga klase ay magkatulad sa isa't isa. Upang payagan ang isang direktang representasyon ng mga pagkakatulad sa pagitan ng mga ito, kailangan mong ilagaysila sa isang hierarchy ng mga espesyalisasyon. Ang konseptong ito ay katulad ng mga modelo ng ER. Ang mga espesyalisasyon ng klase ay tinatawag na mga subclass, na tumutukoy sa mga karagdagang katangian at pamamaraan para sa isang umiiral na klase. Ang mga bagay na ginawa gamit ang mga subclass ay namamana ng lahat mula sa magulang. Ang ilan sa mga minanang katangiang ito ay maaaring mismong hiniram sa mga nakatataas sa hierarchy.
Itinuring na kumplikado ang mga bagay dahil nangangailangan ang mga ito ng malaking espasyo ng storage at hindi bahagi ng mga karaniwang uri ng data na karaniwang inaalok ng Object Oriented Database Management (OODBS). Dahil ang laki ng mga bagay ay makabuluhan, ang SOOBMS ay maaaring makatanggap ng isang bahagi ng isang bagay at ibigay ito sa isang aplikasyon bago makuha ang buong bagay. Maaari din itong gumamit ng mga paraan ng buffer at cache upang makakuha ng mga bahagi ng isang bagay nang maaga, bago ma-access ng isang application ang mga ito.
Binibigyang-daan ng OODB ang mga user na lumikha ng mga bagong uri na kinabibilangan ng parehong istraktura at mga operasyon, sa kasong ito ang extensible type system. Maaari kang lumikha ng mga aklatan ng mga bagong uri sa pamamagitan ng pagtukoy sa kanilang istraktura at pagpapatakbo. Marami sa kanila ang maaaring mag-imbak at tumanggap ng malaking structured object sa anyo ng mga string at character o bits, na ipinapasa "as is" sa application program para sa interpretasyon.
Ang pamamaraan ay maaaring direktang ma-access ang mga katangian ng target na bagay sa pamamagitan ng pangalan, kabilang ang anumang minana mula sa mga klase ng magulang, ngunit dapat na ma-access ang mga katangian ng iba pang mga bagay na may pangalawang signal. Binibigyang-daan ka ng konsepto na iugnay ang parehong pangalan o simbolo ng operatordalawa o higit pang magkakaibang pagpapatupad nito, depende sa uri ng mga bagay kung saan ito nalalapat.
Building Apps
Maraming database application na gumagamit ng mga OO system ay nangangailangan ng maraming bersyon ng parehong bagay. Karaniwan, ang mga aktibidad sa pagpapanatili ay inilalapat sa isang software system habang nagbabago ang kanilang mga kinakailangan, at kinabibilangan ng pagbabago ng ilan sa mga module ng pag-develop at pagpapatupad. Kung tumatakbo na ang system at kung kailangang baguhin ang isa o higit pang mga module, dapat gumawa ang developer ng bagong bersyon ng bawat isa sa kanila sa pamamagitan ng paggawa ng mga pagbabago.
Tandaan na maaaring mayroong higit sa dalawang bersyon ng isang bagay, kung sakaling dalawa ang kailangan bilang karagdagan sa orihinal na module. Ang mga sariling bersyon ng parehong module ng software ay maaaring i-update sa parehong oras. Ito ay tinatawag na parallel object-oriented database design. Gayunpaman, palaging dumarating ang punto kung saan kailangan nilang pagsamahin upang maisama ng hybrid OODB ang mga pagbabagong ginawa upang magkatugma ang mga ito.
Object-oriented na kundisyon
Ang lahat ng mga computer system ay dapat may mga katangian ng kanilang arkitektura upang isaalang-alang. Halimbawa, ang isang sistema ay dapat may mga talahanayan upang ituring na relational. Ang OODB ay walang pagbubukod at naglalaman ng ilang pangunahing katangian ng object architecture. Gayunpaman, sa totoong mundo, marami sa mga katangiang ito ang tinatalakay at ang ilan, tulad ng maramihang pamana, ay itinuturing na mga pagpapahusay sa object-oriented na modelo ng database kaysa sabilang bahagi ng baseline. Halimbawa, sa object-oriented na wika na Smalltalk, hindi suportado ang multiple inheritance, kahit na ito ay itinuturing na bahagi ng object architecture.
Mga pamamaraan para sa isang klase ay tumutukoy sa isang hanay ng mga operasyon na maaaring isagawa sa isang bagay. Halimbawa, kapag inilapat ito sa isang bagay, nagbabalik ito ng isang halaga o nagsasagawa ng ilang operasyon upang i-update ang mga halaga. Minsan hindi ito ibinabalik ng mga pamamaraan. Kung ang paraan ay idinisenyo upang i-update ang bilang ng mga pasahero para sa isang sasakyan, walang ibabalik na halaga, ngunit ang elemento ng data sa target ay babaguhin ito.
Ang Objects ay isang pangunahing konsepto sa OODB. Sa esensya, ang mga bagay ay isang abstract na representasyon ng mga bagay sa totoong mundo na nakaimbak dito. Ang isang bagay ay isang instance ng isang klase sa kahulugan na ito ay hindi kasama sa kahulugan nito.
Maaari mong isipin ang isang bagay bilang isang self-contained na pakete na may tatlong bahagi:
- Sariling personal na impormasyon, mga halaga ng data.
- Mga pribadong pamamaraan na magmamanipula ng mga halaga sa pamamagitan ng kahulugan ng klase.
- Buksan ang interface upang ang bagay na ito ay maaaring makipag-ugnayan sa iba.
mga halimbawa ngOODB
Ang paggamit ng OODB ay nagpapasimple sa konseptwalisasyon dahil mas natural na kumatawan sa impormasyong kailangang itabi. Upang i-modelo ang istraktura o lohika ng isang database, ang paggamit ng mga class diagram ay nagbibigay-daan sa iyo upang ipakilala ang mga klase sa kanilang mga istrukturang relasyon at mana. Upang maging modelo ng bahagi ng dinamika, pakikipag-ugnayan atpag-uugali sa pagitan ng mga bagay, isang sequence diagram ang gagamitin upang kumatawan sa pakikipag-ugnayan sa pagitan ng mga bagay na matatagpuan sa isang pansamantalang relasyon, na naglalarawan sa mga posibleng estado upang mahanap ang mga ito dahil sa binagong estado pagkatapos mangyari ang kaganapan.
Ang isang halimbawa ng object-oriented database ay ipinapakita sa ibaba.
Mayroon silang pangalan at panghabambuhay, na maaaring pansamantala o permanente. Ang OODB key ay ang kakayahang ibigay nila sa developer na tukuyin kung gaano karaming mga istruktura at operasyon ang ilalapat sa kanila. Mayroong kakayahang umangkop at suporta para sa paghawak ng mga kumplikadong uri ng data. Maaari kang lumikha ng mga klase at subclass, halimbawa, ang client base ay maaaring magkaroon ng isang subclass ng link ng kliyenteng ito, at ito ay magmamana ng lahat ng mga katangian at katangian ng orihinal na klase, ang diskarte na ito ay nagbibigay-daan sa iyo upang mabilis at flexible na magproseso ng kumplikadong data.