我需要编写一些轻量级脚本来处理大量对数据库的插入。每秒大约 300 个。
它是简单的数据计数器(如查看次数等)。因此,例如调用请求: http ://example.com/count/param1/param2/param3/param4
我需要用一些额外的数据(如 IP 地址或用户代理)保存 param1..4。
我决定选择 MongoDB 作为主数据库。我的想法是只编写数据而不对参数进行一些基本验证,例如:if(param1..4 are ok) than insert
. 验证非常简单 (is_int(), param2 == 'view') 等。
一个小时后,我想遍历我所有的数据库记录,删除重复项,收集一些数据,例如每小时点击多少次,然后将其放入 mysql 数据库 + 从 mongo 中清除循环项目。
我不是这种大数据处理方面的专家。首先是我的批量插入代码:
$m = new \MongoClient($connectionString);
$db = $m->stats;
$collection = $db->statsdata;
$collection->insert($arrayOfData);
我的问题是 - 它是最优的吗?它每秒会处理 300 个请求吗?因为我假设每个请求都会打开与 mongo 数据库插入数据的连接并关闭它。我不知道,有没有办法让这个连接保持打开状态,例如仅用于写入?
第二个问题是关于解析数据。我认为最好不要在写入之前检查记录是否存在。只需写入所有数据,然后对其进行解析。这个解决方案好吗?
您对处理此类解决方案有更多意见吗?也许使用另一个数据库或方法?任何输入将不胜感激:)