この記事では 3 分で学習できます
1. MongoDBの主な特徴
2. MongoDB の長所と短所、長所を最大限に活用し、短所を回避する
3. MongoDB を選択するのはどのような場合ですか? なぜそれを使うのでしょうか?
4. MongoDB と MySQL のキーワードの比較
5.MongoDBをダウンロードしてインストールします
6. JavaはMongoDBを統合し、追加、削除、変更、クエリを実現します
MongoDB と MySQL の違い
データ モデルは異なります。MySQL はリレーショナル データベースですが、MongoDB はドキュメント データベースです。MongoDB のデータ モデルはより柔軟で、非構造化データを保存でき、大量の半構造化データの処理に適しています。
大量のデータの処理: MongoDB は大量のデータを処理できますが、MySQL では大量のデータを処理するときにパフォーマンスのボトルネックが発生する可能性があります。MongoDB の分散アーキテクチャは、大量のデータを処理するために複数のノードに簡単に拡張できます。
高可用性: MongoDB は高可用性と耐障害性を備えており、複数のノード間でデータを自動的に分散してデータの信頼性と可用性を確保できます。
クラウド コンピューティングに最適: MongoDB はクラウド コンピューティングの時代に最適であり、クラウドで簡単に展開して管理できますが、MySQL ではより多くの構成と管理が必要です。
リアルタイム アプリケーションに最適: MongoDB は、リアルタイム データ処理とリアルタイム クエリをサポートしており、高速応答が必要なリアルタイム アプリケーション シナリオに適しています。
MongoDBの主な機能
ドキュメント指向のデータ モデル: MongoDB はドキュメント ベースのデータベースです。データはドキュメントの形式で保存されます。各ドキュメントには異なるフィールドと値を含めることができます。このデータ モデルは、従来のリレーショナル データベースよりも柔軟です。
高性能: MongoDB は高性能の読み取りおよび書き込み機能を備え、高い同時実行性と高速なデータ クエリをサポートします。
分散アーキテクチャ: MongoDB は分散アーキテクチャをサポートしており、大量のデータを処理するために複数のノードに簡単に拡張できます。
高可用性: MongoDB は高可用性と耐障害性を備えており、複数のノード間でデータを自動的に分散してデータの信頼性と可用性を確保できます。
インデックスのサポート: MongoDB は、単一フィールド インデックス、複合インデックス、フルテキスト インデックスなどのさまざまなタイプのインデックスをサポートしており、データ クエリの効率を向上させることができます。
強力なクエリ言語: MongoDB は、さまざまなクエリ要件を満たすことができる、集計パイプライン、地理空間クエリ、テキスト検索などの強力なクエリ言語をサポートしています。
スケーラビリティ: MongoDB は複数のノードに簡単に拡張でき、大量のデータや同時リクエストの処理が容易になります。
オープン ソース: MongoDB は、無料で使用および変更できるオープン ソース データベースです。
MongoDB の長所と短所、長所を最大限に活用し、短所を回避する
MongoDB の利点:
-
柔軟なデータ モデル: MongoDB のドキュメント データ モデルは非常に柔軟で、半構造化データを保存でき、さまざまな種類のデータの処理に適しています。
-
高性能: MongoDB は高性能の読み取りおよび書き込み機能を備え、高い同時実行性と高速なデータ クエリをサポートします。
-
分散アーキテクチャ: MongoDB は分散アーキテクチャをサポートしており、大量のデータを処理するために複数のノードに簡単に拡張できます。
-
高可用性: MongoDB は高可用性と耐障害性を備えており、データの信頼性と可用性を確保するために複数のノードに自動的に分散できます。
-
インデックスのサポート: MongoDB は、単一フィールド インデックス、複合インデックス、フルテキスト インデックスなどのさまざまなタイプのインデックスをサポートしており、データ クエリの効率を向上させることができます。
-
強力なクエリ言語: MongoDB は、さまざまなクエリ要件を満たすことができる、集計パイプライン、地理空間クエリ、テキスト検索などの強力なクエリ言語をサポートしています。
-
スケーラビリティ: MongoDB は複数のノードに簡単に拡張でき、大量のデータや同時リクエストの処理が容易になります。
-
オープン ソース: MongoDB は、無料で使用および変更できるオープン ソース データベースです。
MongoDB の欠点:
-
トランザクションをサポートしていない: MongoDB は以前のバージョンではトランザクションをサポートしていません。最新バージョンではすでにトランザクションがサポートされていますが、従来のリレーショナル データベースと比較するとまだ不十分です。
-
メモリ使用量が多い: MongoDB は大量のデータを処理する際に多くのメモリを占有する必要があり、メモリが不足するとパフォーマンスの低下を引き起こす可能性があります。
-
MongoDB の柔軟性には特定の課題も伴い、データの冗長性や不整合を避けるためにデータベース構造を慎重に設計する必要があります。
-
大規模なストレージ スペース: MongoDB はデータを保存するときに大きなストレージ スペースを占有する必要があり、データの量が多い場合、ストレージ コストが高くなる可能性があります。
まとめると、MongoDB には、柔軟なデータ モデル、高性能、分散アーキテクチャ、高可用性、インデックス サポート、強力なクエリ言語、スケーラビリティ、オープン ソースという利点がありますが、トランザクション、高いメモリ使用量、データベース設計などはサポートされていません。注意が必要であり、占有される大きな保管スペースに注意を払う必要があります。
MongoDB を選択するのはどのような場合ですか? なぜそれを使うのでしょうか?
(1) ゲームシーン
MongoDB を使用して、ゲームのユーザー情報、装備、ポイントなどを保存し、埋め込みドキュメントの形式で直接保存します。これは、クエリと更新に便利です。
(2)物流現場
MongoDB を使用して、注文情報、注文ステータス、物流情報を保存します。注文ステータスは配送プロセス中に迅速に反復され、MongoDB に埋め込まれた配列の形式で保存されます。注文内のすべての変更は 1 つのクエリで確認できます。すごいプラスです。
(3) ソーシャルシーン
MongoDB を使用してユーザー情報と友人サークル情報を保存し、地理的位置インデックスを通じて近くの人々と位置測位機能を実現します。
(4) IoTのシナリオ
MongoDB を使用して、デバイス情報、デバイスによって報告されたログ情報を保存し、これらの情報に対して多次元分析を実行します。
(5)ライブ映像
MongoDB を使用して、ユーザー情報やインタラクション情報などを保存します。
MongoDB と MySQL のキーワードの比較
ダウンロードとインストール
MongoDB をダウンロードしてインストールする手順は次のとおりです。
-
MongoDB公式サイト(https://www.mongodb.com/)にアクセスし、「ダウンロード」ボタンをクリックしてください。
-
[コミュニティ サーバー] で、Windows、macOS、Linux などのオペレーティング システムに合ったバージョンを選択します。
-
ダウンロードが完了したら、インストーラーをダブルクリックし、プロンプトに従ってインストールします。
-
インストール完了後、コマンドラインツールを開いて「mongo」コマンドを入力し、「MongoDB シェルバージョン xxx」などの情報が表示されればインストール成功です。
-
データベースをローカルに作成する必要がある場合は、コマンド ライン ツールに「mongod」コマンドを入力して MongoDB サービスを開始できます。
-
ブラウザに「http://localhost:27017/」と入力して、MongoDB の Web 管理インターフェイスにアクセスします。
予防:
-
インストール プロセス中に、インストール パスとデータ ストレージ パスを選択する必要がありますが、デフォルトのパスを選択することをお勧めします。
-
インストールが完了したら、コマンド ラインで MongoDB コマンドを使用できるように、MongoDB bin ディレクトリをシステム環境変数に追加する必要があります。
-
MongoDB サービスを開始する前に、データ ストレージ ディレクトリを作成する必要があります。このディレクトリは、コマンド ラインで「mkdir data\db」コマンドを入力することで作成できます。
-
MongoDB を使用する場合は、まず MongoDB サービスに接続する必要があり、コマンド ラインで「mongo」コマンドを入力すると、ローカルの MongoDB サービスに接続できます。
JavaはMongoDBを統合し、追加、削除、変更、クエリを実現します
Spring Boot と MongoDB を統合し、生徒の追加、削除、変更、クエリを実現する手順は次のとおりです。
-
Spring Boot プロジェクトを作成し、MongoDB の依存関係を追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
次に、接続情報を構成します。
MongoDB 接続情報をまたはapplication.properties
ファイルに追加します。次に例を示します。application.yml
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
このうち、hostとportはそれぞれMongoDBのホスト名とポート番号、databaseは接続するデータベースの名前です。
MongoDB で認証が必要な場合は、次の構成も追加する必要があります。
spring.data.mongodb.username=myuser
spring.data.mongodb.password=mypassword
このうち、usernameとpasswordはそれぞれMongoDBのユーザー名とパスワードです。
-
学生エンティティ クラスを作成します。
@Document(collection = "student")
public class Student {
@Id
private String id;
private String name;
private int age;
// 省略getter和setter方法
}
-
学生リポジトリ インターフェイスを作成します。
@Repository
public interface StudentRepository extends MongoRepository<Student, String> {
}
-
学生サービス インターフェイスと実装クラスを作成します。
public interface StudentService {
List<Student> findAll();
Student findById(String id);
void save(Student student);
void deleteById(String id);
}
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository;
@Override
public List<Student> findAll() {
return studentRepository.findAll();
}
@Override
public Student findById(String id) {
return studentRepository.findById(id).orElse(null);
}
@Override
public void save(Student student) {
studentRepository.save(student);
}
@Override
public void deleteById(String id) {
studentRepository.deleteById(id);
}
}
-
学生のコントローラー クラスを作成します。
@RestController
@RequestMapping("/students")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("")
public List<Student> findAll() {
return studentService.findAll();
}
@GetMapping("/{id}")
public Student findById(@PathVariable String id) {
return studentService.findById(id);
}
@PostMapping("")
public void save(@RequestBody Student student) {
studentService.save(student);
}
@PutMapping("/{id}")
public void update(@PathVariable String id, @RequestBody Student student) {
student.setId(id);
studentService.save(student);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable String id) {
studentService.deleteById(id);
}
}
完全なコード例:
Student.java
@Document(collection = "student")
public class Student {
@Id
private String id;
private String name;
private int age;
// 省略getter和setter方法
}
StudentRepository.java
@Repository
public interface StudentRepository extends MongoRepository<Student, String> {
}
StudentService.java
public interface StudentService {
List<Student> findAll();
Student findById(String id);
void save(Student student);
void deleteById(String id);
}
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository;
@Override
public List<Student> findAll() {
return studentRepository.findAll();
}
@Override
public Student findById(String id) {
return studentRepository.findById(id).orElse(null);
}
@Override
public void save(Student student) {
studentRepository.save(student);
}
@Override
public void deleteById(String id) {
studentRepository.deleteById(id);
}
}
StudentController.java
@RestController
@RequestMapping("/students")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("")
public List<Student> findAll() {
return studentService.findAll();
}
@GetMapping("/{id}")
public Student findById(@PathVariable String id) {
return studentService.findById(id);
}
@PostMapping("")
public void save(@RequestBody Student student) {
studentService.save(student);
}
@PutMapping("/{id}")
public void update(@PathVariable String id, @RequestBody Student student) {
student.setId(id);
studentService.save(student);
}
@DeleteMapping("/{id}")
public void deleteById(@PathVariable String id) {
studentService.deleteById(id);
}
}
要約する
MongoDB は、高パフォーマンス、高可用性、スケーラビリティを備えたドキュメントベースの NoSQL データベースです。BSON 形式を使用してデータを保存し、複雑なクエリと集計操作をサポートし、分散ロックやトランザクションなどの機能も提供します。MongoDB のデータ モデルは非常に柔軟で、アプリケーションのニーズに応じて自由に設計できます。Spring Bootでは、MongoDBの依存関係を導入し、接続情報を設定することでMongoDBを利用することができ、Spring Data MongoDBを利用してMongoDBデータベースを操作することができます。