NoSQL データベースに 2000 万件のレコードを挿入する方法

公開: 2022-11-24

NoSQL データベースに 2,000 万件のレコードを挿入するには、さまざまな方法があります。 1 つの方法は、データベースの一括読み込み機能を使用することです。 これには、データをデータベースが理解できる特定の形式にする必要があり、データをロードする最も効率的な方法です。 もう 1 つの方法は、スクリプトまたはアプリケーションを使用して、一度に 1 レコードずつデータを挿入することです。 これは処理が遅くなりますが、データが特定の形式である必要はありません。

Mongodb は何百万ものレコードを処理できますか?

クレジット: freecodecamp.org

何百万ものレコードをリアルタイムで処理するには、MongoDB と ElasticSearch を使用する必要があります。 これらの構造と概念を大規模なデータセットで使用することも有益です。

大規模な MongoDB 挿入を最適化することで、5,000 万件のレコードを 33% 高速に読み込むことができます! Github Setup ページには、これらすべてのプログラムのコードがあります。 アップリンク速度 25 ~ 35 Mbps、接続速度 25 ~ 35 Mbps で Macbook Pro をテストしました。 この実験では、製品対応の EC2 で得られた結果とは異なる結果になる可能性があります。 Kaggle データ テスト プラットフォームは、データセットが準備されているため、データのテストに最適です。 5 GB のファイルである yelp_academic_dataset_review.json には、690 万件のレコードが含まれています。 ノードがファイルを読み取った後、Mongo が 100 万レコードを書き込むのに 2.5 時間かかりました。

このツールは、生成するデータ ポイントが 200 万以下の場合に推奨されます。 Node.js バッファー エンティティには、2 GB を超えるファイルを含めることはできません。 ここで Streams を使用するのは理にかなっています。 この例では、わずかな遅延で 100k シーケンシャルを挿入できます。 インサート挿入にかかった時間は29分。 EventEmitter はすべてのストリームで使用されるため、これが当てはまります。 この CPU 使用率は 40% に増加し、シーケンスされた 100k 挿入よりも 10% 増加しています。

IOPS は 50 から 100 にほぼ倍増し、接続数は 40 から 60 に増加しました。各フォルダーを反復処理し、ファイルを読み取り、そこにレビュー配列の長さのカウンターを保存する必要があります。 このアプローチが将来うまく機能する場合は、後の挿入に適用できます。 時間をかけて、それがどのように機能するかを確認してください。 このセクションでは、51,936 個のフォルダーを読み取り、6,300 万件のレコードを挿入するのにかかる時間を調べました。 データ挿入は後で並列化できるため、次の 100 万レコードに到達するには、読み込まれたフォルダーの数を知る必要があります。 システムが 6,300 万件のレコードを挿入するのに約 1 時間半かかります。 以前は、それよりも 33% 高速になると予測していました。

1 時間半以内に 45GB 近くのデータをロードしました。 IOPS は期間全体で 125 であり、接続はほとんどの場合 100 前後にとどまりました。 結果が出たので、今後の計画を立てられると思います。 InsertMany を使用すると、1 分以内に 100 万件のレコードを挿入できます。 1 ~ 10 メートルの読み込みの場合、挿入を並列化するために Stream API が必要になる可能性が高くなります。 クラスターの CPU と IOPS が非常に重いため、アプリのパフォーマンスが大幅に低下する可能性があります。 スケジュール スクリプトを実行して、同時に実行できる操作/プロセスの数を決定します。

MongoDB には、大容量ファイルの優れた選択肢であるだけでなく、他のファイル ストレージ システムよりも多くの利点があります。 まず、大きなファイルをデータベースに簡単に格納できます。 さらに、データベースには、多数のオブジェクトを処理する能力があります。 最後に、データベースは水平方向にスケーラブルであるため、圧倒されることなく大量のデータを処理できます。 大規模なファイルをデータベースに保存する場合は、MongoDB が最適です。 これを使用すると、他のストレージおよびスケーラビリティ オプションよりも多くの利点があります。

Mongodb ドキュメントの最大サイズは?

クレジット: Brain-mentors.com

MongoDB ドキュメントの最大サイズは 16 メガバイトです。

Mongodb に何百万ものレコードを挿入する方法

MongoDB サーバーが稼働していて、データベースとコレクションが作成されていると仮定すると、insert() メソッドを使用してレコードを挿入できます。 このメソッドは、ドキュメントの配列または単一のドキュメントのいずれかを取ることができます。
単一のドキュメントを挿入するには、次の構文を使用します。
デシベル。コレクション。挿入(
{
名前:「ジョン・ドウ」
}
)
複数のドキュメントを挿入するには、次の構文を使用します。
デシベル。コレクション。挿入([
{
名前:「ジョン・ドウ」
}、
{
名前:「ジェーン・ドウ」
}
]))

いくつかのオプションがあります。 デバイス ID ごとに個別のコレクションを作成し、その ID を個別にクエリすることができます。 多くのデバイスがある場合、これは高価になる可能性があります。 コレクション内のすべてのドキュメントを検索する場合は、すべてのデバイスの同じコレクションで同じことを行うことができます。 多数のデバイスがある場合、このサービスのコストは法外に高くなる可能性があります。 3 番目のオプションは、シャード コレクションを作成することです。 負荷が Mongo 全体に分散されるため、クエリ処理が高速化されます。 sharded コレクション オプションを使用してコレクションを作成する場合は、必ず shards オプションを true に設定してください。

Mongodb: Nosql データベース管理システム

MongoDB は、ドキュメントを処理するために構築された NoSQL データベース管理システムです。 ドキュメントあたり 100,000 インデックス キーの既定の制限で、幅広いデータ ファイルを処理できます。 したがって、MongoDB プラットフォームは、過負荷になることなく大量のデータを格納できます。 一括挿入は、MongoDB の便利な機能です。 一度に複数のドキュメントを挿入できるため、追加するデータが多い場合に便利です。

Mongodb 一括挿入制限

MongoDB 3.6 バージョンは現在 100,000 を生成します。

一括挿入メソッドを使用すると、複数のドキュメントを一度に MongoDB に挿入できます。 パラメータとして、insert メソッドはドキュメントの配列を生成します。 ユーザーは、クエリにすべてのフィールドを含める必要はありません。 この例では、コマンド ラインを使用して、MongoDB 一括挿入を使用して複数のドキュメントを挿入してみましょう。 数値を一括で挿入するには、Bulk.insert() メソッドを使用します。 バージョン 2.6 以降に導入されたこのメソッドは、順序付けられていない一括挿入に似ています。 最初に carbulk1 という名前の車の順序付きリストを作成し、次にドキュメントに対して execute メソッドを実行してドキュメントを挿入します。 この Java プログラムは、初めてシェル コマンドを使用してさまざまな一括操作を実行する方法を示しています。

Mongodb には制限がありますか?

MongoDB は 100 レベルのネストの深さをサポートしているため、ドキュメントのサイズは最大 16 MB になる場合があります。 MongoDB データベースには、最大 20 GB のデータしか含めることができません。