「MongoDB」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:データベース管理システム en:MongoDB MongoDB (由来は hu'''mongo'''us から) はオープンソースのドキュメント指向データ...」)
 
(同期)
1行目: 1行目:
 
[[Category:データベース管理システム]]
 
[[Category:データベース管理システム]]
 
[[en:MongoDB]]
 
[[en:MongoDB]]
  +
[[zh-hans:MongoDB]]
 
MongoDB (由来は hu'''mongo'''us から) はオープンソースのドキュメント指向データベースです。[http://www.mongodb.com/ MongoDB Inc. (旧 10gen)] によって開発・サポートされています。MongoDB はデータベースシステムの NoSQL ファミリーの一員です。"古典的"なリレーショナルデータベースでそうあるように、データをテーブルに保存する代わりに、MongoDB は動的なスキーマ (MongoDB では [http://bsonspec.org/ BSON] と呼称されるフォーマット) によって JSON ライクなドキュメントとして構造的データを保存して、特定のタイプのアプリケーションでデータを簡単かつ高速に扱えるようにします。
 
MongoDB (由来は hu'''mongo'''us から) はオープンソースのドキュメント指向データベースです。[http://www.mongodb.com/ MongoDB Inc. (旧 10gen)] によって開発・サポートされています。MongoDB はデータベースシステムの NoSQL ファミリーの一員です。"古典的"なリレーショナルデータベースでそうあるように、データをテーブルに保存する代わりに、MongoDB は動的なスキーマ (MongoDB では [http://bsonspec.org/ BSON] と呼称されるフォーマット) によって JSON ライクなドキュメントとして構造的データを保存して、特定のタイプのアプリケーションでデータを簡単かつ高速に扱えるようにします。
   
 
== インストール ==
 
== インストール ==
   
[[公式リポジトリ]]から {{Pkg|mongodb}} をインストールしてください。
+
[[公式リポジトリ]]から {{Pkg|mongodb}} をインストールしてください。また、{{Pkg|mongodb-tools}} をインストールすることで {{ic|mongoimport}}, {{ic|mongoexport}}, {{ic|mongodump}}, {{ic|mongorestore}} などのツールを使うことができます
   
 
{{ic|mongodb.service}} デーモンを[[systemd#ユニットを使う|起動・有効化]]します。
 
{{ic|mongodb.service}} デーモンを[[systemd#ユニットを使う|起動・有効化]]します。
   
mongodb サービスの最初の起動時に、巨大なファイルが作成され、(ジャーナルなどのデータのための) 予約領域が割り当てられます。作成されるファイルは合計で 3 GB ほどもなりま
+
mongodb サービスの最初の起動時に、巨大なファイルが作成され、(ジャーナルなどのデータのための) 予約領域が割り当てられます [https://docs.mongodb.com/manual/faq/storage/#preallocated-data-files]。ファイルの作成は時間がかか、その間、データベースシェルを使うことはできせん
 
ファイルの作成には時間がかかり、その間、データベースシェルを使うことはできません。
 
   
 
== 使用方法 ==
 
== 使用方法 ==
31行目: 30行目:
 
# ls -lisa /var/lib/mongodb
 
# ls -lisa /var/lib/mongodb
   
ロックファイルが存在する場合、{{ic|mongodb.service}} を停止して、ファイルを削除してください。それからサスを再度起動します
+
ロックファイルが存在する場合、{{ic|mongodb.service}} を停止してください。タベースのパスを指定してデータベースの修復を実行します (Arch Linux では {{ic|/var/lib/mongodb/}} がデフォルトの --dbpath です):
   
# rm /var/lib/mongodb/mongod.lock
+
# mongod --dbpath /var/lib/mongodb/ --repair
   
  +
修復が完了すると、dbpath に修復されたデータファイルと空の mongod.lock ファイルが作られます。
それでも MongoDB が起動しないときは、データベースの修復を実行してみてください、dbpath を指定します ({{ic|/var/lib/mongodb/}} が Arch Linux におけるデフォルトの --dbpath です):
 
   
  +
{{Warning|ファイルを削除して、破損したファイルを使ってデータベースを起動して、データベースからデータの復旧を試みることもできます。ただし、データベースの状態を予想することはできません。詳しくは [https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/ 上流のドキュメント] を見てください。}}
# mongod --dbpath /var/lib/mongodb/ --repair
 
   
 
root で修復を実行後、ファイルの所有者は root ユーザーになりますが、Arch Linux は別のユーザーで MongoDB を実行します。chown を使ってファイルの所有者を適切なユーザーに戻す必要があります (詳しくは [http://earlz.net/view/2011/03/11/0015/mongodb-and-arch-linux こちら] を参照):
 
root で修復を実行後、ファイルの所有者は root ユーザーになりますが、Arch Linux は別のユーザーで MongoDB を実行します。chown を使ってファイルの所有者を適切なユーザーに戻す必要があります (詳しくは [http://earlz.net/view/2011/03/11/0015/mongodb-and-arch-linux こちら] を参照):
43行目: 42行目:
 
# chown -R mongodb: /var/{log,lib}/mongodb/
 
# chown -R mongodb: /var/{log,lib}/mongodb/
   
  +
=== transparent_hugepage のカーネル設定について MongoDB がエラーを吐く ===
{{Pkg|boost-libs}} パッケージが最新であることを確認してください。MongoDB は特定のバージョンを必要としますが、MongoDB のパッケージは依存パッケージのバージョンを制限しません。
 
  +
  +
MongoDB の起動後、transparent_hugepage に関する警告が表示される場合、以下のファイルを編集することでシステム設定を永続的に無効化することができます ([https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html FreeDesktop tmpfiles.d マニュアル] を参照):
  +
  +
{{hc|/etc/tmpfiles.d/local.conf|<nowiki>
  +
w /sys/kernel/mm/transparent_hugepage/enabled - - - - never
  +
w /sys/kernel/mm/transparent_hugepage/defrag - - - - never
  +
</nowiki>}}
  +
  +
[[sysctl]] を使ったり以下のように echo コマンドを使うことで一時的に無効化することもできます:
  +
  +
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
  +
# echo never > /sys/kernel/mm/transparent_hugepage/defrag

2017年9月3日 (日) 19:13時点における版

MongoDB (由来は humongous から) はオープンソースのドキュメント指向データベースです。MongoDB Inc. (旧 10gen) によって開発・サポートされています。MongoDB はデータベースシステムの NoSQL ファミリーの一員です。"古典的"なリレーショナルデータベースでそうあるように、データをテーブルに保存する代わりに、MongoDB は動的なスキーマ (MongoDB では BSON と呼称されるフォーマット) によって JSON ライクなドキュメントとして構造的データを保存して、特定のタイプのアプリケーションでデータを簡単かつ高速に扱えるようにします。

インストール

公式リポジトリから mongodb をインストールしてください。また、mongodb-tools をインストールすることで mongoimport, mongoexport, mongodump, mongorestore などのツールを使うことができます。

mongodb.service デーモンを起動・有効化します。

mongodb サービスの最初の起動時に、巨大なファイルが作成され、(ジャーナルなどのデータのための) 予約領域が割り当てられます [1]。ファイルの作成には時間がかかり、その間、データベースシェルを使うことはできません。

使用方法

データベースシェルにアクセスするには、ターミナルに以下を入力:

$ mongo

トラブルシューティング

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/

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