Дерекқор жүйелерінде беріктікті қамтамасыз ету механизмі
Durability (database systems)
Дерекқор жүйелерінде беріктік – транзакциялардың қателер кезінде де сақталуын қамтамасыз ететін ACID қасиеті. Тұрақтылық, логтау және құлыптау туралы біліңіз.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Деректер базасы жүйелерінде беріктік – ACID қасиеттерінің бірі, ол жасалған транзакциялардың әсерлерінің, тіпті ақаулар болған жағдайда да, инциденттер мен катастрофалық оқиғаларды қоса алғанда, мәңгілік сақталуын қамтамасыз етеді. Мысалы, егер рейсті брондау орын сәтті брондалғанын хабарласа, жүйе құлаған жағдайда да ол орын брондалған күйінде қалады. Формальды түрде, деректер базасы жүйесі беріктік қасиетін қамтамасыз етеді, егер ол үш түрлі ақауға төзімді болса: транзакциялық, жүйелік және медиалық ақаулар. Мұндай үзілістер транзакция деңгейінде деректерді енгізу қателері, оператордың тоқтатуы, уақыттың өтуі немесе банк шотынан жеткіліксіз қаражатпен ақша алу сияқты қолданбаға тән қателерден туындауы мүмкін. Нақты айтқанда, сенімділік механизмі транзакциялардың басталуын, аяқталуын және кері қайтарылуын немесе журналдау мен құлыптауды нақты көрсететін бастауыш элементтерді қажет етеді. Осы типтегі ақауларға бейім болатын ұшқыш жадты, ұшқыш емес жадты таңдау себебі – осы жад түрлерін іске асыру үшін қолданылатын технологиялардың өнімділік айырмашылығында. Дегенмен, жағдай өзгеруі мүмкін, өйткені ұшқыш емес жад (NVM) технологиясының танымалдылығы артып келеді. Ұшқыш емес жадты қолдайтын жүйелерде беріктікке міндеттемелерді растамас бұрын транзакциялардың өзгермейтін тізбекті журналын сақтап, осы ұшқыш емес жадқа жіберу арқылы қол жеткізуге болады. Атомикалық қасиеттерінің арқасында транзакциялар қалпына келтіру процесіндегі жұмыс бірлігі ретінде қарастырылады, ол журналды пайдалану арқылы беріктікті қамтамасыз етеді. Атап айтқанда, журналға жазу механизмі алдын ала жазу журналы (WAL) деп аталады және негізгі жадтан дискіге синхрондалғанға дейін өзгерістерді буферлеу арқылы беріктікті қамтамасыз етеді. Осылайша, журналды қайта құру арқылы жасалған барлық транзакциялар жүйелік деңгейдегі ақауларға төзімді болады, өйткені оларды қайта жасауға болады. Ал міндеттемесіз транзакцияларды қалпына келтіруге болады, өйткені олардың операциялары деректер базасының күйін өзгертпей тұрып, ұшқыш емес жадқа журналдалады. Осылайша, ішінара орындалған операцияларды жүйе күйіне әсер етпей кері қайтаруға болады. Содан кейін, толыққан жоқ транзакцияларды қайта жасауға болады. Сондықтан, ұшқыш емес жадтан алынған транзакция журналын жүйелік деңгейдегі кез келген ақаудан бұрынғы жүйе күйін қайта құру үшін қайта өңдеуге болады. Журналдау деректерді және операцияларды (яғни транзакцияларды) бақылаудың комбинациясы ретінде жүзеге асырылатынын атап өту керек, бұл өнімділікті арттыру мақсатында жасалады.
In database systems, durability is the ACID property that guarantees that the effects of transactions that have been committed will survive permanently, even in case of failures, including incidents and catastrophic events. For example, if a flight booking reports that a seat has successfully been booked, then the seat will remain booked even if the system crashes. Formally, a database system ensures the durability property if it tolerates three types of failures: transaction, system, and media failures. These kinds of interruptions can be originated at the transaction level by data entry errors, operator cancellation, timeout, or application specific errors, like withdrawing money from a bank account with insufficient funds. Specifically, a reliability mechanism requires primitives that explicitly state the beginning, the end, and the rollback of transactions, or logging and locking. The reason behind the choice of having volatile storage, which is subject to this type of failure, and non volatile storage, is found in the performance differences of the existing technologies that are used to implement these kinds of storage. However, the situation is likely to evolve as the popularity of non volatile memories (NVM) technologies grows. In systems that include non volatile storage, durability can be achieved by keeping and flushing an immutable sequential log of the transactions to such non volatile storage before acknowledging commitment. Thanks to their atomicity property, the transactions can be considered the unit of work in the recovery process that guarantees durability while exploiting the log. In particular, the logging mechanism is called write ahead log (WAL) and allows durability by buffering changes to the disk before they are synchronized from the main memory. In this way, by reconstruction from the log file, all committed transactions are resilient to system level failures, because they can be redone. Non committed transactions, instead, are recoverable, since their operations are logged to non volatile storage before they effectively modify the state of the database. In this way, the partially executed operations can be undone without affecting the state of the system. After that, those transactions that were incomplete can be redone. Therefore, the transaction log from non volatile storage can be reprocessed to recreate the system state right before any later system level failure. It is worth mentioning that logging is done as a combination of tracking data and operations (i. e. transactions) for performance reasons.
Медиа деңгейі
Медиа деңгейінде, қателік жағдайлары қатты дискілер, жинақталған күйдегі дискілер және басқа да сақтау аппараттық құрамдастар сияқты тұрақталмаған жадқа әсер етеді. Бұл деңгейде сенімділік пен жүйе және деректерді қалпына келтіру арасында тығыз байланыс бар, себебі басты мақсат деректерді онлайн көшірмелерде ғана емес, сонымен қатар офлайн көшірмелерде сақтап қалу болып табылады. Сондықтан, медианың бұзылу жағдайында, транзакциялардың сенімділігі база деректері жүйесінде қалай жүзеге асырылғанына қарамастан, тұрақты жадта сақталған журналдық файлдардан дерекқорының күйін қайта құру мүмкіндігі арқылы қамтамасыз етіледі.
At media level, failure scenarios affect non volatile storage, like hard disk drives, solid state drives, and other types of storage hardware components. At this level, there is a strong bond between durability and system and data recovery, in the sense that the main goal is to preserve the data, not necessarily in online replicas, but also as offline copies. Therefore, in case of media failure, the durability of transactions is guaranteed by the ability to reconstruct the state of the database from the log files stored in the stable memory, in any way it was implemented in the database system.
Таратылған деректер қорлары
Бөлінген транзакцияларда тұрақтылықты қамтамасыз ету үшін барлық деректер базасы түйіндерінде дәйекті күй тізбегін сақтау үшін қосымша механизмдер қажет. Яғни, мысалы, бір түйіннің транзакцияны қабылдау арқылы аяқтау туралы шешім қабылдауы жеткіліксіз болуы мүмкін. Шындығында, сол транзакцияда қолданылған ресурстар басқа түйіндерде орналасуы мүмкін, онда басқа транзакциялар бір уақытта орындалуы мүмкін. Әйтпесе, егер сәтсіздік орын алса және дәйектілікке кепілдік берілмесе, деректер базасының қауіпсіз күйін анықтап, қалпына келтіру мүмкін болмайды. Осы себепті, міндеттемелерді растамас бұрын барлық қатысушы түйіндер үйлестіруі керек. Бұл әдетте екі кезеңді міндеттеме протоколы арқылы жүзеге асырылады. Сонымен қатар, үлестірілген деректер базаларында тіркеу және қалпына келтіру протоколдары да үлестірілген ортаның мәселелерін, мысалы, транзакциялардың тұрақтылығы мен қалпына келтіруіне кедеріл келтіретін түйықтарды қарастыруы керек. Осы қасиеттерді қамтамасыз ететін кеңінен қолданылатын алгоритмдер отбасы – Семантиканы пайдаланатын қалпына келтіру және оқшаулау алгоритмдері (ARIES).
In distributed transactions, ensuring durability requires additional mechanisms to preserve a consistent state sequence across all database nodes. This means, for example, that a single node may not be enough to decide to conclude a transaction by committing it. In fact, the resources used in that transaction may be on other nodes, where other transactions are occurring concurrently. Otherwise, in case of failure, if consistency could not be guaranteed, it would be impossible to acknowledge a safe state of the database for recovery. For this reason, all participating nodes must coordinate before a commit can be acknowledged. This is usually done by a two phase commit protocol. In addition, in distributed databases, even the protocols for logging and recovery shall address the issues of distributed environments, such as deadlocks, that could prevent the resilience and recoverability of transactions and, thus, durability. A widely adopted family of algorithms that ensures these properties is Algorithms for Recovery and Isolation Exploiting Semantics (ARIES).