Мәліметтер базасымен транзакция - Database transaction

A мәліметтер базасының транзакциясы а ішінде орындалатын жұмыс бірлігін бейнелейді мәліметтер базасын басқару жүйесі (немесе ұқсас жүйе) дерекқорға қарсы және басқа транзакциялардан тәуелсіз келісілген және сенімді түрде қарастырылады. Транзакция дерекқордағы кез келген өзгерісті білдіреді. Мәліметтер қоры ортасындағы транзакциялардың екі негізгі мақсаты бар:

  1. Ақаулықтарды дұрыс қалпына келтіруге мүмкіндік беретін және жүйенің істен шығуы жағдайында да, орындалу тоқтаған кезде (толығымен немесе ішінара) дерекқордың дәйекті болуын қамтамасыз ететін сенімді жұмыс бірліктерін қамтамасыз ету және деректер базасында көптеген операциялар аяқталмаған күйде, түсініксіз күйде.
  2. Бір уақытта мәліметтер базасына қол жеткізетін бағдарламалар арасындағы оқшаулықты қамтамасыз ету. Егер бұл оқшаулану қамтамасыз етілмесе, бағдарламалардың нәтижелері қате болуы мүмкін.

Мәліметтер базасын басқару жүйесінде транзакция дегеніміз - кейде бірнеше амалдардан тұратын логиканың немесе жұмыстың бірлігі. Мәліметтер базасында дәйекті режимде жүргізілген кез-келген логикалық есептеу транзакция ретінде белгілі. Бір мысал - бір банктік шоттан екіншісіне аудару: толық операция бір шоттан аударылатын соманы алып тастап, екіншісіне сол соманы қосуды талап етеді.

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

Мақсаты

Мәліметтер базасы және басқа деректерді сақтайтын дүкендер тұтастық Деректер бірінші кезекте мәліметтердің тұтастығын сақтау үшін транзакциялармен жұмыс істеу мүмкіндігін қамтиды. Бір транзакция бір немесе бірнеше дербес жұмыс бөлімшелерінен тұрады, әр оқу және / немесе мәліметтер базасына немесе басқа мәліметтер қоймасына ақпарат жазу. Мұндай жағдай болған кезде, барлық осындай өңдеу дерекқордан немесе деректер қоймасынан тұрақты күйде шығуын қамтамасыз ету өте маңызды.

Мысалдары екі жақты есепке алу жүйелері транзакциялар түсінігін жиі суреттейді. Екі жазба бойынша бухгалтерлік есепте әрбір дебет байланысты кредиттің жазылуын талап етеді. Егер біреу азық-түлік сатып алу үшін $ 100 чек жазса, транзакциялық екі жақты есепке алу жүйесі бір операцияны жабу үшін келесі екі жазбаны жазуы керек:

  1. Азық-түлік шығындары шотына $ 100 дебеті
  2. Шотты тексеру үшін 100 доллар несие беріңіз

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

Транзакциялық мәліметтер базасы

A транзакциялық мәліметтер базасы Бұл ДББЖ қамтамасыз етеді Қышқылдық қасиеттері мәліметтер базасының операцияларының жиынтық жиынтығы үшін (бастау-міндеттеме). Транзакция ішіндегі барлық жазу операциялары бар-жоқтың әсерін береді, яғни транзакция сәтті болады және барлық жазбалар күшіне енеді немесе басқаша жағдайда мәліметтер базасы транзакцияның кез-келген жазбаларын қамтымайтын күйге келтіріледі. . Транзакциялар сонымен қатар бір уақытта жасалған мәмілелердің әсері белгілі кепілдіктерді қанағаттандыратындығын қамтамасыз етеді оқшаулау деңгейі. Оқшауланудың ең жоғары деңгейі сериялылық, бұл параллель операциялардың әсері олардың сериялық (яғни дәйекті) орындалуына тең болатындығына кепілдік береді.

Ең заманауи мәліметтер қорын реляциялық басқару жүйелері транзакцияларды қолдайтын мәліметтер базасының санатына жатады. Бір мезгілде жаңартулар мен қол жетімділіктер жағдайында деректердің дәйектілігіне кепілдік беру үшін, NoSQL деректер қоймалары ауқымдылыққа және қолдайтын транзакцияларға басымдық береді.

Мәліметтер базасы жүйесінде транзакция мәліметтер базасында әр оқылымнан және / немесе жазудан тұратын бір немесе бірнеше мәліметтермен айла-амалдар мен сұраулардан тұруы мүмкін. Пайдаланушылары мәліметтер базасы жүйелері қарастыру дәйектілік және тұтастық өте маңызды мәліметтер. Қарапайым транзакция әдетте мәліметтер базасына жүйеге ұқсас тілде беріледі SQL транзакцияға оралған, келесіге ұқсас үлгіні қолданған:

  1. Транзакцияны бастаңыз.
  2. Деректер манипуляциясы және / немесе сұраныстар жиынтығын орындау.
  3. Егер қате болмаса, транзакцияны жасаңыз.
  4. Егер қате пайда болса, транзакцияны қайтарыңыз.

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

Ішінде көп қолданушы мәліметтер базасы транзакцияларды сақтайды және өңдейді, көбінесе транзакцияны қолданады Жеке куәлік немесе XID.

Транзакцияларды жүзеге асырудың жоғарыда көрсетілген қарапайым тәсілінен басқа бірнеше түрлі тәсілдері бар. Кірістірілген транзакциялар мысалы, жаңа транзакцияларды бастайтын (яғни қосалқы транзакциялар) ішіндегі мәлімдемелерден тұратын транзакциялар. Көп деңгейлі транзакциялар ішкі транзакциялар қабатты жүйелік архитектураның әртүрлі деңгейлерінде жүзеге асырылатын кірістірілген транзакциялардың нұсқасы болып табылады (мысалы, мәліметтер базасы-қозғалтқыш деңгейінде бір операция, операциялық жүйе деңгейінде бір операция).[2] Мәміленің тағы бір түрі - өтемдік операция.

SQL-де

Транзакциялар SQL дерекқорының көптеген қондырғыларында қол жетімді, бірақ әртүрлі деңгейдегі беріктік деңгейлерімен. Мысалға, MySQL 3.23 нұсқасынан бастап транзакцияларды қолдай бастады, бірақ InnoDB 5.5 нұсқасына дейін сақтау қозғалтқышы әдепкі емес. Ертерек сақтауға арналған қозғалтқыш, MyISAM транзакцияларды қолдамайды.

Транзакция әдетте команданың көмегімен басталады БАСТА (дегенмен SQL стандарты анықтайды ОПЕРАЦИЯНЫ БАСТАУ). Жүйе а МІНДЕТТЕМЕ Мәміле сәтті аяқталумен аяқталады. A Кері байланыс мәлімдеме сонымен қатар осы кезден бастап жасалған кез-келген жұмысты жоққа шығарып, транзакцияны аяқтай алады БАСТА. Егер автокомит транзакцияның басталуымен өшірілді, транзакция аяқталғаннан кейін автокомитет қайта қосылады.

Біреуін орнатуға болады оқшаулау деңгейі жеке транзакциялық операциялар үшін, сондай-ақ жаһандық. Жоғары деңгейде (ОҚЫЛДЫ), транзакция басталғаннан кейін жасалған кез-келген операцияның нәтижесі транзакция аяқталғанға дейін басқа дерекқор пайдаланушылары үшін көрінбейтін болып қалады. Ең төменгі деңгейде (БІРІКПЕЙ ОҚЫҢЫЗ), оларды кейде жоғары параллельдікті қамтамасыз ету үшін қолдануға болады, мұндай өзгерістер бірден көрінеді.

Нысандардың мәліметтер базасы

Реляциялық мәліметтер қоры дәстүрлі түрде белгіленген өлшемді өрістер мен жазбалардан тұратын кестелерден тұрады. Нысандардың мәліметтер базасы айнымалы өлшемнен тұрады блоктар, мүмкін серияланатын немесе а мим типті. Реляциялық және Объекттік мәліметтер базаларының негізгі ұқсастықтары - бастау және бастау міндеттеме немесе кері қайтару.

Транзакцияны бастағаннан кейін мәліметтер қорының жазбалары немесе нысандары тек оқуға немесе оқуға және жазуға тыйым салынады. Одан әрі жазулар пайда болуы мүмкін. Транзакция толық анықталғаннан кейін өзгерістер жасалады немесе кері қайтарылады атомдық, транзакцияның соңында болмайтындай етіп сәйкессіздік.

Таратылған транзакциялар

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

Транзакциялық файлдық жүйелер

The Namesys Reiser4 файл жүйесі Linux[4] мәмілелерді қолдайды және жағдай бойынша Microsoft Windows Vista, Microsoft NTFS файлдық жүйе[5] тіректер таратылған транзакциялар желілер арқылы. Сияқты деректердің когерентті файлдық жүйелерін зерттеу жүргізіліп жатыр Warp транзакциялық файлдар жүйесі (WTF).[6]

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

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

  1. ^ «Транзакция дегеніміз не? (Windows)». msdn.microsoft.com.
  2. ^ Бери, С .; Бернштейн, П.А .; Гудман, Н. (1989). «Ұяланған транзакциялар жүйесіндегі параллелизм моделі». ACM журналы. 36 (1): 230–269. дои:10.1145/62044.62046. S2CID  12956480.
  3. ^ Өзсу, М.Тамер; Валдуриес, Патрик (2011). Таратылған мәліметтер қоры жүйелерінің принциптері, үшінші басылым. Спрингер. дои:10.1007/978-1-4419-8834-8. ISBN  978-1-4419-8833-1.
  4. ^ «Linux.org». Linux.org.
  5. ^ «MSDN кітапханасы». Алынған 16 қазан 2014.
  6. ^ https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-escriva.pdf

Әрі қарай оқу

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