MongoDBの研究ノート(、MongoDBのエントリ)

内容:

  • なぜ使用のNoSQL
  • モンゴのご紹介
  • シナリオ
  • デモを取得

なぜ使用のNoSQL:

インターネットの発展に伴い、ユーザー数の急増は、訪問まで、伝統的なパフォーマンスのリレーショナルデータベースはまた、ボトルネック傾向にあります

リレーショナルデータベース克服できない問題:

1、高同時読み取りと書き込み:なぜ、リレーショナル・データベースの高い同時読み取りをサポートし、それがディスクIO操作、およびNoSQLの一般的な直接操作メモリに基づいているため、それを書くのは難しいです。

図2に示すように、効率的な大容量データ記憶装置とアクセス

3、高い拡張性、高可用性

......

結合リレーショナルデータベース:

1は、トランザクションの一貫性を制約;サポート高い同時実行性は非常に困難であったが、また、データの一貫性を満たす必要がありました。

2、読み取りと書き込み、リアルタイムの要件

......

何のNoSQL、それが機能します:

NoSQLの(SQLだけではなく)、伝統的なSQLに反対しかし、いくつかの自然に従うことがバインドされていないとして、データストレージ技術です。

1、機能:

  • 大容量データストレージのサポート
  • パフォーマンスのボトルネックを破ります
  • シンプルな操作
  • オープンソースのサポート
  • サーバーのパフォーマンスは低いが必要です

2.短所:

  • これは、トランザクションをサポートしていません。
  • (マルチテーブル会合に類似)を達成することは困難で複雑なSQL

モンゴのプロフィール:

モンゴの特徴:

図1に示すように、ストレージのための文書の収集:ストレージBSON形式(拡張JSON)データ

2、無料のストレージ・フォーマット:データ形式が固定されていない、サービスの動作に影響しないデータ構造を変更します

SQLに匹敵する3、強力なクエリ、

4、完全なインデックス、クエリプランのサポート

5、データレプリケーションとフェイルオーバーのサポート

6、バイナリラージオブジェクトデータと文書の効率的な記憶のためのサポート

7、システム性能を高めるために、スライスグループを使用して

図8に示すように、メモリ動作中にメモリマップされたストレージエンジン、ディスク入出力操作を使用して

......

MongoのコンセプトとRDMの比較:

ユーザーとメールボックスストレージのニーズとの間の関係が存在する場合:

1、SQLで一般に実装する2つのテーブルを必要とし、メールボックステーブル項目関連付けられたユーザを必要とするユーザ(ユーザテーブル)、メールに(メールボックステーブル、多くの)

2、しかし、あなたはそれだけでその場に設計配列型でモンゴを電子メールで送信する必要があります

{ 
    _id: 0001 
    名: 'ZD' 
    電子メール:[
         '[email protected]'  '[email protected]' 
    ] 
}

シナリオ:

長いプロジェクトが二つ以上の機能が含まれているように、絶対に間違ったモンゴを選択してください!

デモをはじめ:

1、MongoDBのドライブ依存性増加

1  < 依存性> 
2      < のgroupId > org.mongodb </ groupIdを> 
3      < たartifactId > MongoDBのドライバ</ たartifactId > 
4      < バージョン> 3.4.3 </ バージョン> 
5  </ 依存>

図2に示すように、文書データを取得します

1  パブリック クラステスト{
 2  
3      公共 静的 ボイドメイン(文字列[]引数){
 4          MongoClientクライアント= 新しい MongoClient( "192.168.233.128"、27017 )。
5          MongoDatabase DB = client.getDatabase( "ローカル" )。
6          はMongoCollection <文書>ユーザー= db.getCollection( "ユーザ" )。
7          ため(文献次:user.find()){
 8              オブジェクト名= next.get( "名" );
9              オブジェクト年齢= next.get( "年齢" )。
10             System.out.println(MessageFormat.format( "名前= {0}、年齢= {1}" 、name.toString()、age.toString()))。
11          }
 12      }
 13 }

おすすめ

転載: www.cnblogs.com/bzfsdr/p/11924464.html