Ob'ekt-relyatsion xaritalash - Object–relational mapping

Ob'ekt-relyatsion xaritalash (ORM, O / RMva O / R xaritalash vositasi) ichida Kompyuter fanlari a dasturlash mos kelmaydigan ma'lumotlar o'rtasida konvertatsiya qilish texnikasi tipdagi tizimlar foydalanish ob'ektga yo'naltirilgan dasturlash tillari. Bu aslida "virtual" ni yaratadi ob'ekt ma'lumotlar bazasi "bu dasturlash tilidan foydalanish mumkin. Ob'ektga bog'liq xaritalashni amalga oshiradigan bepul va tijorat paketlar mavjud, ammo ba'zi dasturchilar o'zlarining ORM vositalarini yaratishni afzal ko'rishadi.

Yilda ob'ektga yo'naltirilgan dasturlash, ma'lumotlarni boshqarish vazifalar bajariladi ob'ektlar deyarli har doimskalar qiymatlar. Masalan, nol yoki undan ortiq telefon raqamlari va nol yoki undan ortiq manzillar bilan bir kishining vakili bo'lgan manzil kitobi yozuvini ko'rib chiqing. Buni ob'ektga yo'naltirilgan amalga oshirishda modellashtirish mumkin "Shaxs ob'ekt "bilan atribut / maydon yozuv tarkibiga kiradigan har bir ma'lumot elementini saqlash uchun: shaxsning ismi, telefon raqamlari ro'yxati va manzillar ro'yxati. Telefon raqamlari ro'yxatining o'zida "PhoneNumber ob'ektlari" va boshqalar bo'lishi mumkin. Har bir bunday manzil-kitob yozuvlari dasturlash tili tomonidan bitta ob'ekt sifatida ko'rib chiqiladi (masalan, ob'ektga ko'rsatgichni o'z ichiga olgan bitta o'zgaruvchiga murojaat qilish mumkin). Turli xil usullari ob'ekt bilan bog'lanishi mumkin, masalan, afzal qilingan telefon raqamini qaytarish usullari, uy manzili va boshqalar.

Aksincha, kabi ko'plab mashhur ma'lumotlar bazasi mahsulotlari SQL ma'lumotlar bazasini boshqarish tizimlari (DBMS) ob'ektga yo'naltirilgan emas va faqat saqlash va boshqarish mumkin skalar ichida tashkil etilgan tamsayılar va satrlar kabi qiymatlar jadvallar. Dasturchi yoki ob'ekt qiymatlarini ma'lumotlar bazasida saqlash uchun oddiyroq qiymatlar guruhiga aylantirishi kerak (va ularni qidirib topgandan keyin ularni qayta o'zgartirishi kerak) yoki faqat dastur ichida oddiy skaler qiymatlardan foydalanishi kerak. Ob'ekt-relyatsion xaritalash birinchi yondashuvni amalga oshiradi.[1]

Muammoning mohiyati, ob'ektlarning mantiqiy tasvirini ma'lumotlar bazasida saqlanishi mumkin bo'lgan atomizatsiya qilingan shaklga o'tkazishni o'z ichiga oladi, bu esa ob'ektlarning xususiyatlarini va ularning munosabatlarini saqlab qoladi va kerak bo'lganda ularni ob'ektlar sifatida qayta yuklaydi. Agar ushbu saqlash va qidirish funktsiyasi amalga oshirilsa, ob'ektlar deyiladi doimiy.[1]

Umumiy nuqtai

Saqlash drayverlarini tatbiq etishga oid tafsilotlar, odatda, ishlatiladigan dasturlash tilida API-ga o'ralgan bo'lib, saqlash vositasi bilan atrofdagi kod paradigmalariga mosroq va sodda tarzda o'zaro ta'sir qilish usullarini ochib beradi.

Quyida oddiy bir misol keltirilgan C # kodi, ichida yozilgan so'rovni bajarish uchun SQL ma'lumotlar bazasi dvigatelidan foydalanish.

var kv = "ID, 10 ism, familiya, telefon, tug'ilgan sanasi, jinsi, yoshini QAYERDA id = 10 dan tanlang";var natija = kontekst.Shaxslar.FromSqlRaw(kv).Ro'yxat();var ism = natija[0]["ism"];

Aksincha, quyidagilar ORM-job API-dan foydalanadi va bu tabiiy ravishda tilning xususiyatlaridan foydalanadigan kod yozishga imkon beradi.

var shaxs = ombor.GetPerson(10);var ism = shaxs.GetFirstName();

Yuqoridagi holat ushbu omborni saqlash omborini va usullarini ifodalovchi ob'ektdan foydalanadi. Boshqa ramkalar, quyida ko'rsatilganidek, statik usul sifatida kodni taqdim etishi mumkin, ammo boshqa usullar ob'ektga yo'naltirilgan tizimni umuman amalga oshirmasligi mumkin. Ko'pincha paradigma tanlovi ORMni atrofdagi tilning dizayn tamoyillariga eng mos keladigan tarzda amalga oshiriladi.

var shaxs = Shaxs.Ol(10);

Odatda, ramka ba'zi bir filtrlash va so'rovlar funktsiyalarini ochib beradi, bu esa saqlash bazasining pastki qismlariga kirish va o'zgartirish imkonini beradi. Quyidagi kod ma'lumotlar bazasida ID qiymati '10' bo'lgan odamlar uchun so'rovlar.

var shaxs = Shaxs.Ol(Shaxs.Xususiyatlari.Id == 10);

An'anaviy ma'lumotlarga kirish usullari bilan taqqoslash

Ob'ektga yo'naltirilgan til va relyatsion ma'lumotlar bazasi o'rtasidagi an'anaviy almashinuv texnikasi bilan taqqoslaganda, ORM ko'pincha yozilishi kerak bo'lgan kod miqdorini kamaytiradi.[2]

ORM vositalarining kamchiliklari odatda yuqori darajadan kelib chiqadi mavhumlik dastur kodida aslida nima yuz berayotganini yashirish. Shuningdek, ORM dasturiy ta'minotiga katta bog'liqlik yomon ishlab chiqilgan ma'lumotlar bazalarini ishlab chiqarishda asosiy omil sifatida keltirilgan.[3]

Ob'ektga yo'naltirilgan ma'lumotlar bazalari

Yana bir yondashuv - dan foydalanish ob'ektga yo'naltirilgan ma'lumotlar bazasini boshqarish tizimi (OODBMS) yoki hujjatlar yo'naltirilgan ma'lumotlar bazalari mahalliy kabi XML ma'lumotlar bazalari ma'lumotlarni modellashtirishda ko'proq moslashuvchanlikni ta'minlaydigan. OODBMS - bu ob'ektga yo'naltirilgan qiymatlar bilan ishlash uchun maxsus ishlab chiqilgan ma'lumotlar bazalari. OODBMS-dan foydalanish ma'lumotlarni SQL shakliga va undan o'zgartirishga imkon bermaydi, chunki ma'lumotlar asl ob'ekt ko'rinishida saqlanadi va munosabatlar to'g'ridan-to'g'ri ifodalanadi, aksincha talab qilinmaydi jadvallarga qo'shilish / operatsiyalar. Uchun ORMlarning ekvivalenti hujjatlar yo'naltirilgan ma'lumotlar bazalari ob'ekt-hujjat xaritalari (ODM) deb nomlanadi.

Hujjatlarga asoslangan ma'lumotlar bazalari, shuningdek, foydalanuvchini ob'ektlarni jadvallar qatoriga "maydalab" olishiga yo'l qo'ymaydi. Ushbu tizimlarning aksariyati qo'llab-quvvatlaydi XQuery ma'lumotlar to'plamlarini olish uchun so'rovlar tili.

Ob'ektga yo'naltirilgan ma'lumotlar bazalari murakkab, o'ziga xos dasturlarda foydalanishga moyil. OODBMS-dan foydalanishga qarshi bo'lgan argumentlardan biri shundaki, u maxsus, dasturdan mustaqil ravishda so'rovlarni bajara olmaydi.[iqtibos kerak ] Shu sababli, ko'plab dasturchilar SQL-so'rovlarni cheklangan darajada ishlashga qodir bo'lishiga qaramay, ob'ekt-SQL xaritalash tizimi bilan ko'proq o'zlarini uyda topishadi. Boshqa OODBMS taniqli so'rovlar namunalarini saqlab, vaqtincha so'rovlarga bo'lgan ehtiyojni qondirish vositasi sifatida SQL ma'lumotlar bazalariga replikatsiya qilishni ta'minlaydi.[iqtibos kerak ]

Qiyinchiliklar

Ob'ekt tizimini relyatsion ma'lumotlar bazasiga qanday moslashtirishni ko'rib chiqishda turli xil qiyinchiliklar paydo bo'ladi. Ushbu qiyinchiliklar ob'ekt-munosabat impedansining mos kelmasligi.[4]

ORMni amalga oshirishning alternativasi har bir asosiy ma'lumotlar bazasi bilan ta'minlangan mahalliy protsessual tillardan foydalanishdir. Bularni mijozdan SQL operatorlari yordamida chaqirish mumkin. The Ma'lumotlarga kirish ob'ekti (DAO) dizayn namunasi ushbu bayonotlarni mavhumlashtirish va dasturning qolgan qismiga engil yo'naltirilgan interfeysni taqdim etish uchun ishlatiladi.[5]

Shuningdek qarang

Adabiyotlar

  1. ^ a b "Ob'ekt / relyatsion xaritalash nima?". Kutish rejimiga umumiy nuqtai. JBOSS hozirda kutish rejimida. Olingan 19 aprel 2011.
  2. ^ Duglas Barri, Torsten Stanienda, "Java ob'ektlarini saqlash masalasini hal qilish", Kompyuter, vol. 31, yo'q. 11, 33-40 betlar, 1998 yil noyabr, http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 , Ko'chirma http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence_vs_jdbc_call-level_interface.html. O / R-dan foydalangan holda kod satrlari qo'ng'iroq darajasidagi interfeys uchun zarur bo'lganlarning faqat bir qismidir (1: 4). Ushbu mashq uchun ODMG Java Binding-dan JDBC-dan foydalangan 1923 kod satridan 496 satr kod kerak edi.
  3. ^ Josh Berkus, "Ma'lumotlar bazangizni yo'q qilish", Kompyuter, 2009 yil avgust, http://it.toolbox.com/blogs/database-soup/wrecking-your-database-33298, Webcast at https://www.youtube.com/watch?v=uFLRc6y_O3s
  4. ^ Ob'ekt-munosabatli xaritalash qayta ko'rib chiqildi - ma'lumotlar bazasi texnologiyasining O / R xaritalash strategiyasiga ta'siri bo'yicha miqdoriy tadqiq. M Lorenz, JP Rudolf, G Xesse, M Uflaker, X Plattner. Gavayi Tizim fanlari bo'yicha xalqaro konferentsiya (HICSS), 4877-4886 (DOI: 10.24251 / hikoyalar.2017.592)
  5. ^ Fuyershteyn, Stiven; Bill Pribil (1997 yil sentyabr). "Oracle PL / SQL dasturlash". 18.5 Doimiy ob'ektlarni o'zgartirish. Olingan 23 avgust 2011.CS1 tarmog'i: joylashuvi (havola)

Tashqi havolalar