データベースへの大量の挿入を処理できる軽量のスクリプトを作成する必要があります。毎秒約300回。
これは、データの単純なカウンターです (ビュー カウントなど)。たとえば、リクエストの呼び出し: http://example.com/count/param1/param2/param3/param4
param1..4 をいくつかの追加データ (IP アドレスやユーザー エージェントなど) と共に保存する必要があります。
プライマリ データベースとして MongoDB を選択することにしました。私の考えは、次のようなパラメーターの基本的な検証を行わずにデータのみを書き込むことですif(param1..4 are ok) than insert
。検証は非常に単純です (is_int(), param2 == 'view') など。
1 時間後、すべてのデータベース レコードをループし、重複を削除し、1 時間あたりのヒット数などのデータを収集して、それを mysql データベースに配置し、ループされたアイテムを mongo からクリアします。
私はそのようなビッグデータ処理の専門家ではありません。まず第一に、大量挿入のコードは次のとおりです。
$m = new \MongoClient($connectionString);
$db = $m->stats;
$collection = $db->statsdata;
$collection->insert($arrayOfData);
私の質問は - それは最適ですか? 1 秒あたり 300 件のリクエストを処理できますか? 私は、各リクエストがmongoデータベースへの接続を開き、データを挿入して閉じると想定しています。たとえば、この接続を書き込み専用に開いたままにしておく方法はありますか?
2 番目の質問は、データの解析に関するものです。書き込み前にレコードが存在するかどうかを確認しないのが最適だと思いました。すべてのデータを書き込んでから、それを解析します。この解決策は大丈夫ですか?
そのようなソリューションの取り扱いについて、他に意見はありますか? おそらく別のデータベースまたはアプローチを使用しますか?どんな入力でも大歓迎です:)