キーバリュー型(Key Value Store)データベースとは
キーバリューストアとは、データの書式を問わず、そのデータに対して何か「キー」となる値を結びつけて格納する方式のデータベース。略してKVSという。NoSQL型のデータベースの代表例。
キーというのは、データを見つけやすくするラベルのこと。リレーショナル型と異なり、柔軟性があり、データを書式通りに入力しなくて良い反面、なんでもデータとして格納できる。よって、詳細な検索ができない。しかし、データのアクセスが高速。
近年ではビックデータ処理やIoTのような大量のデータ処理や高速化が求められる場面で使用される。
キーバリューストア型のデータベースは、AWSに2種類用意されている。
1つは、ストレージに保存するDynamoDB、
もう1つは、メモリにキャッシュするAmazon ElasticCache。
DynamoDB
Amazon DynamoDBは、キーバリューストア型のデータベース。
リレーショナル型に向かない汎用的なデータを保存するのに適している。
リレーショナルの特徴は表であることと、デーブル同士が連携していること。つまり事前に形式をしっかりと決めなければならない上、形式通りのデータしか入力できない。テーブル同士が連携していることはストレージの節約にもなるが、処理が遅くなる側面もある。
キーバリューストア型は、納めるデータに書式はない。
項目数(列数・カラム数)もバラバラでよく、データ型も指定しない。テーブル同士の連携もない。
そのため、SQLが使用できないので高度な検索ができない弱点があるが、その代わりにリレーショナルより遥かに早く処理する。
DynamoDBはVPCなしで接続できるので、Lambdaなどの非VPCのアプリケーション実行環境と相性が良い。
大規模なデータを処理するために、ACID(トランザクションとして必要な各性質)トランザクション、データの暗号化、アクセス制御などのサービスが整っている。グローバテーブルとして作成すれば、世界中に分散しているデータを自分のリージョンに複製されて使用できる。
Amazon ElasticCache
Amazon ElasticCacheとは、インメモリ型のデータベース。
インメモリ型とは、データベース操作のたびに外部記憶装置と読み書きを行うのではなく、頻繁に読み書きのあるデータは一時的にメモリに置いておくなど、メモリを活用して処理を高速にする形式。
DynamoDBはストレージに保存するため、インメモリ型のElasticCasheの方がより高速。その代わりに、**インスタンスの再起動時にデータが削除されてしまう。**そのため、高速化を目的としたキャッシュとしてよく使われる。
ElasticCacheにはRedis用とMemcached用があり、RedisとMemcachedは、どちらも代表的なメモリキャッシュ型キーバリューストアのDBMS。