Объектілік-реляциялық картаға түсіру - Object–relational mapping

Объектілік-реляциялық картографиялау (ORM, O / RM, және O / R картасын бейнелеу құралы) Информатика Бұл бағдарламалау сәйкес келмейтін деректерді түрлендіру әдістемесі типті жүйелер қолдану объектіге бағытталған бағдарламалау тілдері. Бұл іс жүзінде «виртуалды» жасайды объектілер базасы «оны бағдарламалау тілінен қолдануға болады. Нысан-реляциялық картаны орындайтын ақысыз және коммерциялық пакеттер бар, бірақ кейбір бағдарламашылар өздерінің ORM құралдарын құруды жөн көреді.

Жылы объектіге бағытталған бағдарламалау, деректерді басқару міндеттер әрекет етеді нысандар әрқашан дерлік емесскаляр құндылықтар. Мысалы, нөлдік немесе одан көп телефон нөмірлерімен және нөлдік немесе одан да көп мекен-жайлармен бірге жалғыз адамды бейнелейтін мекенжайлық кітап жазбасын қарастырыңыз. Мұны объектіге бағытталған жүзеге асыруда модельдеуі мүмкін «Адам объект «бірге төлсипат / өріс жазбадан тұратын әрбір дерек элементін ұстау үшін: адамның аты-жөні, телефон нөмірлерінің тізімі және мекен-жайлар тізімі. Телефон нөмірлерінің тізімінде «PhoneNumber объектілері» және т.б. болуы мүмкін. Әрбір осындай мекен-жай кітабын бағдарламалау тілі бір объект ретінде қарастырады (мысалы, объектінің сілтемесі бар бір айнымалыға сілтеме жасай алады). Әр түрлі әдістер объектімен байланыстыруға болады, мысалы, қалаған телефон нөмірін қайтару әдістері, үй мекен-жайы және т.б.

Керісінше, көптеген танымал мәліметтер базасы өнімдері SQL мәліметтер базасын басқару жүйелері (ДҚБЖ) объектіге бағытталған емес және тек сақтауға және манипуляциялауға болады скаляр ішінде ұйымдастырылған бүтін сандар мен жолдар сияқты мәндер кестелер. Бағдарламалаушы объектілік мәндерді мәліметтер базасында сақтау үшін қарапайым мәндер топтарына түрлендіруі керек (және оларды іздеу кезінде қайта түрлендіруі керек), немесе бағдарлама ішінде қарапайым скалярлық мәндерді ғана қолдануы керек. Объектілік-реляциялық картографиялау бірінші тәсілді жүзеге асырады.[1]

Мәселенің негізі объектілердің логикалық көрінісін объектілердің қасиеттері мен олардың өзара байланыстарын сақтай отырып, оларды қажет болған кезде объект ретінде қайта жүктеуге болатындай етіп, мәліметтер базасында сақтауға қабілетті атомдалған түрге аударуды қамтиды. Егер бұл сақтау және іздеу функциясы іске асырылса, нысандар деп аталады табанды.[1]

Шолу

Сақтау драйверлерін іске асыруға арналған егжей-тегжейлер, әдетте, қоршаған ортаның парадигмаларына сәйкес қарапайым және көбірек сақтау ортасымен өзара әрекеттесу әдістерін көрсететін қолданыстағы бағдарламалау тілінде API-мен оралған.

Төменде қарапайым мысал келтірілген C # код, жазылған сұранысты орындау үшін SQL мәліметтер базасының қозғалтқышын пайдалану.

var кв = «ID, 10 аты, фамилиясы, телефоны, туған күні, жынысы, жасын таңдаңыз. ҚАЙДА id = 10»;var нәтиже = контекст.Адамдар.FromSqlRaw(кв).Тізім();var аты = нәтиже[0][«аты»];

Керісінше, келесілер ORM-job API-ді қолданады, бұл кодты жазуға мүмкіндік береді, бұл тілдің ерекшеліктерін табиғи түрде пайдаланады.

var адам = репозиторий.GetPerson(10);var аты = адам.GetFirstName();

Жоғарыда келтірілген жағдай сақтау қоймасын және сол объектінің әдістерін білдіретін объектіні пайдаланады. Басқа фреймерлер кодты төменде көрсетілгендей статикалық әдістер ретінде бере алады, ал басқа әдістер объектіге бағытталған жүйені мүлдем енгізбеуі мүмкін. Көбіне парадигманы таңдау ORM-ді қоршаған тілдің жобалау принциптеріне барынша сәйкес келтіру үшін жасалады.

var адам = Адам.Алыңыз(10);

Әдетте, фреймра ​​сүзгілеу және сұрау функционалдығын көрсетеді, бұл сақтау базасының ішкі жиынтықтарына қол жеткізуге және өзгертуге мүмкіндік береді. Төмендегі код дерекқордағы идентификатор мәні '10' болатын адамдарға арналған сұрақтар қояды.

var адам = Адам.Алыңыз(Адам.Қасиеттері.Id == 10);

Деректерге қол жетімділіктің дәстүрлі әдістерімен салыстыру

Нысанға бағытталған тіл мен реляциялық мәліметтер базасы арасындағы дәстүрлі алмасу әдістерімен салыстырғанда, ОРМ жазу керек кодтың мөлшерін жиі азайтады.[2]

ORM құралдарының кемшіліктері әдетте жоғары деңгейден туындайды абстракция іске асыру кодында не болып жатқанын жасыру. Сондай-ақ, ORM бағдарламалық жасақтамасына үлкен тәуелділік нашар жобаланған мәліметтер базасын құрудың негізгі факторы ретінде айтылды.[3]

Объектіге бағытталған мәліметтер базасы

Тағы бір тәсіл - пайдалану объектіге бағытталған мәліметтер базасын басқару жүйесі (OODBMS) немесе құжатқа негізделген мәліметтер базасы жергілікті сияқты XML дерекқорлары деректерді модельдеуде икемділікті қамтамасыз ететін. OODBMS - бұл объектіге бағытталған мәндермен жұмыс істеуге арналған арнайы мәліметтер базасы. OODBMS пайдалану деректерді оның SQL формасына ауыстыру қажеттілігін жояды, өйткені деректер бастапқы нысанда сақталады және қатынастар талап етілмей, тікелей бейнеленеді кестелерге қосылу / операциялар. Үшін ORM баламасы құжатқа негізделген мәліметтер базасы объектілік-құжаттық карталар (ODM) деп аталады.

Құжатқа негізделген мәліметтер базасы пайдаланушыға кестелер қатарына нысандарды «ұсақтауға» жол бермейді. Осы жүйелердің көпшілігі қолдайды XQuery деректер жиынтығын алу үшін сұрау тілі.

Нысанға бағытталған дерекқорлар күрделі, тауашалы қосымшаларда қолданылады. OODBMS-ті қолдануға қарсы аргументтердің бірі - ол уақытша, бағдарламадан тәуелсіз сұраныстарды орындай алмауы мүмкін.[дәйексөз қажет ] Осы себепті, көптеген бағдарламашылар SQL-сұраныстарды шектеулі деңгейде өңдеуге қабілетті бола тұра, объектілік-SQL бейнелеу жүйесімен үйде көп болады. Басқа OODBMS белгілі сұраныстар үлгілерін сақтай отырып, уақытша сұраныстардың қажеттілігін шешу құралы ретінде SQL дерекқорларына репликаны ұсынады.[дәйексөз қажет ]

Қиындықтар

Нысандық жүйені реляциялық мәліметтер базасымен сәйкестендіруді қарастыру кезінде әр түрлі қиындықтар туындайды. Бұл қиындықтар деп аталады объектілік-реляциялық импеданстың сәйкес келмеуі.[4]

ORM-ді іске асырудың баламасы - әрбір негізгі мәліметтер базасында берілген жергілікті процедуралық тілдерді пайдалану. Оларды клиенттен SQL операторларының көмегімен шақыруға болады. The Деректерге қол жеткізу нысаны (DAO) дизайн үлгісі осы тұжырымдарды абстракциялау үшін және қолданбаның қалған бөлігіне жеңіл объектілі интерфейс ұсыну үшін қолданылады.[5]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ а б «Нысан / реляциялық картография дегеніміз не?». Күту күйіне шолу. JBOSS күту күйі. Алынған 19 сәуір 2011.
  2. ^ Дуглас Барри, Торстен Станиенда, «Java нысанын сақтау мәселесін шешу», Компьютер, т. 31, жоқ. 11, 33-40 бет, 1998 ж. Қараша, http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 , Үзінді http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence_vs_jdbc_call-level_interface.html. O / R кодын қолданатын сызықтар - бұл қоңырау деңгейіндегі интерфейске қажет бөліктердің бір бөлігі ғана (1: 4). Бұл жаттығу үшін ODGG Java байланыстыруды қолдану арқылы 496 жол қажет болды, ал JDBC қолданыстағы 1923 код жолымен салыстырғанда.
  3. ^ Джош Беркус, «Сіздің дерекқорыңызды жойып жіберу», Компьютер, 2009 ж. Тамыз, http://it.toolbox.com/blogs/database-soup/wrecking-your-database-33298, Webcast at https://www.youtube.com/watch?v=uFLRc6y_O3s
  4. ^ Нысандық-реляциялық карта қайта қаралды - мәліметтер базасының технологиясының O / R картаға түсіру стратегияларына әсері туралы сандық зерттеу. М Лоренц, Дж.П. Рудольф, Г. Гессен, М Уфлакер, Н Платтнер. Гавайи Жүйелік ғылымдар жөніндегі халықаралық конференция (HICSS), 4877-4886 (DOI: 10.24251 / hicss.2017.592)
  5. ^ Фейерштейн, Стивен; Билл Прибил (қыркүйек 1997). «Oracle PL / SQL бағдарламалау». 18.5 Тұрақты нысандарды өзгерту. Алынған 23 тамыз 2011.CS1 maint: орналасқан жері (сілтеме)

Сыртқы сілтемелер