メインコンテンツにスキップ

ドキュメント指向データベース用のNoSQLデータベースエンジン

MongoDBは、従来のリレーショナル管理から離れたデータベースの要件を満たすソリューションです。eBayやForbesなどのエンタープライズ企業で使用されているNoSQLソリューションに入ります。ドキュメントデータベースは、ユーザーがドキュメント構造を確立することなく、データベース内でドキュメントの作成を開始することができるため、ユーザーはその場で編集し、迅速に拡張することができます。このようにデータ構造と管理の両方に柔軟性があるため、MongoDBは、DBのニーズが変動する企業や組織の単一のデータベースソリューションとしてよく使われています。

LinodeのMongoDBマーケットプレイスアプリであなただけの柔軟なデータベースを構築してください。

MongoDB Marketplaceアプリのデプロイメント

Linode Marketplaceでは、Linode Cloud Managerを使用して、Linodeにソフトウェアを簡単に導入することができます。

  1. Cloud Managerにログインし、左のナビゲーションメニューから「Marketplace」リンクを選択します。これにより、Linode ComputeCreateページが表示され、Marketplaceタブがあらかじめ選択されています。
  2. Select App」セクションで、デプロイしたいアプリを選択します。
  3. 選択したアプリに必要なオプションと、必要な詳細オプション(オプション)をすべて入力します。詳細は「設定オプション」の項を参照してください。
  4. Creating a Compute Instanceで説明したように、残りの部分を入力します。
  5. Create Linode」ボタンをクリックします。Linodeがプロビジョニングされ、完全に電源が入ったら、ソフトウェアのインストールが完了するのを待ちます。この前にLinodeの電源を切ったり、再起動したりすると、ソフトウェアのインストールに失敗する可能性があります。インストールが完了したかどうかを確認するには、LinodeのLishコンソールを開き、システムのログインプロンプトが表示されるのを待ちます。
  6. 展開後のスタートアップ」に記載されている手順に従ってください。

ソフトウェアのインストールは、Linodeのプロビジョニング終了後、2~5分以内に完了します。

設定オプション

MongoDBオプション

このMarketplace Appで利用できる追加オプションは以下の通りです。

フィールド説明
MongoDB の管理者ユーザーのパスワードMongo の管理者ユーザーのパスワード。必須です。
MongoDBバージョンインストールするMongoDBのバージョンを選択します。
サーバーの管理者メールアドレスこのサーバーのSOA(Start of Authority)メールアドレスです。このEメールアドレスは、ドメインのSOAレコードに追加されます。インストーラにDNSレコードを作成させる場合は、この項目は必須です。
あなたのLinodeAPI トークンあなたのLinode API Token はDNSレコードの作成に必要です。これが一緒に提供されていると subdomain と domain フィールドを使用すると、インストールはLinodeAPI を介してDNSレコードの作成を試みます。トークンを持っていないが、インストールでDNSレコードを作成したい場合は、次のことを行う必要があります。 クリエイトワン 続ける前に
サブドメインセットアップ中にインストーラーにDNSレコードを作成させたいサブドメインです。推奨される設定は www.を提供する場合のみ、サブドメインを提供する必要があります。 domain と API Token.
ドメインアプリケーションにアクセスするためのドメイン名です。インストーラはセットアップ中にこのドメインのDNSレコードを作成します。 API Token.
のために作成される限定的なsudoユーザーです。Linodeこれは、Linode のために作成される限定的なユーザーアカウントです。このアカウントは、sudo ユーザー権限を持っています。
限定されたsudoユーザーのパスワード限定された sudo ユーザーのパスワードを設定します。パスワードは、強力なパスワードのための複雑性強度検証要件を満たす必要があります。このパスワードは、root と同様に、サーバー上であらゆるアクションを実行するために使用されるので、長く、複雑で、ユニークなものにしてください。
にアクセスする際に使用されるSSH公開鍵です。Linodeパスワードではなく公開鍵(推奨)でSSHにアクセスしたい場合は、ここに公開鍵を入力します。
SSHでルートアクセスを無効にする?セレクト Yes を選択すると、root アカウントが SSH でサーバーにログインするのをブロックします。を選択します。 No をクリックすると、rootアカウントがSSHでログインできるようになります。

一般的なオプション

Linodeを作成するフォームの残りのオプションの記入方法については、Compute Instanceを作成するを参照してください。一部のオプションは、このMarketplaceアプリに基づいて制限または推奨値が設定されている場合があります。

  • 対応ディストリビューション: Debian 11,Ubuntu 20.04 LTS
  • 推奨する最小限のプランです。すべてのプランタイプとサイズが使用可能です。ただし、本番環境で大規模なデータベースを使用する場合は、ハイメモリーコンピュートインスタンスの使用を検討してください。

デプロイ後のスタートアップ

MongoDBシェルにアクセスする

MongoDBのデプロイが終了すると、コンソールから直接アクセスして管理できるようになります。

  1. SSHまたはLishでCompute Instanceにログインしてください。
  2. を起動します。 モンゴル貝 を以下のコマンドで実行します。プロンプトが表示されたら、このインスタンスを作成するときに設定したadminユーザーのパスワードを入力します。mongo -u admin -p --authenticationDatabase admin のです。 -u-pと --authenticationDatabase オプションは、シェルへの接続を認証するために必要です。認証がないと、MongoDB シェルにアクセスすることはできますが、データベースへの接続はできません。 admin userは、指定されたロールに基づいて純粋に管理者となります。すべてのデータベースのユーザーの管理者として定義されますが、それ自体にはデータベースの権限はありません。これを使って追加のユーザーを作成し、そのロールを定義することができます。MongoDBで複数のアプリケーションを使用している場合は、対応するデータベースに対してカスタムパーミッションを持つ別のユーザーを設定します。

ユーザーテーブルの作成

  1. のように。 admin ユーザーを認証するための通常のユーザーデータを保存するために、新しいデータベースを作成します。次の例では、このデータベースを user-data:use user-data
  2. 異なるデータベースのパーミッションは、それぞれ別の roles オブジェクトを作成します。この例では、ユーザーを作成します。 example-userの読み取り専用のパーミッションを持っています。 user-data データベースに対する読み取り権限と書き込み権限があります。 exampleDB データベースで作成します。 データとコレクションの管理 テストデータを入力するために、管理者ではない新しいユーザーを作成します。両者を変更する example-user と password を、適切で安心できるものにする。db.createUser({user: "example-user", pwd: "password", roles:[{role: "read", db: "user-data"}, {role:"readWrite", db: "exampleDB"}]}) ユーザーを追加するには、管理者ユーザーとしてこの手順を繰り返し、適切な値を代入して新しいユーザー名、パスワード、ロールを作成します。
  3. mongoのシェルを終了します。quit()

アクセス制御とユーザー管理の詳細、およびデータベースを保護するためのその他のヒントについては、MongoDB Security Documentation を参照してください。

データとコレクションの管理

MongoDBの人気の多くは、その統合のしやすさにあります。データベースとのやりとりはJavaScriptのメソッドで行いますが、他の言語用のドライバも用意されています。このセクションでは、いくつかの基本的な機能を紹介しますが、特定のユースケースに基づいてさらに研究を進めることをお勧めします。

  1. を使ってMongoDBのシェルを開きます。 example-user を作成しました。mongo -u example-user -p --authenticationDatabase user-data
  2. 新しいデータベースを作成します。この例では、それを exampleDB:use exampleDB このデータベース名が、ユーザーが読み取り権限と書き込み権限を持つデータベースと一致していることを確認してください(前のセクションでこれらの権限を追加しました)。 db  コマンドのアウトプットに置き換えられます。
  3. 新規作成 コレクション という exampleCollection:db.createCollection("exampleCollection", {capped: false}) MongoDB の用語に慣れていない方は、コレクションをリレーショナルデータベース管理システムのテーブルになぞらえて考えることができます。新しいコレクションの作成についての詳細は、MongoDB のドキュメントの db.createCollection()メソッド.

    注意してください。 コレクション名には、ハイフンなどの特定の句読点を含めないでください。しかし、コレクションを使用または変更しようとするまで、例外が発生しない場合があります。詳しくは MongoDB の めいめいせいげん
    .
  4. テスト用データベースに入力するサンプルデータを作成する。MongoDBは、入力を ドキュメント を、以下のようなJSONオブジェクトの形で受け取ることができます。このような a と b 変数は入力を簡単にするために使用されますが、オブジェクトは関数を介して直接挿入することもできます。var a = { name : "John Doe", attributes: { age : 30, address : "123 Main St", phone : 8675309 }} var b = { name : "Jane Doe", attributes: { age : 29, address : "321 Main Rd", favorites : { food : "Spaghetti", animal : "Dog" } }} なお、コレクションに挿入されるドキュメントは、同じスキーマを持つ必要はなく、これはNoSQLデータベースを使用する多くの利点の1つです。
  5. にデータを挿入します。 exampleCollectionを使用しています。 insert メソッドを使用します。db.exampleCollection.insert(a) db.exampleCollection.insert(b) これらの操作の出力には、現在の作業中のデータベースへの書き込みに成功したオブジェクトの数が表示されます。WriteResult({ "nInserted" : 1 })
  6. を確認してください。 exampleCollection コレクションが適切に作成されました。show collections 出力は、現在の作業データベース内のデータを含むすべてのコレクションをリストアップします。exampleCollection
  7. フィルタリングされていないデータを exampleCollection のコレクションを使用しています。 find メソッドを使用します。このメソッドは、クエリが渡されない場合、コレクション内の最初の20個のドキュメントまでを返します。db.exampleCollection.find() 出力は以下のようになります。

    { "_id" : ObjectId("5e68d4618bd4ea23cc3f5e96"), "name" : "John Doe", "attributes" : { "age" : 30, "address" : "123 Main St", "phone" : 8675309 } } { "_id" : ObjectId("5e68d4628bd4ea23cc3f5e97"), "name" : "Jane Doe", "attributes" : { "age" : 29, "address" : "321 Main Rd", "favorites" : { "food" : "Spaghetti", "animal" : "Dog" } } }

    私たちが入力したオブジェクトの前には、次のように書かれていることに気づくでしょう。 _id キーと ObjectId の値になります。これは MongoDB が生成するユニークなインデックスです。 _id の値は明示的に定義されていません。 ObjectId の値は、クエリを入力する際の主キーとして使用できますが、使いやすさのために、他のデータベースシステムと同様に、独自のインデックスを作成することもできます。 find メソッドでは、検索語のパラメータを空にせず、(オブジェクトの形で)入力することで、特定のドキュメントやフィールドを検索することもできます。例えば

    db.exampleCollection.find({"name" : "John Doe"})

    上記のコマンドを実行すると、以下の項目を含むドキュメントのリストが表示されます。 

    {"name" : "John Doe"} オブジェクトが表示されます。{ "_id" : ObjectId("5e68d4618bd4ea23cc3f5e96"), "name" : "John Doe", "attributes" : { "age" : 30, "address" : "123 Main St", "phone" : 8675309 } }

MongoDBマーケットプレイスアプリは、Linodeによって構築されました。アプリのデプロイメントに関するサポートは、サイドバーに記載されている情報を使って Linode Support に連絡してください。ツールやソフトウェア自体に関するサポートは MongoDB コミュニティ