Атомдық транзакциялар туралы: ACID қағидаларының бірі, дерекқор операцияларының толық орындалуын қамтамасыз етеді. Дерекқорыңыздың тұрақтылығын сақтаңыз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
ACID деректер базасы жүйесінің қасиеттері
Property of the ACID database system
Деректер базасы жүйелерінде атомдық ( /æ//t//ə/'/m//ɪ//s//ə//t//i/; грекше ἄτομος сөзінен) ACID (Атомдық, Тұтастылық, Оқшаулану, Тұрақтылық) транзакциясының қасиеттерінің бірі болып табылады. Атомдық транзакция – бұл деректер базасы операцияларының бөлінбейтін және азайтылмайтын тізбегі, яғни барлық операциялар орындалады немесе ешқайсысы да орындалмайды. Атомдық болу кепілдігі деректер базасының жартылай жаңартылуына жол бермейді, себебі бұл бүкіл тізбекті бірден қабылдамаудан да ауыр проблемалар тудыруы мүмкін. Соның салдарынан, басқа деректер базасы пайдаланушысы транзакцияның орындалып жатқанын байқамайды. Бір сәтте ол әлі басталмаған, ал келесі сәтте толығымен орындалған (немесе транзакция орындалу кезінде тоқтатылса, ештеңе орындалмаған). Атомдық транзакцияның мысалы – А банктік шотынан В шотына ақша аудару. Ол екі операциядан тұрады: А шотынан ақшаны алу және В шотына сақтау. Бұл операцияларды атомдық транзакцияда орындау деректер базасының тұрақты күйде қалуын қамтамасыз етеді, яғни егер осы екі операцияның бірі сәтсіз аяқтаса, ақша жоғалмайды немесе жаңадан пайда болмайды. Бұл термин деректер базасы жүйелерінде бірінші нормативтік форманың анықтамасында да қолданылады, онда ол керісінше, өрістердегі мәндер бірнеше кіші мәндерден тұрмауы керек деген ұғымды білдіреді, мысалы, бірнеше атаулар, сандар, күндер немесе басқа да түрлер жинақталуы мүмкін.
In database systems, atomicity (,/æ//t//ə/'/m//ɪ//s//ə//t//i/; from ἄτομος) is one of the ACID (Atomicity, Consistency, Isolation, Durability) transaction properties. An atomic transaction is an indivisible and irreducible series of database operations such that either all occur, or none occur. A guarantee of atomicity prevents partial database updates from occurring, because they can cause greater problems than rejecting the whole series outright. As a consequence, the transaction cannot be observed to be in progress by another database client. At one moment in time, it has not yet happened, and at the next it has already occurred in whole (or nothing happened if the transaction was cancelled in progress). An example of an atomic transaction is a monetary transfer from bank account A to account B. It consists of two operations, withdrawing the money from account A and saving it to account B. Performing these operations in an atomic transaction ensures that the database remains in a consistent state, that is, money is neither lost nor created if either of those two operations fails. The same term is also used in the definition of First normal form in database systems, where it instead refers to the concept that the values for fields may not consist of multiple smaller values to be decomposed, such as a string into which multiple names, numbers, dates, or other types may be packed.
Ортогоналдылық
Атомдық операциялар транзакциялардың басқа ACID қасиеттерімен толығымен өзара тәуелсіз болмайды. Мысалы, оқшаулану, тұйықталу сияқты оқшаулану талабы бұзылған жағдайда, қоршаған транзакцияны кері қайтару үшін атомдық операцияға тәуелді; консистенттілік те заңсыз транзакцияның консистенттілік талабын бұзған жағдайда, қоршаған транзакцияны кері қайтару үшін атомдық операцияға тәуелді. Осының салдарынан, бұзушылықты анықтамау және қоршаған транзакцияны кері қайтармау оқшаулану немесе консистенттілік қатесіне алып келуі мүмкін.
Atomicity does not behave completely orthogonally with regard to the other ACID properties of transactions. For example, isolation relies on atomicity to roll back the enclosing transaction in the event of an isolation violation such as a deadlock; consistency also relies on atomicity to roll back the enclosing transaction in the event of a consistency violation by an illegal transaction. As a result of this, a failure to detect a violation and roll back the enclosing transaction may cause an isolation or consistency failure.
Іске асыру
Көбінесе жүйелер Atomicity-ді транзакциялардың қайсысы басталғанын және қайсысы аяқталғанын көрсететін механизм арқылы іске асырады; немесе кез келген өзгерістерге дейін деректердің көшірмесін сақтап (көшірме арқылы жаңарту). Бірнеше файлдық жүйелер деректердің бірнеше көшірмесін сақтау қажеттілігін болдырмау үшін журналдау әдістерін әзірледі (журналды файлдық жүйе қараңыз). Деректер базалары әдетте өзгерістерді қадағалау үшін журналдаудың бір түрін қолданады. Жүйе өзгерістер сәтті орындалғаннан кейін, қажет болған жағдайда журналдарды (көбінесе метадеректерді) синхрондандырады. Содан кейін, қателіктерді қалпына келтіру толық емес жазбаларды назарға алмайды. Іске асыру факторлары, мысалы, бірмезгілділік мәселелеріне байланысты әртүрлі болғанымен, атомдық принцип – яғни, толық сәттілік немесе толық сәтсіздік – сақталады. Кез келген қолданба деңгейіндегі іске асыру операциялық жүйенің мүмкіндіктеріне тәуелді. Файл жүйесі деңгейінде POSIX стандартымен үйлесімді жүйелер open(2) және flock(2) сияқты жүйелік шақыруларды ұсынады, олар қолданбаларға файлды атомдық түрде ашуға немесе құлыптауға мүмкіндік береді. Процесс деңгейінде POSIX жіптері тиісті синхрондау примитивтерін қамтамасыз етеді. Аппараттық деңгейде тест және орнату, алу және қосу, салыстыру және алмастыру немесе жүктеу сілтемесі/сақтау шарты сияқты атомдық операциялар, сондай-ақ жад кедергілері қажет. Портативті операциялық жүйелер синхрондауды іске асыру үшін үзілістерді тоқтатып қоя алмайды, өйткені гипертілемдеу немесе көппроцессорлық сияқты бірмезгілде орындалмауы мүмкін аппараттық құралдар қазір өте сирек кездеседі.
Typically, systems implement Atomicity by providing some mechanism to indicate which transactions have started and which finished; or by keeping a copy of the data before any changes occurred (read copy update). Several filesystems have developed methods for avoiding the need to keep multiple copies of data, using journaling (see journaling file system). Databases usually implement this using some form of logging/journaling to track changes. The system synchronizes the logs (often the metadata) as necessary after changes have successfully taken place. Afterwards, crash recovery ignores incomplete entries. Although implementations vary depending on factors such as concurrency issues, the principle of atomicity – i. e. complete success or complete failure – remain. Ultimately, any application level implementation relies on operating system functionality. At the file system level, POSIX compliant systems provide system calls such as open(2) and flock(2) that allow applications to atomically open or lock a file. At the process level, POSIX Threads provide adequate synchronization primitives. The hardware level requires atomic operations such as Test and set, Fetch and add, Compare and swap, or Load Link/Store Conditional, together with memory barriers. Portable operating systems cannot simply block interrupts to implement synchronization, since hardware that lacks concurrent execution such as hyper threading or multi processing is now extremely rare.