mogodbは何ができますか

MongoDBとは何ですか?何ができますか?

1. MongoDBとは何ですか?
2.なぜMongoDBを使用するのですか?
3.主な機能
4.C / Sサービスモデル
5.完璧なコマンドラインツール
6.いくつかのシェルの実用的な操作
7.JavaでMongoDBを使用する


1. MongoDBとは何ですか?MongoDBは、Webアプリケーションおよびインターネットインフラストラクチャ用に設計されたデータベース管理システムです。はい、MongoDBはデータベース、NoSQLデータベースです

2.なぜMongoDBを使用するのですか?
(1)MongoDBは、ドキュメントとコレクションの概念を提案します。データモデル構造としてBSON(JSONのような)を使用します。その構造は、2次元テーブルではなくオブジェクト指向です。MongoDBでは、ユーザーを格納するためにこのようになります。

{ ユーザー名: '123'、パスワード: '123' } このデータモデルを使用すると、MongoDBは実稼働環境で高度な読み取りおよび書き込み機能を提供でき、mysqlなどのSQLデータベースと比較してスループットが大幅に向上します。



(2)拡張が容易な自動フェイルオーバー。容易なスケーラビリティとは、シャーディング機能の提供、データセットをシャーディングする機能、および複数のサーバー間で共有されるデータストレージのプレッシャーを指します。自動フェイルオーバーはレプリカセットの概念です。MongoDBはマスターノードが動作しているかどうかを検出でき、非アクティブの場合はスレーブノードをマスターノードに自動的に昇格させてフェイルオーバーを実現できます。

(3)データモデルはオブジェクト指向であるため、リッチで階層的なデータ構造を表現できます。たとえば、ブログシステムでは、myqslのように3枚のシートを作成する代わりに、「コメント」を「記事」ドキュメントに直接追加できます。この関係を説明する表。

3.主な機能
(1)ドキュメントデータタイプの
SQLデータベースは正規化されており、プライマリキーまたは外部キーの制約によりデータの整合性と一意性を保証できるため、データの整合性のためにSQLタイプデータベースがよく使用されます。システム。この点で、MongoDBはSQLタイプのデータベースより劣っていて、MongoDBには固定スキーマがありません。これは、MongoDBの制約が少ないため、データストレージ構造がより柔軟になり、ストレージ速度が速くなるためです。

(2)インスタントクエリ機能
MongoDBは、リレーショナルデータベースをリアルタイムでクエリする機能を保持し、インデックスを作成する機能を保持します(最下層はBツリーに基づいています)。これは、リレーショナルデータベースの利点を利用しています。同じタイプのNoSQL redisと比較すると、上記の機能はありません。

(3)レプリケーション機能
MongoDB自体は、冗長性を実現するために複数のマシンにデータを分散できるレプリカセットを提供します。目的は、自動フェイルオーバーを提供し、読み取り機能を拡張することです。

(4)速度と持続性
MongoDBドライバーは書き込みセマンティックファイアを実装し、忘れます。つまり、ドライバーが書き込みを呼び出すと、すぐに成功した結果を得ることができるため(エラーであっても)、書き込み速度が速くなります。もちろん、ある程度の不安はありますが、それは完全にネットワークに依存しています。

MongoDBは、ジャーナルログの概念を提供します。実際には、mysqlのbin-logログのようなものです。挿入する必要がある場合は、最初にログにレコードを書き込んでから、実際のデータ操作を完了します。このように、停電が発生すると、プロセスが突然中断されます。データが間違っていないことを確認できます。また、ジャーナルログを読み取って、修復機能を使用してデータを修復できます。

(5)データ拡張
MongoDBは、フラグメント化テクノロジーを使用してデータを拡張します。MongoDBは、データブロックをフラグメント化してフラグメントに転送できるため、各サーバーに格納されるデータは同じサイズになります。

4. C / Sサービスモデル
MongoDBコアサーバーは主にmongodプログラムを介して起動され、メモリ管理はオペレーティングシステムに最適であり、メモリ設定が不足しているという設計哲学であるため、起動時にMongoDBが使用するメモリを設定する必要はありません。これはMongoDBの設計上のハイライトです。さらに、フラグメンテーション機能は、mongosルーティングサーバーを介して使用することもできます。

MongoDBのメインクライアントはインタラクティブなjsシェルです。mongoによって開始され、jsを使用してjsシェルを使用してMongoDBと直接通信できます。js構文を使用してsqlステートメントなどのMongoDBデータをクエリし、mysqlデータをクエリします。さらに、さまざまな言語ドライバーパッケージは、さまざまな言語へのアクセスを容易にします。

5.
データベースをバックアップおよび復元するための標準ツールである完全なコマンドラインツールmongodumpおよびmongorestore。BSON形式をエクスポートし、データベースを移行します。

mongoexportおよびmongoimportは、JSON、CSV、およびTSVデータをインポートおよびエクスポートするために使用され、データが複数の形式をサポートする必要がある場合に役立ちます。mongoimportは、大規模なデータセットの初期インポートにも使用できますが、インポートする前に注意を払う必要があります。mongoDBを最大限に活用するには、通常、データモデルを調整する必要があります。

データベースに送信された操作を監視するために使用される、ネットワークスニッフィングツールであるmongosniff。基本的に、ネットワーク上で送信されるBSONは、人々が読みやすいシェルステートメントに変換されます。

したがって、MongoDBはキー値ストレージとリレーショナルデータベースの最高の機能を組み合わせていると結論付けることができます。シンプルであるため、データは非常に高速であり、複雑なクエリメカニズムも提供するデータベースのスケーリングは比較的簡単です。MongoDBは64ビットサーバーで実行する必要があり、個別に展開するのが最適です。MongoDBはデータベースであるため、ホットスタンバイとコールドスタンバイでも処理する必要があります。

6.いくつかのシェル操作。
この記事はAPIマニュアルではないため、ここでのシェルのすべての使用は、特定のMongoDBシェルを知る必要がある場合に、主にMongoDBシェルを使用する便利さを示すために、使用できる関数とステートメントの基本的な紹介でもあります。文法は公式文書にあります。

1.データベースの切り替え
dbaを
使用してデータベース作成する必要はありません。データベースとコレクションは、ドキュメントが初めて挿入されたときにのみ作成されます。これは、データの動的処理と一致しています。開発プロセスを簡素化および高速化し、名前名の動的な割り当てを容易にします。データベースまたはコレクションが誤って作成されることが心配な場合は、厳密モードをオンにすることができます

2.構文を挿入します
1db.users.insert({username: "smith"})
2db.users.save({username: "smith"})
3。構文を検索します
1 db.users.find()
2 db.users.count ()
4。構文
1を更新しますdb.users.update({username: "smith"}、{ KaTeX解析エラー:23番目の位置に「EOF」が必要です。「}」を取得しました:…untry: "Canada"}} ̲)2 //削除するユーザ名SMI ...)}:{1国:}未設定のユーザー名・スミスであるユーザーの国フィールド削除// 5 6 「ジョーンズ」}、{:7 db.users.update({ユーザー名を KaTeX解析エラー:期待される「EOF」、位置48で「}」を取得:…nce "、" rocky "]}}} ̲)8 //ここに主に複数の値があります... addToSet:{favorites.movi​​es:" the maltese " ))、false、true)11 //複数の更新5.構文の削除1db.foo.remove()//すべてのデータの削除2db.foo.remove((favorties.cities:"Cheyene"})//条件に応じて削除







3db.drop()//コレクション全体を削除します
6.インデックス関連の構文
1db.numbers.ensureIndex((num:1))
2 //昇順のインデックスを作成します
3db.numbers.getIndexes()
4 //すべてのインデックスを取得します
7.基本管理構文1show
dbs
2 //すべてのデータベースを照会3show
collections
4 //すべてのテーブルを表示
5db.stats()
6 //データベースのステータス情報を表示
7db.numbers.stats()
8 //コレクションテーブルのステータス情報を表示
9 db、shutdownServer()
10 //データベースを停止します
11db.help()
12 //データベース操作コマンドを取得します
13db.foo.help()
14 //テーブル操作コマンドを取得します
15タブキー//コマンドの完了に自動的に役立ちます
上記のコマンドは単純な例です。これまでデータベース構文を学習したことがなく、SQLクエリ構文とMongoDBクエリ構文を同時に学習し始めた場合、どちらが簡単だと思いますか。Javaドライバーを使用してMongoDBを操作すると、どのクエリもHibernateが提供するクエリと同じであることがわかります。クエリ条件オブジェクトが作成されている限り、簡単にクエリを実行できます(次に例を示します)。以前はES6に精通していたので、MongoDB jsシェルから始めるのは問題ありませんでした。このシンプルで完璧なクエリメカニズムのおかげで、MongoDBに深く夢中になりました。

7.JavaでMongoDBを
使用する1.mavenを使用してjarパッケージをインポートします。
ここでは、新しいアクセス方法と接続方法のセットを提供する最新のドライバーパッケージを引用しています。

1
2 org.mongodb
3 mongodb-driver-sync
4 3.8.0- beta3
5
2、创建一TT访问客户端
1 MongoClient client = MongoClients.create(“ mongodb://10.201.76.94:27017”);
3、获取集合周
1 public long count(){ 2 MongoClient client = this.getClient(); 3 MongoCollection collections = client.getDatabase(“ mongodb_db_name”)。getCollection(“ mongodb_collection_name”); 4 return collections.count(); 5} 4、查询集合1public List find(Document params、Bson sort、int skip、int limit){ 2 MongoClient client = this.getClient(); 3 MongoCollection collections = client.getDatabase(“ mongodb_db_name”)。getCollection(“ mongodb_collection_name”);








4リストリスト= new ArrayList(Integer.valueOf(config.getPro( "sync_limit")));
5 collections.find(params).sort(sort).skip(skip).limit(limit).forEach(new Block( ){ 6 @Override 7 public void apply(Document document){ 8 list.add(document); 9} 10}); 11 return list; 12} ここでは、単純なリンクと単純なMongoDB操作の例のみを示しています。操作を確認できます。使いやすさ。ドライバを使用する場合、TCPソケットに基づいてMongoDBと通信します。最初のサーバーに配置されないクエリ結果が多すぎる場合、getmoreコマンドがサーバーに送信され、クエリ結果の次のバッチが取得されます。







サーバーにデータを挿入するとき、サーバーの応答を待機しません。ドライバーは書き込みが成功したと想定し、実際にクライアントを使用してオブジェクトIDを生成しますが、この動作は構成によって構成でき、セーフモードでオンにでき、セーフモードを確認できます。サーバー側にエラーが挿入されました。

元のアドレス:https
//zhuanlan.zhihu.com/p/59753955

おすすめ

転載: blog.csdn.net/qq_44783283/article/details/108136918