KVSとRDBの議論
提供: LunaBiblos
Software > DataBase > KVSとRDBの議論
目次 |
必要な概念
ACID特性
| Atomicity | 原子性 | あるTransactionに伴う処理が複数あったとしても それら全処理が適用されるか、全て適用されないかの2択の結果しか生まれない事 |
| Consistency | 一貫性 整合性 | あるTransactionに伴う処理の前後で、予め存在する条件が満たされている事を言う |
| Isolation | 隔離性 | あるTransactionの前後の結果のみしか外部から知り得ない事を言う |
| Durability | 永続性 | あるTransaction終了後の結果が失われない事 |
DatabaseのTransactionにおける特性で、RDBを支えている概念でもある。
RDBでも一貫性/整合性を多少犠牲にする事でScaleOutさせる手法は存在する
CAP原則
| Consistency | 一貫性、整合性 |
| Availability | 可用性 |
| Partitioning Tolerance | 分断耐性 |
とあるSystem上では上記の3特性の内2つ迄しか満たす事が出来ないという説。
分断耐性とは、分散処理を行っている差異にネットワークの断絶が発生した場合でも、全体的な機能に問題を与える事である。
Cloud基盤上では基本的に分散処理を基礎とする為にConsistencyとAvailabilityのいずれかを犠牲にするしかない。が、どうしても規模が大きくなりやすいCloud基盤を利用する際は、可用性を担保しなければならない。
そうなると犠牲にせざるを得ないのがConsistencyとなる。そこで考案されたのがEventually Consistentという概念。
同時に分断耐性を保証する場合にも「不正な結果を返さない事を目的として一時停止する」事を教養するという考え方もある。
参考
BASE特性
DataBaseを含んだSystem全体における特性
| Basically Available | 利用可能である状態を最優先にする |
| Soft state | 一時的にConsistencyがを欠いた状態になりえる事 |
| Eventual Consistency | 最終的にはConsistencyが保たれた状態になる事 |
RDBとKVSを比較する事で誕生した新たな概念。ACID特性がTransactionに対する概念であるのに対し、BASE特性はDataBaseを含むSystem全体の概念である。