採択 2022/04/10 11:35〜 Track B レギュラートーク(20分)

MongoDB に溜まった約1.6億レコード、データ量1TBのあらゆるサイトの記事データを BigQuery で高速検索できるようにした話 PHPerKaigi 2022

12
developer_kazu 植江田和成 developer_kazu

メディア露出の調査・分析などがおこえるWebアプリケーションのWebClipping。WebClippingではあらゆるサイトから1日に10万件超の記事をクロールし、MongoDBに保存します。
二度と手に入らないかもしれない記事データを、ただ削除するのはもったいないです。
そこで今後活用できるように記事データをBigQueryへ移動させることになりました。
しかしPHPを使用して大量のデータをmongoDBから引き、そのデータをファイルに書き込んでいく作業は予想以上に難しかったです。
今回は、上記対応で行ったPHP上の工夫を紹介します!

主な内容
・約1.6億レコードのデータをどのようにcsvファイルに書き込むのか?
・PHPのファイル処理に便利なStream Wrapperで圧縮して書き込む
・ファイル処理の速度を向上させるために入出力ストリームへアクセスする