2.如何实现大型电商热销榜
2.1 案例描述
本文以大型电商热销榜为例,讲述了从1万用户到1亿用户,从GB数据到PB数据系统,技术思维需要什么样的升级。
假设某电商网站销售10亿件商品,已经跟踪了网站的销售记录:商品id以及购买时间{product_id,timestamp},整个交易记录是1000亿行数据,TB级。怎么样设计一个系统,根据销售记录统计去年销量前十的商品?
假设我们的数据为:
2.2 小规模的经典算法
对于该问题,可以分解为以下两个步骤完成:
- 第一步:统计每个商品的销量,可以使用哈希表数据结构,一遍遍历完成,时间复杂度为O(n)
- 第二步:找出销量前十,可以使用基于快速排序的topK算法,平均时间复杂度为O(n)(与基于快速排序寻找第k大的值相似;判断快速排序中过程的枢纽值左边有多少个数,与k进行比较,递归进行)
以python编写代码大概是这样的:
def CountSales(sales_records):
# Calculate number of sales for each product_id
sales_count = {}
for record in sales_records:
sales_count[record[product_id]]=sales_count.get(record[product_id],0)+1
return sales_count
def TopSellingItems(sales_records, k=10):
# Calculate the best selling k products
sales_count &#