KVS 超入門
最近(個人的に)KVSというワードをよく耳にするのですが、「正直全く分からないっ!」ということで勉強+所感を書いてみました。
KVSって?
Key Value Storeの略で、「キー」と「値」から成る、シンプルなデータストアです。
いわゆる連想配列の上位互換に当たるデータベースという解釈で良いと思います。
連想配列というと、僕はソートされていないというイメージなのですが、KVSは主キーでソートされます。(KVSによるかも?)
表にするとこんな感じ。
学籍番号(主キー) | 氏名 | 性別 | 生年月日 |
---|---|---|---|
10001 | 田中太郎 | 男 | 1992/04/20 |
10002 | 佐藤健太 | 男 | 1992/10/10 |
10003 | 鈴木一樹 | 男 | 1992/06/03 |
繰り返しになりますが、見た目はキーと値から成るので本当に簡単。
勉強する前、
「ケイブイエス!」
「キーバリューストア!」
と周りが言っているのを聞いて、ガクブル((((;゚Д゚))))していたのが懐かしいです。
揮発性KVSと永続性KVS
KVSについて調べているうちに、さっきと言ってること違うじゃん!となることがあったんですが、どうやらKVSには揮発性KVSと永続性KVSがあるようです。
揮発性KVSと永続性KVSは、それぞれ真逆の特徴を持っています。
揮発性KVS
オンメモリストレージでデータを扱う高速のデータベースです。
分散キャッシュサーバ等に使用されます。
速い反面、データベースやOSの再起動でデータが消去されます。
また、データが一定量を超えた場合も古いデータが消去されます。
永続性KVS
オンディスクストレージでデータを扱うデータベースです。
揮発性KVSと比較して、速度は落ちますが、データの記憶容量と永続性の高さが特徴です。
KVSとRDB
先日、周りで「データの管理はRDB(Relational Database)でする?KVSでする?」というディスカッションがあったのですが、KVSとRDBの違いはどうでしょうか。
以下、RDBと比較したKVSの特徴です。
分散化のコストが低い
これが一番の特徴だと思います。
KVSはデータ(キー)同士に関連性がない分、分散化(e.g. 複数台のサーバを使用)のコストが低くなっています。
この特徴もあって、分散KVSとも言われます。
分散化によって、負荷分散や可用性の向上等が制限なく可能です。
分散による自由
分散が容易であるということは、アプリケーションに対して都合の良い位置にデータベースを用意できるので、データ運用の効率化を高めることができます。