ACIDコンプライアンスとは
原子性(atomicity)、一貫性(consistency)、分離性(isolation)、耐久性(durability)の4つの要素があることで、データベースのトランザクションがタイムリーに完了することができます。 データベースがこれらのコンポーネントを持っていると、ACID コンプライアンスと呼ばれます。 しかし、ACIDコンプライアンスとは何なのか、そしてなぜ気にする必要があるのか。
Atomicity (原子性)。 データベース トランザクションは、原子のように、より小さな部分に分解することができます。 データベースに関して言えば、原子性とは、データベース トランザクションのコンポーネントだけでなく、全体の整合性を意味します。 言い換えれば、トランザクションの1つの部分が想定通りに動作しないと、他の部分も結果的に失敗するということです。 例えば、電子商取引のサイトで買い物をする場合、支払いをするためには商品をカートに入れなければなりません。 カートに入っていない商品の代金を支払うことはできません。
一貫性。 データベースが意図されたとおりに動作するためには、適切なデータ検証ルールに従わなければなりません。 したがって、一貫性とは、これらの規則に従ったデータのみがデータベースに書き込まれることが許可されることを意味します。 トランザクションが発生し、データベースのルールに従わないデータが書き込まれた場合、そのトランザクションはルールに準拠した以前の反復(または「状態」)に「ロールバック」されます。 一方、トランザクションが成功した後は、新しいデータがデータベースに追加され、その結果として生じる状態は既存のルールと一致します。
隔離。 Amazonでは、いつでも、プラットフォーム上で1つ以上のトランザクションが発生していると言ってもいいでしょう。 実際、信じられないほど膨大な量のデータベース・トランザクションが同時に発生しています。 データベースにとってのアイソレーションとは、あるトランザクションが他のトランザクションに影響を与えないように、複数のトランザクションを同時に処理する能力を意味します。 例えば、あなたとあなたの隣人が、同じEコマース・プラットフォームで同時に何かを買おうとしているとします。 10個の商品が販売されており、隣人は5個、あなたは6個を希望しています。 隔離とは、これらのトランザクションのうち1つが、もう1つよりも先に完了することを意味します。 つまり、お隣さんが先にクリックした場合、5つの商品を手に入れることになり、在庫は5つしか残っていません。 つまり、5つのアイテムしか買えないことになります。 自分が先にクリックした場合、自分は6つのアイテムを手に入れることができ、相手は4つのアイテムしか手に入れることができません。 このように、アイソレーションによって、10個しか存在しないのに11個のアイテムが売られることはありません。
Durability(耐久性)。 すべてのテクノロジーは時々失敗します…目標は、その失敗をエンドユーザーに見えないようにすることです。 耐久性を備えたデータベースでは、停電やシステム障害が発生しても、トランザクションが完了すればデータは保存されます。 例えば、Ticketmaster.comのようなサイトで、需要の高いコンサートチケットを購入するとします。 チケットが販売されると同時に、お客様は購入の準備をします。 デジタルの待合室でしばらく待たされた後、ようやくそのチケットをカートに入れることができました。 そして購入し、確認書を受け取ります。 しかし、もしデータベースに耐久性がなければ、チケットの購入が確認された後でも、データベースに障害が発生した場合、取引は失われてしまいます。
MariaDBの一部であるClustrixDBは、成功に不可欠なACIDコンプライアンスを備えたNewSQLクラウドデータベースです。