この記事では、データベース技術の一角をなす「トランザクション」と「コマンドの原子性」に焦点を当てます。具体的には、リレーショナルデータベースの代表例であるSQLと、キーバリューストアの一つであるRedisにおけるトランザクションの取り扱いとその原子性について解説します。
目次
トランザクションとは
トランザクションは、一連の操作を一つの単位として扱う手法です。この一連の操作は、全て成功するか全て失敗するかのいずれかであり、その途中状態は存在しません。
SQLにおけるトランザクション
SQLでは、BEGIN TRANSACTION、COMMIT、ROLLBACKといったコマンドを用いてトランザクションを制御します。
BEGIN TRANSACTION;
-- SQL命令
COMMIT;
Redisにおけるトランザクション
Redisでは、MULTI、EXEC、DISCARDといったコマンドでトランザクションを制御します。
MULTI
-- Redisコマンド
EXEC
原子性とは
原子性とは、操作が不可分であるという性質です。つまり、ある操作が始まれば絶対に完了する、もしくは何も起こらなかったかのように処理される特性です。
SQLの原子性
SQLでは、ACID(Atomicity, Consistency, Isolation, Durability)というプロパティによって、原子性は保証されます。
Redisの原子性
Redisでは、単一のコマンドが原子的に実行されるとは限りませんが、MULTIとEXECを用いることで一連のコマンドを原子的に実行できます。
SQLとRedisのトランザクションの違い
SQLとRedisでのトランザクション処理の違いを表にまとめました。
項目 | SQL | Redis |
---|---|---|
基本コマンド | BEGIN, COMMIT, ROLLBACK | MULTI, EXEC, DISCARD |
原子性 | ACIDにより保証 | MULTIとEXECで保証 |
まとめ
トランザクションとは、複数の操作を一つの単位として扱い、その一連の操作が全て成功するか全て失敗するかのいずれかとなる仕組みです。SQLではACIDプロパティにより原子性が保証されますが、RedisではMULTIとEXECを使うことで原子性が保証されます。この知識を活かして、より堅牢なシステムを構築することが可能です。
created by Rinker
¥4,554
(2024/11/21 10:54:58時点 Amazon調べ-詳細)
コメント