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全体の概念である。

大項目
案内
ツールボックス