Ubuntu/LinuxMintのDocker環境でKey Value Databaseを調べました ( mongoDB / Redis )
1.概要
NoSQLデータベースの中で、以前テストしたことがある「MongoDB」と、メモリベースで高速な「Redis」をDocker環境で動かし、その特徴を調査しました。実際に手を動かしてみることで、データの扱われ方や効率的な使い方のヒントが見えてきました。
調査内容はMongoDBとRedisです。これらは従来のRDB(関係データベース)とは異なり、複雑なテーブル結合(JOIN)などの処理がないため、非常に高速に動作します。しかし、項目間の関連性を持たせにくいため、複雑なデータ構造を扱う場合はアプリケーション側での処理負担が増えそうだと感じています。
2.詳細
(1) Key Value DatabaseのmongoDB
最低限の動作試験を目指します。
(a) docker-compolse.yml
以下のようにdocker-compose.ymlを作成します
version: '3.8'
services:
mongo:
image: mongo:latest
container_name: mongo-container
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
ports:
- "27017:27017"
(b) 起動
$ docker-compose up -d
(c) containerにloginして、mongoを操作します。
コンテナにログイン後、新しいツールである mongosh を使ってテストデータ(テーブル/コレクション)を作成し、データの保存と読み出しを行います。
雰囲気的には、JSON形式のデータを保存しているだけのように見えます。
$ docker exec --user root -it mongo-container
# mongosh -u root -p example
> db.testtable.insert({ubuntu:"20.04"})
{
acknowledged: true,
insertedIds: { '0': ObjectId('67304cbacb80b9a2c6fe6911') }
}
> db.testtable.find()
[ { _id: ObjectId('67304cbacb80b9a2c6fe6911'), ubuntu: '20.04' } ]
> exit
# exit
(2) Key Value DatabaseのRedis
Key Value DatabaseのRedisをネットで情報を見つけて、動かしてみました。Redisはmemory baseのKey Value Databaseなので、Disk上にどのように保管されるかも気になりました。この内容を記述します。
Docker環境で試験をしました。Base環境はUbuntu-20.04.6です。DockerはUbuntu標準を利用しました。
Docker-hubを参照して、Redis 7.4.1を選択して試験しました。
(a) docker-compose.yml
docker-compose.ymlを以下のように設定しました
version: '3.1'
services:
redis:
image: redis:7.4.1
container_name: redis-container
(b) container起動
$ docker-compose up -d
(c) containerへloginと簡単な試験
$ docker exec --user root -it redis-container /bin/bash
# redis-cli
> set ubuntu 20.04
OK
> get ubuntu
"20.04"
> exit
# redis-cli bgsave
# ls
dump.rdb
dump.rdb がバックアップファイルのようです。
# exit
$ docker-compose stop
$ docker-compose up -d
$ docker exec --user root -it redis-container /bin/bash
# redis-cli
> set ubuntu 20.04
OK
dump.rdsから起動時に復元されるようです
3.所見
Key Value databaseはキーと値がセットなので高速アクセスを期待できます。しかし、RDBなどのように関連性でデータを呼び出すことが難しいので使い方が難しいと感じています。速度優先の処理に活用するのが良い気がします。
参考
[本ブログ内参照]・ARM64のubuntu-arm64をKVMで動作にチャレンジ
コメント
コメントを投稿