MongoDB のインストールとアプリケーションのシナリオの概要

MogonDB の概要

PowerJob ログに関する最新の研究は MongoDB に依存しているため、MongoDb アプリケーション シナリオについて学習してください。

MongoDB は、分散ファイル ストレージに基づいたデータベースです。C++ 言語で書かれています。WEB アプリケーションにスケーラブルで高性能なデータ ストレージ ソリューションを提供するように設計されています。

MongoDB は、リレーショナル データベースと非リレーショナル データベースの中間の製品であり、非リレーショナル データベースの中で最も機能が豊富で、最もリレーショナル データベースに似ています。サポートされるデータ構造は非常に緩やかで、json に似た bson 形式であるため、より複雑なデータ型を格納できます。Mongo の最大の特徴は、サポートされているクエリ言語が非常に強力であることです。その構文はオブジェクト指向のクエリ言語に似ています。リレーショナル データベースの単一テーブル クエリと同様のほとんどの機能を実装でき、インデックス作成もサポートしています。データの。

MongoDB はドキュメントベースの NoSQL データベースです。データはドキュメント (リレーショナル データベースのレコードに対応) の形式で MongoDB に保存されます。ドキュメントは実際には JSON 文字列です。JSON を使用する利点は、非常に直感的であることです。シリーズを通じてKey-Value のキーと値のペアは、私たちの読書習慣に沿ったデータを表します。

Java と Python では JSON が適切にサポートされています。MongoDB からデータを読み取った後、変換せずに直接使用できます。豊富なデータ構造をサポートしており、値は通常の整数、文字列、配列、ネストされたものにすることができます。ネストされたサブドキュメントの利点は、MongoDB で 1 つの単純なクエリだけで必要なデータを取得できることです。

MongoDB のインストール (Docker の実行)

イメージをダウンロード: Web側からgithubにアクセスできないため、docker searchが利用できるようになりました。

[root@localhost conf]# docker search mongo
NAME                                                   DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mongo                                                  MongoDB document databases provide high avai…   9717      [OK]       
mongo-express                                          Web-based MongoDB admin interface, written w…   1321      [OK]       
mongodb/mongodb-atlas-kubernetes-operator              The MongoDB Atlas Kubernetes Operator - Kube…   4                    
mongodb/mongodb-community-server                       The Official MongoDB Community Server            24                   
mongodb/mongodb-atlas-kubernetes-operator-prerelease   This is an internal-use-only build of the Mo…   0                    
mongodb/mongodb-enterprise-server                      The Official MongoDB Enterprise Advanced Ser…   3                    
bitnami/mongodb                                        Bitnami MongoDB Docker Image                     228                  [OK]
circleci/mongo                                         CircleCI images for MongoDB                      13                   [OK]
bitnami/mongodb-exporter                                                                                11                   
percona/mongodb_exporter                               A Prometheus exporter for MongoDB including …   4                    
bitnami/mongodb-sharded                                                                                 11                   
rapidfort/mongodb                                      RapidFort optimized, hardened image for Mong…   23                   
rapidfort/mongodb-ib                                   RapidFort optimized, hardened image for Mong…   10                   
rancher/mongodb-conf                                                                                    2                    
rapidfort/mongodb-official                             RapidFort optimized, hardened image for Mong…   11                   
rapidfort/mongodb-perfomance-test                                                                       10                   
bitnamicharts/mongodb                                                                                   0                    
mongodb/apix_test                                      apix test repo                                   0                    
bitnamicharts/mongodb-sharded                                                                           0                    
rancher/mongodb-config                                                                                  0                    
litmuschaos/mongo                                                                                       1                    
noenv/mongo-exporter                                   Prometheus MongoDB Exporter Docker Image         2                    
corpusops/mongo                                        https://github.com/corpusops/docker-images/      0                    
formio/mongotest                                                                                        0                    
noenv/mongo                                            MongoDB Docker Image                             0  

画像をプルします:

[root@localhost ~]# docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
9d19ee268e0d: Pull complete 
84c1327991fa: Pull complete 
1feec59ecd14: Pull complete 
3af7480eaf55: Pull complete 
d7524ee16ced: Pull complete 
f4742175eefc: Pull complete 
9d688a8d9c18: Pull complete 
b24ebfb25f44: Pull complete 
0ee52198e640: Pull complete 
Digest: sha256:bf1d25bae7c2fd47cd9a89eec3db08e73ccfbef666e43f583fa6b560ca07ac5a
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest

ローカル ディレクトリを作成します。

mkdir /root/mongodb/backup
mkdir /root/mongodb/conf
mkdir /root/mongodb/data

touch /root/mongodb/conf/mongodb.conf

内容如下:
#数据库数据存放目录
dbpath=/root/mongodb/data
#数据库日志存放目录
logpath=/root/mongodb/backup/log.txt
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017 
#以后台方式运行进程
fork=true 
#开启用户认证
auth=true

画像を見る

[root@localhost conf]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
mongo                 latest    1f3d6ec739d8   38 hours ago    654MB
app_docker            latest    fc58c235b89f   4 days ago      123MB

ドッカーを起動する

docker run -d --name mymongo -p 27017:27017 --restart=always -v /root/mongodb/data:/data/db -v /root/mongodb/backup:/data/backup -v /root/mongodb/conf:/data/configdb -d mongo --auth

 開始されたコンテナを表示します。

[root@localhost conf]# docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED       STATUS                 PORTS                                                                                   NAMES
c6e06d8d547b   mongo              "docker-entrypoint.s…"   5 hours ago   Up 5 hours             0.0.0.0:27017->27017/tcp, :::27017->27017/tcp                                           mymongo

コンテナ内のコマンドラインにログインし、mongodb のバージョンを表示します。

[root@localhost conf]# docker exec -it mymongo /bin/bash
root@c6e06d8d547b:/# mongod --version
db version v6.0.7
Build Info: {
    "version": "6.0.7",
    "gitVersion": "202ad4fda2618c652e35f5981ef2f903d8dd1f1a",
    "openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2204",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

mongodb コマンドラインを入力します

root@c6e06d8d547b:/# mongosh                 
Current Mongosh Log ID:	64a63cec6329656ebd7f934a
Connecting to:		mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.1
Using MongoDB:		6.0.7
Using Mongosh:		1.10.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

データベースのバージョンを表示する

test> db.version()
6.0.7

# 进入amdin数据库
use admin

test> use admin
switched to db admin

 スーパー管理アカウントを作成する

# 创建超级权限root角色的用户,或者userAdminAnyDatabase 等角色权限比较大的用户,我创建的是拥有超级权限root角色的用户root
# 用户名:rootCs,密码:123rootCs456,角色:root,数据库:admin
admin> db.createUser({user:'rootCs',pwd:'123rootCs456',roles:[{role:'root',db:'admin'}]})
{ ok: 1 }

admin> show dbs
MongoServerError: command listDatabases requires authentication
admin> db.auth('rootCs','123rootCs456')
{ ok: 1 }
admin> show dbs
admin   132.00 KiB
config   12.00 KiB
local    40.00 KiB

 新しいデータベースを追加し、ユーザーを作成します

  • 使用する場合は、指定したデータベースに切り替えます。このデータベースが存在しない場合は作成されます。
admin> use myMongo
switched to db myMongo
  • ユーザーの作成: cs、パスワード: cs123456
myMongo> db.createUser({user:"cs", pwd:"cs123456", roles:[{role: "dbOwner", db:"myMongo" }]})
{ ok: 1 }
  • ログイン/認証ユーザー
myMongo> db.auth('cs','cs123456')
{ ok: 1 }
  • データベースの下のテーブル (データ) を表示します
myMongo> show collections

MongoDB クライアント

クライアントのダウンロードアドレス

対応するバージョンを選択し、ダウンロード後インストールしてください。

ログイン後のインターフェース:

MongoDB アプリケーションのシナリオ

MongoDB トランザクション

MongoDB は現在、単一ドキュメントのトランザクションのみをサポートしており、複雑なトランザクションを必要とするシナリオには適していません。柔軟なドキュメント モデルの JSON 形式のストレージは、実際のオブジェクト モデルに最も近く、開発者にとって使いやすく、迅速な開発と反復を容易にします。利用可能なレプリケーション セットは、データの高信頼性と高可用性のニーズを満たします。運用とメンテナンスは比較的簡単です。自動フェイルオーバーは、大規模なシャード化クラスター、データ ストレージまで拡張できます。

複数のエンジンがさまざまな強力なインデックス作成のニーズをサポートします
  • 地理的位置のインデックス作成をサポート
  • さまざまなO2Oアプリケーションの構築に使用可能
  • テキストインデックスは検索ニーズに対応します
  • TTL インデックスにより、履歴データの有効期限の必要性が解決されます。
  • Gridfs はファイル ストレージのニーズを解決します
  • 集約とマップリデュースは、データ分析シナリオのニーズを解決します。独自のクエリ ステートメントまたはスクリプトを作成し、リクエストを MongoDB に分散して完了させることができます。
特定のアプリケーションシナリオ

従来のリレーショナル データベースでは、3 つの大きな問題を解決できません。

  • 高いパフォーマンス - データベースの同時読み取りと書き込みを同時に行うための要件。
  • 大容量ストレージ - 大量のデータを効率的に保存し、アクセスする必要性。
  • 高スケーラビリティと高可用性 - データベースの高スケーラビリティと高可用性の必要性。

MongoDB は 3 つの高度な問題を完全に解決できます。 

以下にいくつかの実際的な応用例を示します。

(1) ゲームシナリオ
: MongoDB を使用して、ゲームのユーザー情報、装備、ポイントなどを埋め込みドキュメントの形式で直接保存し、簡単なクエリと更新を可能にします。
(2) 物流シナリオ
では、MongoDB を使用して注文情報、注文ステータス、物流情報を保存します。注文ステータスは配送プロセス中に迅速に反復され、MongoDB 組み込み配列の形式で保存されます。注文に対するすべての変更は 1 つで確認できます。クエリ、これは素晴らしいですね。
(3) ソーシャルシーン
: MongoDB を使用してユーザー情報と友人サークル情報を保存し、地理的位置インデックスを通じて近くの人々と測位機能を実現します。
(4) モノのインターネット シナリオ
: MongoDB を使用して、デバイス情報、デバイスによって報告されたログ情報を保存し、この情報に対して多次元分析を実行します。
(5) ライブビデオブロードキャストは、
MongoDB を使用してユーザー情報やインタラクション情報などを保存します。

 MongoDB を選択するためのシナリオの概要
  • 大量のデータ
  • 頻繁な読み取りおよび書き込み操作
  • データ値は低く、トランザクション要件は高くありません。

MongoDBの特徴

1. 高性能
MongoDB は、高性能のデータ永続性を提供します。埋め込みデータ モデルのサポートにより、データベース システム上の IO アクティビティが軽減されます。
インデックスは高速なクエリをサポートし、埋め込みドキュメントと配列のキーを含みます。

  • テキストのインデックス作成は検索ニーズに対応します。
  • TTL インデックスは、履歴データの自動有効期限切れの必要性を解決します。
  • 地理位置情報インデックスは、さまざまな O2O アプリケーションの構築に使用できます。

2. 高可用性
MongoDB レプリケーション ツールはレプリカ セット (reolica セット) と呼ばれ、これには自動フェイルオーバーとデータ冗長性が含まれます。
3. 高可用性
MongoDB は、コア機能の一部として水平方向のスケーラビリティを提供します。
シャーディングは、マシンのクラスター全体にデータを分散します。(大容量データ ストレージ、サービス機能の水平拡張)
3.4 以降、MongoDB はシャード キーに基づくデータ リージョンの作成をサポートし、バランスのとれたクラスターでは、MongoDB はリージョンでカバーされる読み取りと書き込みをリージョン内のシャードのみに指示します。
4. 豊富なクエリのサポート
MongoDB は豊富なクエリ言語をサポートし、データ集約、テキスト検索、地理空間クエリなどの読み取りおよび書き込み (CRUD) 操作をサポートします。
5.
動的モードや柔軟なドキュメント モデルなどのその他の機能。

おすすめ

転載: blog.csdn.net/juanxiaseng0838/article/details/131572375