Orientdb-transactions
OrientDB-トランザクション
RDBMSと同様に、OrientDBはトランザクションACIDプロパティをサポートします。 *トランザクション*は、データベース管理システム内で実行される作業単位で構成されます。 データベース環境でトランザクションを維持する主な理由は2つあります。
- 障害からの同時回復を可能にし、システム障害が発生した場合でもデータベースの一貫性を維持します。
- データベースに同時にアクセスするプログラム間の分離を提供します。
デフォルトでは、データベーストランザクションは、Atomic、Consistent、Isolated、DurableプロパティなどのACIDプロパティに従う必要があります。 しかし、OrientDBはACIDに準拠したデータベースです。つまり、ACIDの概念に矛盾したり否定したりすることはありませんが、NoSQLデータベースを処理する際に認識を変更します。 ACIDプロパティがNoSQLデータベースとともにどのように機能するかを見てください。
アトミック-データベースを変更するために何かをするとき、変更は全体として機能するか失敗します。
一貫性-データベースは一貫性を保つ必要があります。
分離-他のトランザクション実行が同時に実行されている場合、ユーザーは同時実行でレコードを表示できません。
耐久性-システムがクラッシュした場合(ハードウェアまたはソフトウェア)、データベース自体がバックアップを取ることができるはずです。
データベーストランザクションは、CommitおよびRollbackコマンドを使用して実現できます。
コミット
コミットとは、データベースへのすべての変更を保存してトランザクションを閉じることを意味します。 ロールバックとは、トランザクションを開いた時点までデータベースの状態を回復することです。
次の文は、COMMITデータベースコマンドの基本的な構文です。
COMMIT
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、このチュートリアルの前の章で作成した「デモ」という名前の同じデータベースを使用します。 トランザクションをコミットする操作を確認し、トランザクションを使用してレコードを保存します。
次のBEGINコマンドを使用して、最初にトランザクションを開始する必要があります。
orientdb {db = demo}> BEGIN
次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
次のコマンドを使用して、トランザクションをコミットできます。
orientdb> commit
このトランザクションが正常にコミットされると、次の出力が得られます。
Transaction 2 has been committed in 4ms
ロールバック
ロールバックとは、トランザクションを開いた時点までデータベースの状態を回復することです。
次の文は、ROLLBACKデータベースコマンドの基本的な構文です。
ROLLBACK
注-特定のデータベースに接続し、トランザクションを開始した後にのみ、このコマンドを使用できます。
例
この例では、チュートリアルの前の章で作成した「デモ」という名前の同じデータベースを使用します。 ロールバックトランザクションの操作を確認し、トランザクションを使用してレコードを保存します。
次のBEGINコマンドを使用して、最初にトランザクションを開始する必要があります。
orientdb {db = demo}> BEGIN
次のコマンドを使用して、id = 12およびname = satish.Pの値を持つ従業員テーブルにレコードを挿入します。
orientdb> INSERT INTO employee (id, name) VALUES (12, 'satish.P')
次のコマンドを使用して、表employeeのレコードを取得できます。
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
このコマンドが正常に実行されると、次の出力が得られます。
---+-------+--------------------
# | ID | name
---+-------+--------------------
0 | 12 | satish.P
---+-------+--------------------
1 item(s) found. Query executed in 0.076 sec(s).
次のコマンドを使用して、このトランザクションをロールバックできます。
orientdb> ROLLBACK
選択クエリをもう一度チェックして、Employeeテーブルから同じレコードを取得します。
orientdb> SELECT FROM employee WHERE name LIKE '%.P'
ロールバックが正常に実行されると、出力に0レコードが見つかります。
0 item(s) found. Query executed in 0.037 sec(s).