VPN үзүлгөндө маалымат базаларынын ортосундагы өткөрүү өлөт, ал эми «кайра иштет» калыбына келтирүү планы эмес. Булактан экстракция бүткөн болушу мүмкүн, максат мурунтан commit жасаган болушу мүмкүн, же жооп кайтуу жолунда жөн гана жоголгон болушу мүмкүн. Бул үч абал ар башка аракеттерди талап кылат, жана «катаны» гана билген кардар аларды ажырата албайт.

Чечим архитектуралык: ар бир иштетүүгө туруктуу топтом идентификациясын бер, жана кардарга божомолдоого жол берүүнүн ордуна маалымат базаларына суроолорго жооп берүүгө мүмкүндүк бер.

Маалымат базасы чындыгында эмнени кепилдейт

SQL Server жана Oracle экөө тең транзакциянын ичинде атомдуулукту берет. Экөөнүн ортосунда атомдуулукту эч бири бербейт. Жоголгон байланыш маалымат базасын бузбайт жана кол менен артка кайтарууга мажбурлабайт, анткени сервер өз транзакциясын сен жок чечет. Бузулган нерсе — чакыруучунун натыйжа жөнүндө билими.

Өзүнчө commit дегени өзүнчө commit. Эки байланышты тең ташыган VPN эки commit'ти бир жумуш бирдигине бириктирбейт.

Сен эч качан уга элек commit

Бир бузулуу режими акылсыз кайра аракет логикасын жазалайт: сервер commit жасайт, ал эми ырастоо чакыруучуга эч качан жетпейт. Oracle муну белгисиз натыйжа маселеси катары документтештирет жана ал үчүн транзакция документтеринде Transaction Guard сунуштайт. Байланыш катасы жөнөтүлгөн commit ийгиликсиз болгонуна далил эмес, аны далил катары кабыл алуу — топтомдун эки жолу жарыяланышынын жолу. Бул айырма кайра аракет жолунда эң маанилүү, анда оператордо ката билдирүүсү бар жана аракет кылуу үчүн башка сигнал жок.

Ошондуктан калыбына келтирүү кадамы натыйжаны ката текстинен чыгаруунун ордуна максаттан окушу керек.

Өткөрүүгө топтом идентификациясын бер

Ар бир иштетүү өзгөрбөс топтом ID'син алат, жана максат ошол ID менен эмне кылганын жазат. Жашоо цикли төрт кадамдан турат жана жеткирүүчүгө карабастан бирдей көрүнөт:

  1. Экстракция жазылган схема жана чек ара менен аныкталган, өзгөрбөс булак топтому.
  2. Өткөрүү аны максаттын даярдоо аймагына жана даяр деп жарыялоодон мурун толук эмес же каршы келген мазмунду аныктоо.
  3. Колдонуу максаттын өзүнүн уникалдуулук же кулпулоо эрежелери боюнча жана аяктоону ошол эле жергиликтүү транзакцияда жазуу.
  4. Салыштыруу туруктуу натыйжаны колдоого алынган протокол аркылуу ырастоо же кайра аракеттен мурун.

Кайра аракеттер ошол эле ID'ни кайра колдонот. Ар бир аракетке жаңы ID жаңы эле курган кайталануунун алдын алууну жокко чыгарат, бул кайра аракет каптамасы автоматтык түрдө бирди жаратпайынча айкын көрүнөт.

ID ошондой эле кийинчерээк салыштыруу үчүн бир нерсе берет, кардар процесси эчак эле жоголгондон кийин да.

Топтомду ээле, анан колдон

Колдонуу кадамы топтом ID'син ээлеши, бизнес өзгөртүүлөрдү жасоосу жана аяктоону бир жергиликтүү транзакцияда жазышы керек. Текшерүү менен киргизүүнү өзүнчө билдирүүлөр катары аткаруу — сен жок кылгың келген жарышты кайра алып келет. Эки жумушчу жарышса, так бир ээлөө жеңет, экинчисине бул тууралуу билдирилет.

Аяктоо жазуусунун жоктугу агып жаткан транзакция эч качан commit жасабайт деген далил эмес. Ээлөө атаандаш аракеттерди иреттеши керек, же протокол кандайдыр бир чечим кабыл алуудан мурун туруктуу натыйжаны окушу керек.

Ошол иреттөө үчүн колдонмо кодундагы текшер-жана-кайтала циклинин ордуна маалымат базасынын колдоого алынган механизмин колдон.

Дизайн дагы эле убада кыла албаган нерсе

Даярдоо жумушту кайра баштоого боло тургандай кылат жана бир узак сессияга көз карандылыкты азайтат. Ал SQL Server, Oracle жана жумуш аткарган кандайдыр бир тышкы терс таасир боюнча бир атомдук commit жаратпайт. Эгер бизнес чын эле муну талап кылса, колдоого алынган бөлүштүрүлгөн транзакцияны же салыштыруу процессин долбоорлоп, квалификациясын тастыкта, анын ичинде натыйжасы белгисиз жумуштун кимге таандык экендигин. Андан алсызыраак нерсе өткөрүү кодунда эмес, салыштыруу жетекчилигинде болот.

Үзгүлтүктү үч жерде кабыл ал: өткөрүү учурунда, колдонуу учурунда жана commit'тен кийин, бирок ырастоого чейин. Андан кийин кардардын билдирүүсүнүн ордуна бизнес натыйжаны текшер жана топтом китебине жумуш толук эмес, commit жасалган же дагы чечилбегенин айтууга мүмкүндүк бер.

Тектеш макалалар