我们每天有200-300个现场项目,通过我们所有的现场项目从我们的供应商那里接收在线流量。我们将这些数据存储在两个不同的DB中(我知道这听起来很糟糕,但由于各种原因在设计时似乎很好):
projects表中的MySQL项目信息MongoDB collection中这些项目的流量数据。现在,我们必须从这些数据中生成分析数据,这些数据存储在给定的日期范围内--收入、利润、顶级供应商、顶级项目(转换率最高)等等。这些数据必须每天存储在某个地方,以便我们可以按日期范围查询它。
唯一的问题是,一个项目流量在多个供应商之间分配。所以这种类型的数据是嵌套的,因为对于一个项目,我们可以有10个供应商的记录。
存储这类数据的最佳方法是什么,这样我就可以方便地查询它以达到表示的目的。
“项目表”包含有关项目的详细信息,如-
Project_Code | Client Code | Sales Manager |Payout | Status | Country Code ...
流量集合包含关于特定项目流量的详细信息,如-
UUID | Project_Code | Vendor Code | Start Time | End Time | Conversion Status |...
当我们必须提取按项目划分的统计数据时,我们获取所有的项目,然后对相应的project_code的流量进行汇总,这样我们就可以得到
Project Code | Total Starts(sum of traffic for that project code) | Conversion (Sum of Traffic with conversion_status=1) | Incidence Length (Avg of Median(Endtime - Start time))
这就是我们到目前为止在数据库中得到的
现在我们想要的是每天挖掘这些数据,这样我们就可以计算
(给定日期范围,如Last 7 Days、Today、This Month)
第一视图。Project Code | Revenue Earned (Conversion * Payout) | Cost to Company (sum(Vendor Conversion * Vendor Cost)) | Profit (Revenue - Cost)
第二视图。First view but where Sales Manager = "John"
第三视图。Top n vendors | Top n Projects | ...
第四视图。Same as the Third View but where Sales Manager = "John"
到目前为止,我们正在使用Laravel,Mysql,MongoDB,Redis作为技术栈。
https://softwareengineering.stackexchange.com/questions/405806
复制相似问题