Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Деректер қорын басқару жүйесінде орындалған жұмыс бірлігі
Unit of work performed within a database management system
Деректер қорын басқару жүйесінде (немесе ұқсас жүйеде) дерекқорға қатысты орындалған, басқа операциялардан тәуелсіз, біртұтас және сенімді түрде қаралатын жұмыс бірлігі дерекқор транзакциясы деп аталады. Транзакция, әдетте, деректер базасындағы кез келген өзгерісті білдіреді. Деректер базасы ортасындағы транзакциялардың екі негізгі мақсаты бар:
A database transaction symbolizes a unit of work, performed within a database management system (or similar system) against a database, that is treated in a coherent and reliable way independent of other transactions. A transaction generally represents any change in a database. Transactions in a database environment have two main purposes:
Жүйелік қателер кезінде деректер базасын дұрыс қалпына келтіруге және жүйе іркілген жағдайда да деректер базасының тұрақтылығын сақтауға мүмкіндік беретін сенімді жұмыс бірліктерін қамтамасыз ету. Мысалы: орындалу күтпеген жерден тоқтағанда (толық немесе ішінара), деректер қорындағы көптеген операциялар аяқталмай, олардың жай-күйі белгісіз болып қалады. Деректер қорына бір мезгілде қол жеткізетін бағдарламалардың арасында оқшаулануды қамтамасыз ету. Егер оқшаулану қамтамасыз етілмесе, бағдарламалардың нәтижелері қате болуы мүмкін. Деректер қорын басқару жүйесінде транзакция – логиканың немесе жұмыстың бір бірлігі, ол кейде бірнеше операциядан тұрады. Деректер қорында жүйелі түрде орындалатын кез келген логикалық есептеу транзакция деп есептеледі. Мысалы, бір банктік шоттан екіншісіне ақша аудару: толық транзакция үшін аударылатын соманы бір шоттан алып тастап, сол соманы екінші шотқа қосу қажет. Деректер қорының транзакциясы, анықтама бойынша, атомдық (толығымен орындалуы немесе ешқандай әсері болмауы керек), дәйекті (деректер қорындағы қолданыстағы шектеулерге сәйкес болуы керек), оқшауланған (басқа транзакцияларға әсер етпеуі керек) және тұрақты (тұрақты сақтау құрылғысына жазылуы керек) болуы тиіс. Деректер қорымен жұмыс жасайтындар осы транзакциялардың қасиеттерін ACID аббревиатурасымен белгілейді.
To provide reliable units of work that allow correct recovery from failures and keep a database consistent even in cases of system failure. For example: when execution prematurely and unexpectedly stops (completely or partially) in which case many operations upon a database remain uncompleted, with unclear status. To provide isolation between programs accessing a database concurrently. If this isolation is not provided, the programs' outcomes are possibly erroneous. In a database management system, a transaction is a single unit of logic or work, sometimes made up of multiple operations. Any logical calculation done in a consistent mode in a database is known as a transaction. One example is a transfer from one bank account to another: the complete transaction requires subtracting the amount to be transferred from one account and adding that same amount to the other. A database transaction, by definition, must be atomic (it must either be complete in its entirety or have no effect whatsoever), consistent (it must conform to existing constraints in the database), isolated (it must not affect other transactions) and durable (it must get written to persistent storage). Database practitioners often refer to these properties of database transactions using the acronym ACID.
Транзакциялық деректер қоры
Транзакциялық деректер қоры – деректер қоры операцияларының (бастау) шеңберінде ACID қасиеттерін қамтамасыз ететін ДБСЖ (Деректерді басқару жүйесі). Транзакциялар деректер базасының бір мезгілде жаңартылуы мен қателер кездесуі жағдайында да тұрақты күйде қалуын қамтамасыз етеді. Транзакция ішіндегі барлық жазу операциялары «барлығы немесе ештеңе» принципімен жұмыс істейді, яғни транзакция сәтті аяқталса, барлық өзгерістер күшіне енеді, әйтпесе деректер базасы транзакция жасаған өзгерістерден бұрынғы күйіне қайтарылады. Транзакциялар бір мезгілде жүзеге асырылатын операциялардың нәтижелері белгілі бір кепілдіктерге, яғни оқшаулау деңгейіне сәйкес келеді. Оқшаулаудың ең жоғары деңгейі – қатарлану, ол бір мезгілдегі транзакциялардың нәтижесінің олардың реттік орындалуымен бірдей болатынын кепілдік береді. Көптеген қазіргі заманғы реляциялық деректерді басқару жүйелері транзакцияларды қолдайды. NoSQL деректер қоры деректердің дұрыстығын сақтау үшін транзакцияларды қолдаумен қатар, масштабтауға басымдық береді, бір мезгілде жаңартулар мен қолжетімділіктер кезінде. Деректер базасы жүйесінде транзакция бір немесе бірнеше деректерді өңдеу операторлары мен сұраныстарынан тұрады, олардың әрқайсысы деректер базасындағы ақпаратты оқиды және/немесе жазады. Деректер базасын пайдаланушылар деректердің дұрыстығы мен толықтығын өте маңызды деп санайды. Қарапайым транзакция әдетте деректер базасы жүйесіне транзакция шеңберінде SQL сияқты тілде келесі үлгіде беріледі:
A transactional database is a DBMS that provides the ACID properties for a bracketed set of database operations (begin commit). Transactions ensure that the database is always in a consistent state, even in the event of concurrent updates and failures. All the write operations within a transaction have an all or nothing effect, that is, either the transaction succeeds and all writes take effect, or otherwise, the database is brought to a state that does not include any of the writes of the transaction. Transactions also ensure that the effect of concurrent transactions satisfies certain guarantees, known as isolation level. The highest isolation level is serializability, which guarantees that the effect of concurrent transactions is equivalent to their serial (i. e. sequential) execution. Most modern relational database management systems support transactions. NoSQL databases prioritize scalability along with supporting transactions in order to guarantee data consistency in the event of concurrent updates and accesses. In a database system, a transaction might consist of one or more data manipulation statements and queries, each reading and/or writing information in the database. Users of database systems consider consistency and integrity of data as highly important. A simple transaction is usually issued to the database system in a language like SQL wrapped in a transaction, using a pattern similar to the following:
Транзакцияны бастаңыз. Деректерді өңдеу және/немесе сұраныстарды орындаңыз. Егер қате болмаса, транзакцияны бекітіңіз. Егер қате туындаса, транзакцияны кері қайтарыңыз. Транзакцияны бекіту операциясы транзакция шеңберіндегі деректерді өңдеу нәтижелерін деректер базасына сақтайды. Транзакцияны кері қайтару операциясы транзакция шеңберіндегі деректерді өңдеудің аралық нәтижелерін деректер базасына сақтамайды. Ешбір жағдайда деректер базасына аралық транзакция жасалмайды, өйткені бұл деректер базасын дұрыс емес күйде қалдырады. Ішкі жүйеде көп пайдаланушылы деректер қоры транзакцияларды сақтайды және өңдейді, көбінесе транзакция идентификаторы немесе XID арқылы. Жоғарыда сипатталған қарапайым әдістен басқа транзакцияларды жүзеге асырудың көптеген басқа да тәсілдері бар. Мысалы, ішкі транзакциялар – бұл жаңа транзакцияларды бастайтын (яғни қосалқы транзакциялар) операторларды қамтитын транзакциялар. Көп деңгейлі транзакциялар – бұл ішкі транзакциялар қабатталған жүйе архитектурасының әртүрлі деңгейлерінде (мысалы, деректер базасы қозғалтқышы деңгейінде бір операция, операциялық жүйе деңгейінде бір операция) орын алатын ішкі транзакциялардың бір түрі. Тағы бір транзакция түрі – өтемақы транзакциясы.
Begin the transaction. Execute a set of data manipulations and/or queries. If no error occurs, then commit the transaction. If an error occurs, then roll back the transaction. A transaction commit operation persists all the results of data manipulations within the scope of the transaction to the database. A transaction rollback operation does not persist the partial results of data manipulations within the scope of the transaction to the database. In no case can a partial transaction be committed to the database since that would leave the database in an inconsistent state. Internally, multi user databases store and process transactions, often by using a transaction ID or XID. There are multiple varying ways for transactions to be implemented other than the simple way documented above. Nested transactions, for example, are transactions which contain statements within them that start new transactions (i. e. sub transactions). Multi level transactions are a variant of nested transactions where the sub transactions take place at different levels of a layered system architecture (e. g., with one operation at the database engine level, one operation at the operating system level). Another type of transaction is the compensating transaction.
SQL-де
Транзакциялар көптеген SQL дерекқорында қолжетімді, бірақ беріктігі әртүрлі деңгейде болады. Мысалы, MySQL 3.23 нұсқасынан бастап транзакцияларды қолдауды бастады, бірақ InnoDB сақтау механизмі 5.5 нұсқасына дейін әдепкі болып бағдарланбады. Алдыңғы қолжетімді MyISAM сақтау механизмі транзакцияларды қолдамайды. Транзакция әдетте BEGIN командасымен басталады (бірақ SQL стандарты START TRANSACTION деп көрсетеді). Жүйе COMMIT операторын өңдегенде, транзакция сәтті аяқталады. ROLLBACK операторы да транзакцияны аяқтап, BEGIN-нен бастап орындалған барлық жұмысты кері қайтара алады. Егер транзакция басталғанда автоматты растау өшірілген болса, транзакция аяқталғаннан кейін автоматты растау қайта қосылады. Жеке транзакциялық операциялар үшін де, жалпы түрде де оқшаулану деңгейін орнатуға болады. Ең жоғары деңгейде (READ COMMITTED), транзакция басталғаннан кейін орындалған кез келген операцияның нәтижесі транзакция аяқталғанға дейін басқа дерекқор пайдаланушыларына көрінбейді. Ең төменгі деңгейде (READ UNCOMMITTED), кейде жоғары параллелизмді қамтамасыз ету үшін қолданылатын, мұндай өзгерістер бірден көрінеді.
Transactions are available in most SQL database implementations, though with varying levels of robustness. For example, MySQL began supporting transactions from early version 3.23, but the InnoDB storage engine was not default before version 5.5. The earlier available storage engine, MyISAM does not support transactions. A transaction is typically started using the command BEGIN (although the SQL standard specifies START TRANSACTION). When the system processes a COMMIT statement, the transaction ends with successful completion. A ROLLBACK statement can also end the transaction, undoing any work performed since BEGIN. If autocommit was disabled with the start of a transaction, autocommit will also be re enabled with the end of the transaction. One can set the isolation level for individual transactional operations as well as globally. At the highest level (READ COMMITTED), the result of any operation performed after a transaction has started will remain invisible to other database users until the transaction has ended. At the lowest level (READ UNCOMMITTED), which may occasionally be used to ensure high concurrency, such changes will be immediately visible.
Нысандар деректер қоры
Байланысты деректер қоры дәстүрлі түрде белгілі өлшемдегі өрістері мен жазбалары бар кестелерден құралады. Объект деректер қоры өзгермелі өлшемдегі блобтардан тұрады, олар тізбелене алады немесе MIME түрін қамтуы мүмкін. Реляциялық және объект деректер қорының негізгі ұқсастығы – транзакцияны бастау және оны міндеттеу немесе кері қайтару. Транзакция басталғаннан кейін деректер қорының жазбалары немесе объектілері тек оқуға немесе оқу-жазуға бұғатталады. Содан кейін оқу және жазу амалдары орындалады. Транзакция толыққаннан кейін өзгерістер атомдық түрде міндеттеледі немесе кері қайтарылады, нәтижесінде транзакция соңында ешқандай қарама-қайшылық болмайды.
Relational databases are traditionally composed of tables with fixed size fields and records. Object databases comprise variable sized blobs, possibly serializable or incorporating a mime type. The fundamental similarities between Relational and Object databases are the start and the commit or rollback. After starting a transaction, database records or objects are locked, either read only or read write. Reads and writes can then occur. Once the transaction is fully defined, changes are committed or rolled back atomically, such that at the end of the transaction there is no inconsistency.
Бөлінген операциялар
Деректер қоры жүйелері таратылған транзакцияларды бірнеше түйіндер арқылы деректерге қол жеткізу ретінде іске асырады. Таратылған транзакция бірнеше түйіндерде ACID қасиеттерін сақтайды және деректер базалары, сақтау басқарушылары, файлдық жүйелер, хабар алмасу жүйелері және басқа да дерек басқарушы жүйелерді қамтуы мүмкін. Таратылған транзакцияда әдетте барлық процесті үйлестіретін және транзакцияның барлық бөліктері тиісті жүйелерге қолданылуын қамтамасыз ететін бір нысан болады. Сонымен қатар, осы ортада Storage as a Service (StaaS) интеграциясы маңызды, себебі ол әртүрлі қолжетімділік, кеңейтімділік және ACID қасиеттері бар, бұлттағы деректер сақтау сыныптарын қамтитын, дерлік шексіз сақтау ресурстарын ұсынады. Бұл интеграция бұлттағы деректер сақтауларда орналасқан деректерге көп көлемді қолданушылық қолданбаларда жоғары қолжетімділікке, жауап беру уақытын қысқартуға және шығындарды тиімді етуге септеседі.
Database systems implement distributed transactions as transactions accessing data over multiple nodes. A distributed transaction enforces the ACID properties over multiple nodes, and might include systems such as databases, storage managers, file systems, messaging systems, and other data managers. In a distributed transaction there is typically an entity coordinating all the process to ensure that all parts of the transaction are applied to all relevant systems. Moreover, the integration of Storage as a Service (StaaS) within these environments is crucial, as it offers a virtually infinite pool of storage resources, accommodating a range of cloud based data store classes with varying availability, scalability, and ACID properties. This integration is essential for achieving higher availability, lower response time, and cost efficiency in data intensive applications deployed across cloud based data stores.
Транзакциялық файл жүйелері
Linux үшін Namesys Reiser4 файлдық жүйесі транзакцияларды қолдайды, ал Microsoft Windows Vista нұсқасынан бастап Microsoft NTFS файлдық жүйесі желілер арқылы таратылған транзакцияларды қолдайды. Деректердің үйлесімділігін арттыратын, Warp Transactional Filesystem (WTF) сияқты жаңа файлдық жүйелерді зерттеу жұмыстары жүргізілуде.
The Namesys Reiser4 filesystem for Linux supports transactions, and as of Microsoft Windows Vista, the Microsoft NTFS filesystem supports distributed transactions across networks. There is occurring research into more data coherent filesystems, such as the Warp Transactional Filesystem (WTF).