MongoDB
MongoDB (由来は humongous から) はオープンソースのドキュメント指向データベースです。MongoDB Inc. (旧 10gen) によって開発・サポートされています。MongoDB はデータベースシステムの NoSQL ファミリーの一員です。"古典的"なリレーショナルデータベースでそうあるように、データをテーブルに保存する代わりに、MongoDB は動的なスキーマ (MongoDB では BSON と呼称されるフォーマット) によって JSON ライクなドキュメントとして構造的データを保存して、特定のタイプのアプリケーションでデータを簡単かつ高速に扱えるようにします。
目次
インストール
mongodbAUR パッケージをインストールしてください。また、mongodb-toolsAUR をインストールすることで mongoimport
, mongoexport
, mongodump
, mongorestore
などのツールを使うことができます。
mongodb.service
デーモンを起動・有効化します。
mongodb サービスの最初の起動時に、巨大なファイルが作成され、(ジャーナルなどのデータのための) 予約領域が割り当てられます [1]。ファイルの作成には時間がかかり、その間、データベースシェルを使うことはできません。
使用方法
データベースシェルにアクセスするには、ターミナルに以下を入力:
$ mongo
トラブルシューティング
MongoDB が起動しない
データベースのパスが正しく設定されているか確認してください:
$ cat /usr/lib/systemd/system/mongodb.service
"ExecStart" 行に "--dbpath /var/lib/mongodb" を追加してください:
ExecStart=/usr/bin/numactl --interleave=all mongod --quiet --config /etc/mongodb.conf --dbpath /var/lib/mongodb
最低でも (ジャーナルファイル用の) 3GB の空き容量があることを確認してください。容量が足りない場合 MongoDB が起動できないことがあります (その場合ユーザーにメッセージは表示されません):
$ df -h /var/lib/mongodb/
ロックファイルが存在しないかどうか確認:
# ls -lisa /var/lib/mongodb
ロックファイルが存在する場合、mongodb.service
を停止してください。データベースのパスを指定してデータベースの修復を実行します (Arch Linux では /var/lib/mongodb/
がデフォルトの --dbpath です):
# mongod --dbpath /var/lib/mongodb/ --repair
修復が完了すると、dbpath に修復されたデータファイルと空の mongod.lock ファイルが作られます。
root で修復を実行後、ファイルの所有者は root ユーザーになりますが、Arch Linux は別のユーザーで MongoDB を実行します。chown を使ってファイルの所有者を適切なユーザーに戻す必要があります (詳しくは こちら を参照):
# chown -R mongodb: /var/{log,lib}/mongodb/
mongodb の ドキュメント から設定ファイルをコピーした場合、以下の2行を削除して mongodb.service
を再起動してください:
/etc/mongodb.conf
processManagement: fork: true
transparent_hugepage のカーネル設定について MongoDB がエラーを吐く
MongoDB の起動後、transparent_hugepage に関する警告が表示される場合、以下のファイルを編集することでシステム設定を永続的に無効化することができます (FreeDesktop tmpfiles.d マニュアル を参照):
/etc/tmpfiles.d/local.conf
w /sys/kernel/mm/transparent_hugepage/enabled - - - - never w /sys/kernel/mm/transparent_hugepage/defrag - - - - never
sysctl を使ったり以下のように echo コマンドを使うことで一時的に無効化することもできます:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag