Кіріспе

Microsoft компаниясымен жасалған деректер қоры жүйесі

Microsoft Access-те қолданылатын JET Red

Access деректер қоры жүйесі (сондай-ақ Office Access Connectivity Engine немесе ACE, және бұрын Microsoft Jet Database Engine, Microsoft JET Engine немесе жай ғана Jet) – бірнеше Microsoft өнімдері негізінде құрылған деректер қоры жүйесі. Jet-тің алғашқы нұсқасы 1992 жылы жасалған, ол деректер қорын басқаруға арналған үш модульден тұрады. JET – Бірлескен технологиялық жүйе деген сөзді білдіреді. Microsoft Access және Visual Basic осы жүйені немесе оны базалық деректер қоры жүйесі ретінде пайдаланған. Дегенмен, ол жалпы қолдану үшін алдымен Microsoft Desktop Engine (MSDE), содан кейін SQL Server Express жүйелерімен алмастырылды. Үлкен деректер қоры қажет болған жағдайда, Jet деректер қорын Microsoft-тың SQL Server деректер қорының флагмандық өнімдеріне жаңартуға болады (немесе Microsoft терминологиясында "көлемін арттыруға" болады). Қысылу және шифрлау қосылған бес миллиард жазбадан тұратын MS Jet (Red) деректер қоры үшін шамамен бір терабайт дискілік кеңістік қажет. Ол әдетте жүздеген *.mdb файлдарынан тұрады.

Сәулет

Реляциялық деректер қорын басқару жүйесінің (RDBMS) құрамындағы Jet, реляциялық деректер қорын манипуляциялауға мүмкіндік береді. Ол басқа бағдарламалық қамтамасының Microsoft деректер қорына қол жеткізуі үшін бірыңғай интерфейс ұсынады және қауіпсіздік, анықтамалық тұтастық, транзакцияларды өңдеу, индекстеу, жазбалар мен беттерді құлыптау, сондай-ақ деректерді көшіруді қолдайды. Жаңа нұсқаларда, қозғалтқыш SQL сұраныстарын орындау, деректерді Unicode форматында сақтау, деректер қоры көріністерін жасау және Microsoft SQL Server-мен екі жақты көшіруге мүмкіндік беру үшін кеңейтілді. Jet үш модульден тұрады: Бірі – Native Jet ISAM Driver, динамикалық байланыс кітапханасы (DLL), ол (тікелей қолжетімділік) файлдық жүйе API-ін пайдаланып, Microsoft Access деректер қоры файлдарын (MDB) тікелей басқара алады. Модульдердің тағы бірінде ISAM драйверлері бар, бұл DLL-дер Jet нұсқасына байланысты xBase, Paradox, Btrieve және FoxPro сияқты әртүрлі индекстелген тізбектік қол жеткізу әдісі ISAM деректер қорына қол жеткізуге мүмкіндік береді. Соңғы модуль – деректерге қол жеткізу объектілері (DAO) DLL. DAO бағдарламашыларға кез келген бағдарламалау тілін пайдаланып JET деректер қорына қол жеткізуге мүмкіндік беретін API ұсынады.

Қалқалау

Jet бірнеше пайдаланушыға деректер базасына бір мезгілде қол жеткізуге мүмкіндік береді. Бірнеше пайдаланушы деректер қорының бір жазбасын немесе бетін өңдеуге тырысқанда деректердің бұзылуын немесе жарамсыз болуын болдырмау үшін Jet бұғаттау саясатын қолданады. Кез келген пайдаланушы тек қана өзі бұғаттаған деректер қорының жазбаларын (яғни деректер қорындағы элементтерді) өзгерте алады, бұл бұғаттау алынғанға дейін жазбаға эксклюзивті қол жеткізуді қамтамасыз етеді. Jet-тің 4-ші нұсқасына дейінгі нұсқаларында беттерді бұғаттау моделі қолданылса, ал Jet 4-те жазбаларды бұғаттау моделі қолданылады. Microsoft деректер базалары деректерді "беттер" түрінде ұйымдастырады, олар белгілі бір ұзындығы бар (Jet 4-ке дейін 2 кБ, Jet 4-те 4 кБ) дерек құрылымдары болып табылады. Деректер өзгермелі ұзындықтағы "жазбаларда" сақталады, олар бір беттен аз немесе көп орын ала алады. Беттерді бұғаттау моделі жеке жазбалардың орнына беттерді бұғаттау арқылы жұмыс істейді, бұл ресурстарды аз қажет етеді, бірақ бір пайдаланушы бір жазбаны бұғаттағанда, сол беттегі барлық басқа жазбалар да қосымша бұғатталады. Нәтижесінде, басқа пайдаланушылар қосымша бұғатталған жазбаларға қол жеткізе алмайды, тіпті егер олар қолданылмаса және бұғаттау қажет болмаса да. Jet 4-те жазбаларды бұғаттау моделі қосымша бұғаттауларды жояды, сондықтан қолданылмаған әрбір жазба қол жетімді болады. Microsoft бұғаттау үшін екі механизмді қолданады: пессимистік бұғаттау және оптимистік бұғаттау. Пессимистік бұғаттауда жазба немесе бет бұғаттау сұралғанда бірден бұғатталады, ал оптимистік бұғаттауда өңделген жазба сақталғанға дейін бұғаттау кешіктіріледі. Оптимистік бұғаттауда қақтығыстар туындау ықтималдығы төмен, өйткені жазба қысқа мерзімге ғана бұғатталады. Алайда, оптимистік бұғаттауда жаңарту сәтті болады деп толық сенімді болу мүмкін емес, себебі басқа пайдаланушы жазбаны бірінші бұғаттауы мүмкін. Пессимистік бұғаттауда бұғаттау алынғаннан кейін жаңарту сәтті болатынына кепілдік беріледі. Басқа пайдаланушылар өзгерістерін енгізу үшін бұғаттау алынғанша күтуі керек. Пайдаланушыны күтуге мәжбүрлейтін немесе сұраудың сәтсіз аяқталуына (әдетте, белгілі бір уақыт өткеннен кейін) себеп болатын бұғаттау қақтығыстары пессимистік бұғаттауда жиі кездеседі.

Транзакцияларды өңдеу

Jet деректер базасы жүйелерінің осы мүмкіндігі болған жағдайда транзакцияларды өңдеуді қолдайды (ODBC жүйелері бір деңгейлі транзакциялық өңдеуге ие, ал Paradox сияқты бірнеше ISAM жүйелері транзакциялық өңдеуді қолдамайды). Транзакция – деректер базасында бірге орындалуы тиіс операциялардың тізбегі, ол атомдық деп аталады және деректерді басқару жүйесінің негізгі транзакциялық өңдеу мүмкіндіктері саналатын ACID (Атомдық, Сақталу, Оқшаулау және Тұрақтылық) тұжырымдамаларының бірі болып табылады. Транзакциялық өңдеу жұмыс істеуі үшін (Jet 3.0-ға дейін) бағдарламашы транзакцияны қолмен бастауы, транзакцияда орындалуы тиіс операцияларды орындауы және содан кейін транзакцияны бекітуі (сақтауы) қажет болды. Транзакция бекітілгенге дейін өзгерістер тек жадта жасалады және дискіге жазылмайды. Транзакциялар дербес деректер базасын жаңартуға қарағанда бірнеше артықшылықтарға ие. Басты артықшылықтарының бірі – транзакция барысында проблема туындаса, одан бас тартуға болады. Бұл транзакцияны кері қайтару деп аталады, және ол деректер базасы жазбаларының күйін транзакция басталғанға дейінгідей қалпына келтіреді. Транзакциялар сондай-ақ, егер жүйелік қателік атомдық болуы тиіс жаңартулар тізбегінің ортасында орын алса, деректер базасының күйін сақтауға мүмкіндік береді. Жаңартулардың тек бір бөлігі ғана деректер базасына жазылып қалу қаупі жоқ; немесе барлығы сәтті орындалады, немесе деректер базасы жүйесі қайта іске қосылғанда өзгерістер жойылады. ODBC-нің жад саясатымен транзакциялар жазбаға көптеген жаңартулардың жадта толыққандай орындалуына, ал соңында тек бір дискіге жазу операциясы жасалуына мүмкіндік береді. Jet 3.0 нұсқасында жасырын транзакциялар қолдауға алынды. Бұл соңғы транзакция деректер базасына бекітілгеннен кейін автоматты түрде басталатын транзакциялар. Jet-те SQL DML операторы берілген кезде жасырын транзакциялар пайда болды. Алайда, бұл 32 биттік Windows-та (Windows 95, Windows 98) өнімділікке теріс әсер ететіні анықталды, сондықтан Jet 3.5 нұсқасында Microsoft SQL DML операторлары жасалған кезде жасырын транзакцияларды жойды.

Деректердің тұтастығы

Jet - нысандық тұтастық пен сілтемелік тұтастықты қамтамасыз етеді. Jet әдепкі бойынша сілтемелік тұтастықты бұзатын жазбаға кез келген өзгерістің енгізілуін қабылдамайды, бірақ Jet дерекқоры сілтемелік тұтастықты сақтау үшін тарату шектеулерін (каскадты жаңартулар мен каскадты жоюлар) қолдана алады. Jet сондай-ақ "бизнес ережелерін" (немесе "шектеулер" деп те аталады) қолдайды, яғни кестеге немесе бағанға қандай деректер енгізілуі мүмкін екенін анықтайтын кез келген бағанға қолданылатын ережелерді. Мысалы, ағымғы күні мен уақытынан ертерек күнді тіркелген бағанға енгізуге тыйым салатын ереже немесе сандық өріске тек оң мәнді енгізуді талап ететін ереже қолданылуы мүмкін.

Қауіпсіздік

Jet деректер қорына қол жеткізу әрбір пайдаланушы деңгейінде жүзеге асырылады. Пайдаланушы туралы ақпарат бөлек жүйелік деректер базасында сақталады, ал жүйедегі әрбір нысанға (мысалы, кесте немесе сұраныс бойынша) қол жеткізу бақыланады. Jet 4-те Microsoft деректер базасының әкімшілеріне CREATE, ADD, ALTER, DROP USER және DROP GROUP SQL командалары арқылы қауіпсіздікті орнатуға мүмкіндік беретін функционалды іске қосты. Бұл командалар ANSI SQL 92 стандартының бір бөлігі болып табылады және GRANT/REVOKE командаларына да қатысты қолданылады. Jet 2 нұсқасы шығарылған кезде қауіпсіздікті DAO арқылы бағдарламалық түрде де орнатуға болады.

Сұраулар

Сұраулар – Jet дерекқордан деректерді алуға арналған механизмдер. Олар Microsoft QBE (Query By Example) бағдарламасында, Microsoft Access SQL терезесі арқылы немесе Access Basic-тің Data Access Objects (DAO) тілі арқылы анықталуы мүмкін. Содан кейін олар SQL SELECT нұсқауына түрлендіріледі. Сұрау құрастырылады, бұл сұрауды талдауды қамтиды (синтаксисті тексеру және деректер қорының кестесінде сұрауға арналған бағандарды анықтау), содан кейін ішкі Jet сұраныс нысанының форматына айналдырылады, одан кейін токенизацияланады және ағаш тәрізді құрылымға ұйымдастырылады. Jet 3.0 нұсқасынан бастап олар Microsoft Rushmore сұрауды оңтайландыру технологиясын қолдана отырып оңтайландырылады. Сұрау орындалады және нәтижелер деректерді сұраған қолданбаға немесе пайдаланушыға қайтарылады. Jet сұраныс бойынша алынған деректерді динасет түрінде жібереді. Бұл деректер жиынтығы деректер базасына динамикалық түрде байланысқан. Сұрау нәтижесі уақытша кестеде сақталмайды, онда пайдаланушы деректерді тікелей жаңарта алмайды, динасет пайдаланушыға динасеттегі деректерді қарауға және жаңартуға мүмкіндік береді. Мысалы, егер университет оқытушысы тапсырмасы бойынша үздік баға алған барлық студенттер туралы сұраныс жіберсе және сол студенттің жазбасында қате тапса, пайдаланушы тек динасеттегі деректерді жаңартуы керек, бұл студенттің деректер қорындағы жазбаны автоматты түрде жаңартады, пайдаланушыға сұрау нәтижесін уақытша кестеде сақтағаннан кейін арнайы жаңарту сұранысын жіберудің қажеті болмайды.

Бір-біріне үйлесімділік

Microsoft JET драйверлерін тек Microsoft Windows үшін ұсынады және JET деректер қорына арналған үшінші тараптық бағдарламалық қолдау көбінесе Windows жүйесінде табылады. Дегенмен, Linux-ты қоса алғанда, басқа платформаларда JET деректер қорымен жұмыс істеуге мүмкіндік беретін ашық кодты жобалар бар. Атап айтқанда, MDB Tools және оның Java порты Jackcess, сондай-ақ UCanAccess.