Кіріспе
Себептік тұрақтылық - естелік тұрақтылығының негізгі модельдерінің бірі. Бір мезгілдегі бағдарламалауда, бір мезгілдегі процестер ортақ жадқа қол жеткізгенде, сәйкестік моделі қандай қол жеткізулер заңды екенін шектейді. Бұл бөлінген ортақ жады немесе бөлінген транзакциялардағы дұрыс дерек құрылымдарын анықтау үшін пайдалы. Себептік сәйкестік - Partition астында қол жетімді, яғни процесс процестер арасында жұмыс істейтін желілік байланыс болмаған кезде де жадынан оқи алады және жаза алады (жад қол жетімді); бұл асинхронды модель. Қауіпсіз және бөлініп тұрған және синхрондастыруды қажет ететіндіктен жауап беруі баяу болатын, реттілік немесе сызықтық жүйелілік сияқты мықты жүйелілік модельдеріне қарама-қайшы. 1990 жылдары себептік сәйкестік ортақ жады модельдерінің әлсіз сәйкестік моделі ретінде ұсынылды. Себептік сәйкестік байланыс протоколдардағы себептік хабарландыру тұжырымдамасымен тығыз байланысты. Бұл модельдерде бөлінген орындау Лампорттың потенциалдық себептік байланысы тұжырымдамасына негізделген ішінара тәртіп ретінде бейнеленеді. Себептік сәйкестік - пайдалы сәйкестік моделі, өйткені ол бағдарламалаушылардың уақыт туралы интуициясына сәйкес келеді, ол берік сәйкестік модельдерінен көбірек қол жетімді, бірақ соңғы сәйкестен артық пайдалы кепілдіктер береді. Мысалы, таратылған деректер қорында себептік сәйкестік операциялардың ретін қолдайды, ал соңғы сәйкестікке қарама-қайшы. Сондай-ақ, себептік дәйектілік кезектер немесе санаушылар сияқты абстрактілік дерек түрлерін дамытуға көмектеседі. Уақыт пен тәртіп біздің интуициямызға өте маңызды болғандықтан, себептік тұрақтылықты талап етпейтін жүйе туралы ойлау қиын. Алайда, көптеген таратылған деректер қорларында, тіпті сериялануды қамтамасыз ететіндерінде де, бұл кепілдік жоқ. Spanner себептік тұрақтылықты кепілдендіреді, бірақ ол сондай-ақ қатты тұрақтылықты мәжбүрлейді, осылайша бөлініс бойынша қол жетімділіктен аулақ болады. Себептік сәйкестікті қамтамасыз ететін қосымша деректер қорына MongoDB және AntidoteDB кіреді.
to reason about a system that does not enforce causal consistency. However, many distributed databases lack this guarantee, even ones that
provide serialisability. Spanner does guarantee causal consistency, but it also forces strong consistency, thus eschewing availability under partition. More available databases that ensure causal consistency include MongoDB
and AntidoteDB.
Анықтама
Себептік дәйектілік операциялар арасындағы ықтимал себептік байланысты қамтиды және барлық процестер себепті байланысты операцияларды ортақ тәртіппен бақылайтынын кепілдейді. Басқаша айтқанда, жүйедегі барлық процестер себепті байланысты операциялардың ретімен келіседі. Олар себеп-салдар байланысы жоқ операциялардың реті туралы келіспеушіліктер болуы мүмкін. Себептік сәйкестік моделі ретті сәйкестіктен әлсіз, бұл барлық процестер себепті байланысты болсын, болмасын, барлық жазу операцияларын ортақ тәртіппен бақылайтынын қамтамасыз етеді. Алайда, PRAM-ке сәйкестіктен себептік сәйкестік күштірек, бұл тек бір процеспен орындалатын жазу операцияларын ғана бір-бір процеспен ортақ тәртіппен бақылау қажет. Одан кейін жүйе ретті түрде сәйкес келсе, ол себептік жағынан да сәйкес келеді. Сонымен қатар, себептік сәйкестік PRAM сәйкестігін білдіреді, бірақ керісінше емес.
Сессиялық кепілдіктер
Себептік сәйкестік моделі төрт сессиялық кепілдіктерге дейін жетілдірілуі мүмкін. Оларды былайша қорытындылауға болады: Өз жазбаларыңызды оқыңыз: Егер процесс жазуды орындаса, сол процесс кейіннен жазу нәтижесін бақылайды. Монотонды оқу: процеспен байқалатын (оқылған) жазулар жиынтығының монотонды түрде азаймауы кепілдендірілген. Жазудан кейін оқу: егер кейбір процесс оқуды орындаса, содан кейін жазуды орындаса және басқа процесс жазу нәтижесін бақыласа, онда ол оқығанды да бақылай алады (егер ол үстінен жазылмаса). Монотонды жазу: Егер кейбір процесс жазуды орындаса, кейінірек басқа жазумен, басқа процестер оларды бірдей тәртіппен бақылайды. Дәуджи мен Салем сериялылық және снэпшоттық оқшаулаудың транзакциялық сессиялық кепілдіктерін ұсынады.
Read Your Writes: If a process performs a write, the same process later observes the result of its write. Monotonic Reads: the set of writes observed (read) by a process is guaranteed to be monotonically non decreasing. Writes Follow Reads: if some process performs a read followed by a write, and another process observes the result of the write, then it can also observe the read (unless it has been overwritten). Monotonic Writes: If some process performs a write, followed some time later by another write, other processes will observe them in the same order. Transactional session guarantees for serialisability and snapshot isolation are presented by Daudjee and Salem.