ホームページ  >  記事  >  バックエンド開発  >  複数のプロセスを使用して数百万のデータを 1 分で CSV にエクスポートし、OSS にアップロードします

複数のプロセスを使用して数百万のデータを 1 分で CSV にエクスポートし、OSS にアップロードします

藏色散人
藏色散人転載
2023-04-20 15:30:511600ブラウズ

この記事は、PHP に関する関連知識を提供します。主に、数百万のデータを CSV にエクスポートし、それを 1 分以上で OSS にアップロードする方法を紹介します。興味のある友人は参照してください。皆さんも協力していただければ幸いです。 。

要件

  1. この製品は、特定のチームの特定のユーザーの歩行ログを csv ファイルにエクスポートする必要があり、それは 1 つのファイルにまとめられ、速度が速い必要があります。時間もかかりません。

問題

  1. ログは多くの場合、大量のデータを意味します。
  2. ファイルにインポートする場合は、データ量が多くてもページングクエリとcsv書き込みだけで解決します。
  3. 速度も速く、時間も短く、複数のファイルを複数のプロセスでエクスポートすることでも解決できます。難しいことはありませんが、必要なファイルは 1 つだけです。

ソリューションのアイデア

  1. まず、エクスポートするデータの総量をクエリします。
  2. それをバッチ キューに入れて、複数のコンシューマー クエリを開始し、書き込みます。複数の CSV。
  3. キューに投稿するときに各キューによって書き込まれる特定の CSV パスとファイル名を記録します。
  4. バッチキューの特性を利用して、前手順で記録した複数のcsvを実行完了時に順番に1つのcsvに結合します。
  5. 結合が完了したら、複数のcsvを削除します。マージされた CSV を保持し、oss にアップロードします。

Result

500,000 を超えるデータをテストした後、バッチ キュー内の各キューには、処理する 50,000 個のデータが割り当てられます。プロセスが完了します 所要時間は 1 分未満です。この方法がどのくらい速いかは、サーバーが開始できるコンシューマとプロセスの数によって決まります。テストしたときは自動戦略を使用しましたが、同時に実行できるコンシューマは最大 8 つでした。

複数のプロセスを使用して数百万のデータを 1 分で CSV にエクスポートし、OSS にアップロードします

推奨学習: 「laravel ビデオ チュートリアル

以上が複数のプロセスを使用して数百万のデータを 1 分で CSV にエクスポートし、OSS にアップロードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。