MongoDB
マニュアル
ドキュメント指向データベース
スキーマレス
- スキーマを定義しなくても利用できる
- スキーマレスのため保守性が高い
- JSON方式でデータを保持
- テーブルのことはコレクションと呼ぶ
パフォーマンス
- 機能制限により、高パフォーマンスを実現
- トランザクションがない
- 大量データの高速処理に向く
- スケールアウトが簡単な設定で可能
操作感
インストール
ubuntu@puli-mon:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
:
ubuntu@puli-mon:~$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
OK
ubuntu@puli-mon:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
ubuntu@puli-mon:~$ sudo apt-get update
ubuntu@puli-mon:~$ sudo apt-get install -y mongodb-org
ディレクトリ
種類
|
場所
|
備考
|
データ
|
/var/lib/mongodb
|
|
ログ
|
/var/log/mongodb
|
|
設定
|
/etc/mongod.conf
|
|
開始
ubuntu@puli-mon:/etc$ sudo systemctl start mongod
sudo systemctl daemon-reload
リモートホストから接続
- デフォルトでは、localhostからのみ接続可能なため、bindIp の行を変更
- $ sudo vi /etc/mongod.conf
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1
bindIp: 0.0.0.0
monogoシェルの実行
ubuntu@puli-mon:/etc$ mongo
MongoDB shell version v4.4.6
connecting to: mongodb://127.0.0.1:27017/?
:
---
>
GUI
データベース
データベース作成
> use testdb
switched to db testdb
- db。dろpDatabase() でカレントDBを削除
コレクションを作成
> db.createCollection("testDoc")
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
testdb 0.000GB
ドキュメントの登録
> db.testDoc.insertOne(
... {name:"Foo",value:"Bar"}
... )
{
"acknowledged" : true,
"insertedId" : ObjectId("609f57392efac2b731a534eb")
}
検索
> db.testDoc.find()
{ "_id" : ObjectId("609f57392efac2b731a534eb"), "name" : "Foo", "value" : "Bar" }
DB統計
> db.stats()
{
"db" : "testdb",
"collections" : 1, // コレクション数
"views" : 0,
"objects" : 1,
"avgObjSize" : 51,
"dataSize" : 51, // 圧縮前データサイズ
"storageSize" : 20480,
"indexes" : 1, // インデックス数
"indexSize" : 20480, // インデックスデータ量
"totalSize" : 40960,
"scaleFactor" : 1,
"fsUsedSize" : 2561937408,
"fsTotalSize" : 20629221376,
"ok" : 1
}
コレクション
種類
|
コマンド
|
例
|
コレクションの作成
|
db.createCollection(コレクション名)
|
db.createCollection("testCollection")
|
コレクションの一覧表示
|
show collections
|
|
統計情報表示
|
db.collection.stats()
|
|
コレクションの削除
|
db.collection.drop()
|
db.testCollection.drop
|
Cappedコレクション
- コレクションに入れられるデータの上限を設定
- データ量が上限になると、古いドキュメントから削除されていく
- レプリカセットでは、Cappedコレクションを使ってデータを同期している
- createCollection のオプションを変更して作成
db.createCollection(
"コレクション名",
[capped: true, size: データ上限(バイト)サイズ]
)