Ob'ekt-relyatsion impedansning mos kelmasligi - Object–relational impedance mismatch

The ob'ekt-munosabat impedansining mos kelmasligi a bo'lganida tez-tez uchraydigan kontseptual va texnik qiyinchiliklar to'plamidir relyatsion ma'lumotlar bazasini boshqarish tizimi (RDBMS) ga an dasturida yozilgan dastur dasturi (yoki bir nechta amaliy dasturlar) xizmat qiladi ob'ektga yo'naltirilgan dasturlash tili yoki uslub, ayniqsa ob'ektlar yoki sinf ta'riflari bo'lishi kerak xaritada ko'rsatilgan relyatsion sxema bilan aniqlangan ma'lumotlar bazasi jadvallariga.

Atama ob'ekt-munosabat impedansining mos kelmasligi dan olingan elektrotexnika muddat impedansni moslashtirish.

Noto'g'ri

Ob'ektlar (misollar) bir-biriga murojaat qilishadi va shuning uchun grafik matematik ma'noda (tsikl va tsikllarni o'z ichiga olgan tarmoq). O'zaro munosabatlar sxemalari, aksincha, jadvalli va asoslangan munosabat algebra, bu bir-biriga bog'langan heterojen karterlarni belgilaydi (ma'lumotlar maydonlarini har bir maydon uchun har xil turlari bilan "qatorga" guruhlash).

Ob'ektga yo'naltirilgan tushunchalar

Kapsülleme

Ob'ektga yo'naltirilgan dasturlar natijada yuzaga keladigan texnikalar bilan yaxshi ishlab chiqilgan kapsulalangan ob'ektlar uning ichki vakolatxonasi yashirin bo'lishi mumkin. Ob'ektga yo'naltirilgan doirada, berilgan ob'ektning asosiy xususiyatlari ob'ekt bilan bir qatorda amalga oshirilgan interfeysdan tashqarida hech qanday interfeysga duch kelmasligi kutilmoqda. Biroq, ko'pchilik ob'ekt-relyatsion xaritalash ob'ektning mazmunini, ob'ektni amalga oshirish belgilay olmaydigan interfeys bilan o'zaro aloqada bo'lishini aniqlash. Shunday qilib, ushbu ob'ekt-relyatsion xaritalash ob'ektning inkapsulyatsiyasini buzadi, chunki ko'plab ob'ekt-relyatsion xaritachilar avtomatik ravishda ma'lumotlar bazalari ustunlariga mos keladigan umumiy maydonlarni hosil qilishadi, buning o'rniga bir nechta ramkalar metaprogramma usullaridan foydalanadi, shuning uchun inkassatsiya buzilishining oldini oladi.

Kirish imkoniyati

Relyatsion fikrlashda "xususiy" va "ommaviy" kirish ehtiyojga nisbatan. Ob'ektga yo'naltirilgan (OO) modelda bu ma'lumotlar holatining mutlaq xarakteristikasi. Relyatsion va OO modellarida nisbiylik va tasniflar va xususiyatlarning mutloqligi bilan ziddiyatlar mavjud.

Interfeys, sinf, meros va polimorfizm

Ob'ektga yo'naltirilgan paradigma ostida ob'ektlar mavjud interfeyslar birgalikda ushbu ob'ekt ichki qismiga yagona kirishni ta'minlaydi. Boshqa tomondan, relyatsion model munosabatlarning o'zgaruvchilardan foydalanadi (qarashlar ) yaxlitlikni ta'minlash uchun turli xil istiqbollar va cheklovlarni taqdim etish. Xuddi shunday, uchun muhim OOP tushunchalari sinflar ob'ektlar, meros olish va polimorfizm, ma'lumotlar bazasining relyatsion tizimlari tomonidan qo'llab-quvvatlanmaydi.

Relyatsion tushunchalarga xaritalash

Ma'lumotlar bazasi jadvallari bog'langan bo'lsa, munosabat tushunchalari va ob'ektga yo'naltirilgan tushunchalar o'rtasida to'g'ri xaritani tuzish mumkin[qo'shimcha tushuntirish kerak ] ga uyushmalar ichida topilgan ob'ektga yo'naltirilgan tahlil.

Ma'lumot turlarining farqlari

Mavjud munosabat va OO tillari o'rtasidagi katta nomuvofiqlik bu tizim turi farqlar. Relyatsion model mos yozuvlar atributlarini (yoki) qat'iyan taqiqlaydi ko'rsatgichlar ), OO tillari esa mos yozuvlar xatti-harakatlarini qabul qiladi va kutadi. Skalar turlari va ularning operatori semantik modellar o'rtasida juda katta farq qilishi va xaritada muammolarni keltirib chiqarishi mumkin.

Masalan, ko'pchilik SQL tizimlarni qo'llab-quvvatlash mag'lubiyat turlicha to'qnashuvlar va cheklangan maksimal uzunliklar (ochiq matn turlari ishlashga to'sqinlik qiladi), aksariyat OO tillari taqqoslashni faqat argument sifatida qabul qiladi tartiblarni tartiblash va satrlar ichki xotirada mavjud bo'lgan o'lchamga ega. Keyinchalik nozik, ammo shunga o'xshash misol shundaki, SQL tizimlari ko'pincha orqada qolishni e'tiborsiz qoldiradilar oq bo'shliq taqqoslash uchun satrda, OO string kutubxonalari esa yo'q. Odatda OO tilidagi boshqa ibtidoiy turlarning mumkin bo'lgan qiymatlarini cheklash masalasi sifatida yangi ma'lumotlar turlarini qurish mumkin emas.

Strukturaviy va yaxlitlik farqlari

Yana bir nomuvofiqlik qarama-qarshi modellarning tizimli va yaxlit jihatlaridagi farqlar bilan bog'liq. OO tillarida ob'ektlar boshqa narsalardan tuzilishi mumkin - ko'pincha yuqori darajada - yoki umumiy ta'rifga ixtisoslashgan bo'lishi mumkin. Bu relyatsion sxemalar bo'yicha xaritani osonroq bajarishi mumkin. Buning sababi shundaki, relyatsion ma'lumotlar global, buzilmagan munosabatlar o'zgaruvchilarining nomlangan to'plamida ifodalanishga intiladi. O'zaro munosabatlar, to'plamlar koreyslar barchasi bir xil sarlavhaga mos keladi (qarang relefli hisoblash ) OO tillarida ideal hamkasbiga ega emas. OO tillaridagi cheklovlar odatda bunday deb e'lon qilinmaydi, lekin ichki ma'lumotlar bilan ishlaydigan kod atrofidagi himoya mantig'ini ko'taradigan istisno sifatida namoyon bo'ladi. Boshqa tomondan, relyatsion model talab qiladi deklarativ skalar turlari, atributlar, munosabat o'zgaruvchilari va umuman ma'lumotlar bazasidagi cheklovlar.

Manipulyativ farqlar

Semantik farqlar, ayniqsa, qarama-qarshi modellarning manipulyativ tomonlarida yaqqol ko'rinadi. Relyatsion model ma'lumotlarning so'rovi va manipulyatsiyasida foydalanish uchun ichki, nisbatan kichik va aniq belgilangan ibtidoiy operatorlar to'plamiga ega, OO tillari odatda so'rov va manipulyatsiyani maxsus qurilgan yoki quyi darajadagi, vaziyat va jismoniy kirish orqali boshqaradi. - yo'lga xos majburiy operatsiyalar. Ba'zi OO tillari deklarativ so'rovni qo'llab-quvvatlaydi tillar, lekin OO tillari odatda ro'yxatlar bilan shug'ullanishi va ehtimol xash jadvallar, manipulyatsion ibtidoiylar, albatta, dan ajralib turadi o'rnatilgan -relyatsion model asosidagi operatsiyalar.[iqtibos kerak ]

Transaktsion farqlar

Hamjihatlik va bitimlar jihatlari ham sezilarli darajada farq qiladi. Jumladan, bitimlar, ma'lumotlar bazalari tomonidan bajariladigan eng kichik ish birligi, relyatsion ma'lumotlar bazalarida OO tillaridagi sinflar bajaradigan har qanday operatsiyalarga qaraganda ancha katta. Relyatsion ma'lumotlar bazalaridagi operatsiyalar dinamik ravishda chegaralangan o'zboshimchalik bilan ma'lumotlar manipulyatsiyasi to'plamlari bo'lib, OO tilidagi operatsiyalarning donadorligi odatda ibtidoiy yozilgan maydonlarga individual topshiriqlar darajasida bo'ladi. Umuman olganda, OO tillarida izolyatsiya yoki chidamlilik analogi yo'q, shuning uchun atomiklik va izchillik faqat ushbu ibtidoiy turlarning maydonlariga yozishda ta'minlanadi.

Empedans nomuvofiqligini hal qilish

Ob'ektga yo'naltirilgan dasturlar uchun impedansning mos kelmasligi muammosi atrofida ishlash ma'lum mantiqiy tizimlardagi farqlarni tan olishdan boshlanadi. Keyinchalik mos kelmaslik minimallashtiriladi yoki qoplanadi.[1]

Muqobil arxitektura

Ob'ekt-munosabat impedansining mos kelmasligi muammosi OO va ma'lumotlar bazalari o'rtasida universal muammo emas. Nomidan ko'rinib turibdiki, bu impedans muammosi faqat paydo bo'ladi relyatsion ma'lumotlar bazalari. Bu kabi muammoning eng keng tarqalgan echimi bu kabi muqobil ma'lumotlar bazasidan foydalanishdir NoSQL yoki XML ma'lumotlar bazasi.

Minimallashtirish

Qurishga urinishlar bo'lgan ob'ektga yo'naltirilgan ma'lumotlar bazasini boshqarish tizimlari (OODBMS), bu impedans mos kelmasligi muammosidan qochadi. Ular relyatsion ma'lumotlar bazalariga qaraganda amalda kamroq muvaffaqiyatga erishdilar, ammo qisman ma'lumotlar modeli uchun asos bo'lgan OO tamoyillarining cheklanganligi bilan bog'liq.[2] Kabi tushunchalar orqali OO tillarining ma'lumotlar bazasiga o'xshash imkoniyatlarini kengaytirish bo'yicha tadqiqotlar o'tkazildi tranzaksiya xotirasi.

Impedans mos kelmasligi muammosining umumiy echimlaridan biri bu domen va ramka mantig'ini qatlamlashdir. Ushbu sxemada OO tili ko'proq statik xaritalashga emas, balki ish vaqtida ma'lum munosabat jihatlarini modellashtirish uchun ishlatiladi. Ushbu usulni qo'llaydigan ramkalar, odatda, "ma'lumotlar to'plami" tarkibiy qismidagi "satr" yoki umumiy "shaxslar misoli" klassi sifatida, shuningdek, munosabatlar uchun analogga o'xshash koptok uchun analogga ega bo'ladi. Ushbu yondashuvning afzalliklari quyidagilarni o'z ichiga olishi mumkin.

  • Domen ma'lumotlarini tashish, taqdim etish va tasdiqlash atrofida ramkalar va avtomatlashtirishni yaratish uchun to'g'ri yo'llar.
  • Kichikroq kod hajmi; tezroq kompilyatsiya qilish va yuklash vaqtlari.
  • Uchun qobiliyat sxema dinamik ravishda o'zgartirish.
  • Ism-bo'shliq va semantik mos kelmaslik masalalaridan qochadi.
  • Ekspressiv cheklovlarni tekshirish
  • Hech qanday murakkab xaritalash kerak emas

Kamchiliklarga quyidagilar kiradi:

  • Statik turdagi "xavfsizlik" tekshiruvlarining etishmasligi. Ba'zan yozilgan kiruvchi vositalar buni yumshatish usullaridan biri sifatida foydalaniladi.
  • Ishlash vaqti va kirishning mumkin bo'lgan ishlash qiymati.
  • Kabi noyob OO jihatlaridan tabiiy ravishda foydalana olmaslik polimorfizm.

Kompensatsiya

Ning aralashmasi nutq darajalari OO dastur kodida muammolar mavjud, ammo ularni qoplash uchun ishlatiladigan ba'zi bir keng tarqalgan mexanizmlar mavjud. Eng katta muammo - bu domen ma'lumotlari modellashtirilgan nutq darajasida ramka ko'magi, ma'lumotlar manipulyatsiyasi va taqdimot modellarini avtomatlashtirish. Buni hal qilish uchun, aks ettirish va / yoki kod yaratish ishlatilgan. Ko'zgu kodni (sinflarni) ma'lumotlar sifatida ko'rib chiqishga imkon beradi va shu bilan ma'lumotlarni tashish, taqdim etish, yaxlitlik va boshqalarni avtomatlashtirishni ta'minlaydi. Generatsiya muammolarni echimini topadigan va infratuzilmani qo'llab-quvvatlaydigan kod yaratish vositalari yoki meta-dasturlash tillari uchun ma'lumotlar kiritish sifatida ob'ekt tuzilmalariga murojaat qilish orqali hal qiladi. Ushbu ikkala sxema hanuzgacha ushbu nutq darajalari birlashadigan ba'zi bir anomaliyalarga duch kelishi mumkin. Masalan, yaratilgan ob'ekt sinflari odatda domenni xaritaga soluvchi xususiyatlarga (masalan, ism, manzil), shuningdek davlat boshqaruvi va boshqa ramka infratuzilmasini (masalan, IsModified) ta'minlovchi xususiyatlarga ega bo'ladi.

Bahs

Bu tomonidan bahs qilingan Kristofer J. Sana va boshqalar, albatta relyatsion DBMS bunday muammo tug'dirmaydi,[3][4][5] kabi domenlar va sinflar mohiyatan bitta narsa. Sinflar va relyatsion sxemalar orasidagi tabiiy xaritalash - bu dizayndagi asosiy xato [6]; va ma'lumotlar bazasi jadvali (aloqasi) ichidagi individual naychalarni sub'ektlar o'rtasidagi munosabatlarni o'rnatish deb hisoblash kerak; murakkab shaxslarning o'zlari uchun vakolatxonalar sifatida emas. Biroq, bu nuqtai nazar ob'ektga yo'naltirilgan dasturlashning ta'sirini va rolini kamaytirishga intilib, uni maydon maydonini boshqarish tizimidan ko'proq foydalanadi.

Impedansning mos kelmasligi - bu dasturlashda domen ob'ektlari va foydalanuvchi interfeysi. Operatorlar, menejerlar va boshqa dasturchilarga ma'lumotlar bazasidagi yozuvlarga kirish va ularni boshqarish uchun ruxsat berish uchun murakkab foydalanuvchi interfeyslari ko'pincha ma'lumotlar bazasining turli xil atributlari (ism va turdan tashqari) tabiati to'g'risida yaqin bilimlarni talab qiladi. Xususan, foydalanuvchi interfeyslarini loyihalashtirish (foydalanuvchi interfeysi noqonuniy operatsiyalarni oldini olishga imkon beradigan) foydalanuvchi interfeyslarini loyihalashda (oxirgi foydalanuvchi samaradorligi nuqtai nazaridan) yaxshi amaliyot deb hisoblanadi. ma'lumotlar bazasini cheklash buzilishi) kirishdan; Buning uchun relyatsion sxemada mavjud bo'lgan juda ko'p mantiq talab qilinadi takrorlangan kodda.

Ma'lumotlar bazasi sxemasida ko'rsatilgan ba'zi bir mantiqiy shakllardan (masalan, ma'lumotlarning yaxlitligi cheklovlari kabi) ba'zi bir kodlarni ishlab chiqish tizimlari foydalanishi mumkin, shuning uchun bunday masalalar ishda yozilgan maxsus kod emas, balki kutubxona tartib-qoidalari orqali umumiy va standart tartibda ko'rib chiqiladi. - holat asosida.

Bu bahs qilingan SQL, juda cheklangan domen turlarining to'plami (va boshqa taxmin qilingan kamchiliklar) tufayli ob'ekt va domenni modellashtirish qiyinlashadi; va SQL ma'lumotlar bazasi va amaliy dastur o'rtasida (ob'ektga yo'naltirilgan uslubda yozilgan yoki yozilmagan) juda zararli va samarasiz interfeysni tashkil etadi. Biroq, SQL hozirda bozorda keng tarqalgan yagona ma'lumotlar bazasi tili hisoblanadi[iqtibos kerak ]; sotuvchiga xos so'rovlar tillaridan foydalanish mumkin bo'lmagan holatlarda yomon amaliyot sifatida qaraladi. Kabi boshqa ma'lumotlar bazasi tillari Biznes tizimi 12 va D darsligi taklif qilingan; ammo ularning hech biri MBB sotuvchilari tomonidan keng qo'llanilmagan.

Oracle va Microsoft SQL Server singari asosiy "ob'ekt-munosabat" DBMS-larining joriy versiyalarida yuqoridagi nuqta muammo bo'lishi mumkin. Ushbu dvigatellar yordamida ma'lum bir ma'lumotlar bazasining ishlashi zamonaviy OO tilida (Oracle uchun Java va SQL Server uchun Microsoft .NET tili) yozilgan saqlangan kod (funktsiyalar va protseduralar) orqali o'zboshimchalik bilan kengaytirilishi mumkin va bu funktsiyalarni chaqirish mumkin. o'z navbatida SQL bayonotlarini shaffof shaklda: ya'ni foydalanuvchi ushbu funktsiyalar / protseduralar dastlab ma'lumotlar bazasi dvigatelining bir qismi emasligini bilmaydi va qiziqtirmaydi. Dasturiy ta'minotni ishlab chiqishda zamonaviy paradigmalar to'liq qo'llab-quvvatlanadi: shuning uchun bir nechta ma'lumotlar bazasi sxemalarida qayta ishlatilishi mumkin bo'lgan kutubxona tartib-qoidalarini yaratish mumkin.

Ushbu ishlab chiqaruvchilar OB-tilidagi integratsiyani DBMS-ning orqa qismida qo'llab-quvvatlashga qaror qilishdi, chunki ular ISO SQL-99 qo'mitasining SQL-ga protsessual konstruktsiyalarni qo'shishga urinishlariga qaramay, SQL-da hech qachon boy kutubxonalar to'plami va ma'lumotlar tuzilmalari bo'lmaydi. bugungi dastur dasturchilari odatdagidek qabul qilmoqdalar va asosiy SQL tilini kengaytirishga urinishdan ko'ra, ularni iloji boricha to'g'ridan-to'g'ri ishlatish maqsadga muvofiqdir. Binobarin, hozirda "dasturlarni dasturlash" va "ma'lumotlar bazasini boshqarish" o'rtasidagi farq xiralashgan: cheklashlar va tetikleyiciler kabi funktsiyalarni ishonchli amalga oshirish, ko'pincha DBA / OO-dasturlashning ikki tomonlama qobiliyatiga ega bo'lgan shaxsni yoki ushbu ko'nikmalarni birlashtirgan shaxslar o'rtasida sheriklikni talab qilishi mumkin. . Bu haqiqat quyida keltirilgan "javobgarlik taqsimoti" masalasiga ham tegishli.

Ba'zilar, bu tortishuvning sababi shundaki, quyidagilarga ishora qilmoqdalar: (1) RDBMS'lar hech qachon ob'ektni modellashtirishni osonlashtirmoqchi emas edi va (2) SQL odatda faqat "yo'qotish" yoki "samarasiz" interfeys sifatida qaralishi kerak. RDBMSlar ishlab chiqilmagan echimga erishmoqchi bo'lgan til. SQL o'zi uchun mo'ljallangan narsani, ya'ni so'rovlar, saralash, filtrlash va katta hajmdagi ma'lumotlarni saqlash uchun juda samarali. Ba'zilar qo'shimcha ravishda ta'kidlashlaricha, OO tilining funksionalligini orqa tomonga qo'shilishi yomon me'moriy amaliyotni osonlashtiradi, chunki u yuqori darajadagi dastur mantig'ini ma'lumotlar sathiga kiritadi, RDBMS uchun antitetik.

Bu erda davlatning "kanonik" nusxasi joylashgan. Ma'lumotlar bazasi modeli odatda ma'lumotlar bazasini boshqarish tizimi korxonaga tegishli bo'lgan yagona vakolatli ombor; ariza berish dasturi tomonidan saqlanadigan bunday holatlarning har qanday nusxalari - bu vaqtinchalik nusxalar (agar ma'lumotlar bazasi yozuvlari keyinchalik bitim bilan o'zgartirilgan bo'lsa, eskirgan bo'lishi mumkin). Ob'ektga yo'naltirilgan ko'plab dasturchilar o'zlarining xotiradagi tasvirlarini kanonik ma'lumotlar sifatida ko'rib chiqishni afzal ko'rishadi va ma'lumotlar bazasini qo'llab-quvvatlash do'koni va qat'iylik mexanizmi sifatida ko'rishadi.

Qarama-qarshiliklarning yana bir nuqtasi - dastur dasturchilari va o'rtasida mas'uliyatni to'g'ri taqsimlash ma'lumotlar bazasi ma'murlari (DBA). Odatda dastur kodiga o'zgartirishlar kiritilishi kerak (so'ralgan yangi xususiyat yoki funksiyani amalga oshirish uchun) ma'lumotlar bazasi ta'rifida tegishli o'zgarishlarni talab qiladi; aksariyat tashkilotlarda ma'lumotlar bazasini aniqlash DBA uchun javobgardir. Ma'lumotlar bazasi tizimini kuniga 24 soat saqlab turish zarurati tufayli ko'plab DBA'lar ma'lumotlar bazasi sxemalariga o'zgartirish kiritishni istamaydilar, chunki ular befoyda yoki ortiqcha deb hisoblashadi va ba'zi hollarda buni rad etishadi. Rivojlanayotgan ma'lumotlar bazalaridan foydalanish (ishlab chiqarish tizimlaridan tashqari) biroz yordam berishi mumkin; ammo yangi ishlab chiqilgan dastur "jonli efirga uzatilganda" DBA har qanday o'zgarishlarni tasdiqlashi kerak. Ba'zi dasturchilar buni murosasizlik deb bilishadi; ammo ma'lumotlar bazasi ta'rifidagi har qanday o'zgarishlar ishlab chiqarish tizimida xizmatni yo'qotishiga olib keladigan bo'lsa, DBA tez-tez javobgar bo'ladi - natijada, ko'plab DBA'lar dastur kodlarida dizayndagi o'zgarishlarni o'z ichiga olishni afzal ko'rishadi, bu erda dizayndagi nuqsonlar halokatli oqibatlarga olib kelishi mumkin emas. .

DBA va ishlab chiquvchilar o'rtasidagi funktsional bo'lmagan munosabatlarga ega bo'lgan tashkilotlarda, yuqoridagi masala o'zini ko'rsatmasligi kerak, chunki ma'lumotlar bazasi sxemasini o'zgartirish to'g'risida qaror faqat biznes ehtiyojlari bilan bog'liq emas: qo'shimcha ma'lumotlarning saqlanishi uchun yangi talab yoki masalan, muhim dasturning ishlash samaradorligini oshirish har ikkala sxemani o'zgartirishga olib keladi.

Falsafiy farqlar

OO va relyatsion modellar o'rtasidagi asosiy falsafiy farqlarni quyidagicha umumlashtirish mumkin:

  • Deklarativ va imperativ interfeyslar - munosabat tafakkuri ma'lumotni interfeys sifatida tutish emas, balki interfeys sifatida ishlatishga intiladi. Shunday qilib, dizayn falsafasida OO ning xulq-atvor moyilligidan farqli ravishda deklarativ moyilligi bor. (Ba'zi munosabat tarafdorlari murakkab xatti-harakatni ta'minlash uchun triggerlarni, saqlangan protseduralarni va boshqalarni ishlatishni taklif qilishadi, ammo bu umumiy nuqtai nazar emas.)
  • Sxema bog'liq - Ob'ektlar atributlari yoki unga kiruvchilarga ega bo'lgan "ota-ona sxemasi" ga rioya qilishlari shart emas, jadval satrlari esa ob'ekt sxemasiga amal qilishi kerak. Berilgan qator bitta va faqat bitta ob'ektga tegishli bo'lishi kerak. OOdagi eng yaqin narsa meros bo'lib, lekin u odatda daraxt shaklida va ixtiyoriydir. Vaqtinchalik ustunlarga ruxsat beruvchi dinamik ma'lumotlar bazasi tizimlari sxemani cheklab qo'yishi mumkin, ammo hozirda bunday tizimlar kamdan-kam uchraydi yoki ularni "munosabat" deb tasniflash savol tug'diradi.
  • Kirish qoidalari - relyatsion ma'lumotlar bazalarida atributlarga oldindan aniqlangan relyatsion operatorlar orqali kirish va o'zgartirish, OO esa har bir sinfga o'z holatini o'zgartirish interfeysi va amaliyotini yaratishga imkon beradi. OO ning "o'zini o'zi boshqaradigan ism" nuqtai nazari munosabat modeli ruxsat bermaydigan har bir ob'ektga mustaqillik beradi. Bu "mahalliy erkinlikka qarshi standartlar" munozarasi. OO relyatsion standartlar ekspresivlikni cheklaydi degan fikrni bildiradi, munosabat tarafdorlari esa qoidalarga rioya qilish matematikaga o'xshash mavhum fikrlash, yaxlitlik va dizayndagi izchillikka imkon beradi.
  • Otlar va fe'llarning o'zaro aloqasi - OO fe'llar (harakatlar) va amallar bajariladigan ismlar (shaxslar) o'rtasida qattiq bog'lanishni rag'batlantiradi. Natijada ikkala ism va fe'llarni o'z ichiga olgan mahkam bog'langan shaxs odatda a deb ataladi sinf, yoki OO tahlilida, a kontseptsiya. Aloqaviy dizaynlar, odatda, bunday qattiq assotsiatsiyalarda (munosabat operatorlaridan tashqarida) tabiiy yoki mantiqiy narsa yo'q deb o'ylamaydilar.
  • Ob'ekt identifikatori - ob'ektlar (o'zgarmas narsalardan tashqari), odatda, o'ziga xos o'ziga xos xususiyatga ega deb hisoblanadi; bir vaqtning o'zida bir xil holatga ega bo'lgan ikkita ob'ekt bir xil deb hisoblanmaydi. Boshqa tomondan, munosabatlarda bunday o'ziga xoslik tushunchasi yo'q. Ya'ni, ma'lumotlar bazasidagi yozuvlar uchun "o'ziga xoslik" ni dunyo miqyosida noyob foydalanish orqali to'qib chiqarish odatiy holdir nomzod kalitlari; ko'pchilik buni har qanday ma'lumotlar bazasi yozuvlari uchun kambag'al amaliyot deb biladi, ammo bu haqiqiy dunyo bilan birma-bir yozishmalarga ega emas. (Ob'ektlar singari, relyatsion, agar ular tashqi dunyoda identifikatsiyalash maqsadida mavjud bo'lsa, domen kalitlaridan foydalanishlari mumkin). Relyatsion tizimlar amalda identifikatsiyalashning "doimiy" va tekshiriladigan usullariga intiladi va qo'llab-quvvatlaydi, ob'ektni aniqlash usullari esa vaqtinchalik yoki vaziyatli bo'lib qoladi.
  • Normalizatsiya – O'zaro munosabatlarni normallashtirish amaliyotlar ko'pincha OO dizaynlari tomonidan e'tiborsiz qoldiriladi. Biroq, bu faqat OO ning o'ziga xos xususiyati o'rniga yomon odat bo'lishi mumkin. Muqobil ko'rinish - bu ob'ektlar to'plami, o'zaro bog'langan ko'rsatgichlar qandaydir, a ga teng tarmoq ma'lumotlar bazasi; bu o'z navbatida nihoyatda normalizatsiya qilingan deb qaralishi mumkin relyatsion ma'lumotlar bazasi.
  • Sxemani meros qilib olish - Ko'pgina relyatsion ma'lumotlar bazalari sxema merosini qo'llab-quvvatlamaydi. Garchi OOP bilan ziddiyatni kamaytirish uchun bunday xususiyatni nazariy jihatdan qo'shish mumkin bo'lsa-da, munosabatlar tarafdorlari ierarxik taksonomiyalarning foydaliligiga kamroq ishonishadi va sub-typing, chunki ular qarashga moyildirlar belgilangan taxonomiyalar yoki tasniflash tizimlari daraxtlarga qaraganda kuchliroq va moslashuvchan. OO himoyachilari ta'kidlashlaricha, meros / kichik tiplar modellari faqat daraxtlar bilan chegaralanib qolmasligi kerak (garchi bu kabi ko'plab mashhur OO tillarida cheklov bo'lsa). Java ), ammo daraxt bo'lmagan OO echimlari, relyatsion tomonidan afzal qilingan mavzular bo'yicha o'zgaruvchan boshqaruv usullaridan ko'ra shakllantirish qiyinroq. Hech bo'lmaganda, ular aloqador algebrada keng qo'llaniladigan texnikalardan farq qiladi.
  • Tuzilishi va xulq-atvori - OO birinchi navbatda dastur tuzilmasining oqilona bo'lishini ta'minlashga qaratilgan (saqlanib bo'lmaydigan, tushunarli, kengaytiriladigan, qayta ishlatilishi mumkin, xavfsiz), relyatsion tizimlar esa natijada ishlash vaqti tizimining qanday xatti-harakatlariga (samaradorlik, moslashuvchanlik, xatolarga bardoshlik) e'tibor qaratadi. , hayotiylik, mantiqiy yaxlitlik va boshqalar). Ob'ektga yo'naltirilgan usullar odatda ob'ektga yo'naltirilgan kodning asosiy foydalanuvchisi va uning interfeyslari dastur ishlab chiquvchilari deb taxmin qilishadi. Relyatsion tizimlarda oxirgi foydalanuvchilarning tizimning xatti-harakatlari haqidagi qarashlari ba'zan muhimroq deb hisoblanadilar. Shu bilan birga, relyatsion so'rovlar va "qarashlar" ma'lumotni dasturga yoki vazifaga xos konfiguratsiyalarda taqdim etishning keng tarqalgan usullari hisoblanadi. Bundan tashqari, munosabatlar mahalliy yoki dasturga xos tuzilmalar yoki jadvallarni yaratishni taqiqlamaydi, garchi ko'plab umumiy ishlab chiqish vositalari bunday xususiyatni to'g'ridan-to'g'ri ta'minlamasa ham, buning o'rniga ob'ektlar ishlatiladi. Bu munosabatlarning bayon qilingan ishlab chiquvchisiz istiqbollari munosabatlarga xosmi yoki shunchaki amaldagi amaliyot va vositalarni amalga oshirish taxminlari mahsulimi yoki yo'qligini bilishni qiyinlashtiradi.
  • Grafik aloqalarini va boshqalarni o'rnating - Turli xil narsalar (ob'ektlar yoki yozuvlar) o'rtasidagi munosabatlar paradigmalar o'rtasida turlicha ishlov berishga moyildir. Aloqaviy munosabatlar odatda olingan iboralarga asoslanadi to'plam nazariyasi, ob'ekt munosabatlari qabul qilingan iboralarga moyil bo'lsa grafik nazariyasi (shu jumladan daraxtlar ). Har biri boshqasi bilan bir xil ma'lumotni taqdim etishi mumkin bo'lsa-da, ular ma'lumotlarga kirish va boshqarish uchun taqdim etadigan yondashuvlar farq qiladi.

Ob'ekt-munosabat impedansining nomuvofiqligi natijasida, munozaraning har ikki tomonidagi partizanlar ko'pincha boshqa texnologiyadan voz kechish yoki uning ko'lamini qisqartirish kerak deb ta'kidlaydilar.[7] Ba'zi ma'lumotlar bazasi advokatlari an'anaviy "protsessual" tillarni RDOMS bilan ko'pgina OO tillariga qaraganda ko'proq mos keladi; yoki kamroq OO uslubidan foydalanishni tavsiya eting. (Xususan, dastur kodida uzoq umr ko'radigan domen ob'ektlari mavjud bo'lmasligi kerak deb ta'kidlashadi; mavjud bo'lgan har qanday ob'ekt so'rov tuzilganda va tranzaktsiya yoki topshiriq bajarilgandan so'ng yaratilishi kerak). Aksincha, ba'zi OO himoyachilari, OO-ga o'xshash ko'proq qat'iyatlilik mexanizmlari, masalan OODBMS, ishlab chiqilishi va ishlatilishi kerak, va relyatsion texnologiyani bekor qilish kerak. Ko'pgina dasturchilar va DBA-lar ushbu nuqtai nazarlarga ega emaslar; va ob'ekt-munosabat impedansining mos kelmasligini shunchaki hayot haqiqati sifatida ko'rib chiqing axborot texnologiyalari bilan shug'ullanish kerak.

Shuningdek, O / R xaritasi ba'zi holatlarda o'z samarasini berayotgani, ammo ehtimol haddan tashqari sotilganligi ta'kidlangan: uning kamchiliklardan tashqari afzalliklari ham bor. Skeptiklar uni ishlatishdan oldin yaxshilab o'ylab ko'rishga arziydi, chunki bu ba'zi hollarda unchalik katta ahamiyatga ega bo'lmaydi.[8]

Shuningdek qarang

Adabiyotlar

  1. ^ Ob'ekt-munosabat impedansining mos kelmasligi tasnifi. Irlandiya, Kristofer; Bowers, Devid; Nyuton, Mayk va Vo, Kevin (2009). Ob'ekt-munosabat impedansining mos kelmasligi tasnifi. In: Ma'lumotlar bazalari, bilimlar va ma'lumotlar qo'llanilishidagi yutuqlar bo'yicha birinchi xalqaro konferentsiya (DBKDA), 2009 yil 1-6 mart, Kankun, Meksika.
  2. ^ C. J. Sana, ma'lumotlar bazasi bilan aloqador yozuvlar
  3. ^ Sana, Kristofer ‘Kris’ J; Paskal, Fabian (2012-08-12) [2005], "Turga qarshi domen va sinf", Ma'lumotlar bazasini o'chirib tashlash (World Wide Web jurnali), Google, olingan 12 sentyabr 2012.
  4. ^ ——— (2006), "4. Mantiqiy farq haqida", Ma'lumotlar bazasida sana: 2000-2006 yy, Ma'lumotlar bazasida mutaxassisning ovozi; Ma'lumotlar bazasi yozuvlarni tanlang, AQSH: Apress, p. 39, ISBN  978-1-59059-746-0, Sinf turdan farq qilmaydiganga o'xshaydi, chunki bu atama klassik tushuniladi.
  5. ^ ——— (2004), "26. Ob'ekt / aloqador ma'lumotlar bazalari", Ma'lumotlar bazalari tizimlariga kirish (8-nashr), Pearson Addison Uesli, p.859, ISBN  978-0-321-19784-9, ... shunday yaqinlashish qat’iy munosabat modeliga asoslanishi kerak.
  6. ^ Sana, Kristofer 'Kris' J; Darven, Xyu, "2. Ob'ektlar va munosabatlar", Uchinchi manifest, Birinchi katta xato
  7. ^ Nyuard, Ted (2006-06-26). "Vetnam kompyuter fanlari". Birgalikda ishlash sodir bo'ladi. Olingan 2010-06-02.
  8. ^ Jonson, Rod (2002). J2EE dizayn va ishlab chiqish. Wrox Press. p.256.

Tashqi havolalar