ITPub博客

首页 > 数据库 > 数据库开发技术 > 跳过大数据精准实时推荐

跳过大数据精准实时推荐

原创 数据库开发技术 作者:xuexiaogang 时间:2022-10-27 21:02:37 0 删除 编辑

   上 周处理过一个案例。我们博士找到我说一个实时精准推荐场景,需要我帮忙一下。我听她描述,首先经过大数据系统查询用户订单情况得知他买过什么?还要通过大数据系统查询用户看过什么?然后结合他买的和看的推荐商品。 我问:“这是不是就是一个类似猜你喜欢的?”答:“是”。我又问:“要实时?”答:“最好实时或者准实时。”我说现在这样设计不可能啊? 那个大数据系统走一次几个小时。博士说现在的确如此,几天更新一次买过什么。所以听到这里大家知道了背景吧。

     当然之所以要走大数据这就是我一直以来说的那句话,单机(套)是最好的架构。数据库几十个,商品、订单、行为等等无法做到跨库查询,怎么办?数据集中。

数据集中可以实时吗?可以也不可以。对于关系型数据库可以,对于hadoop全家桶成员有的可以,有的不行。这个不行主要还是hive自身缺陷,不支持写。这就天生注定了,只能定时合并。

    我给出的方案是(本案例恰好,商品和订单都是MySQL,我采用多源复制的方案进行了数据库的实时汇聚。如果是遇到Oracle PG等,其实异构数据库也是可以通过CDC技术来实时汇聚)。对现有SQL进行改写,目前是30多万数据中选出50条,其实这已经是海选,不是精准了。何为精准推荐,就是只推荐1-2个,数量在于精,而不在于多。我个人认为50个其实效果还不如5个好。但是先解决30万的问题。


      select 商品属性 from 商品表 where  商品卖家 ='123' and 商品新上架时间>='2022-10-21 00:00:00'   and  (一个买家用户买过的商品属性   or  还是一个买家用户看过的商品属性)这里买过的属性是从订单表中拿,而且拿最新的一条。看过的属性从行为表中拿,而且拿最新的一条。也就是说等于拿着两条数据特征去商品表中找,很容易很快。

       我在实际环境中测试了一下,平均30毫秒。其实这里最难的无非就是商品、订单和行为是三个数据库。如果都是一个数据库,更加简单了。


    本案例典型的使用 数据库直接完成实时的精准推荐。虽然速度不是最优,但是还可以吧。要让用户体验好,必须在数据库段压到100毫秒内,这样给网络和其他环境留下空间。


    我比较得意的点在于,逻辑清楚,而且真的还算快。没有中间环节,没有拖泥带水。直接数据库镜像复制解决。


   很多时候数据库本身不慢,但是如果设计无用的太多,那才是真的让他慢。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2920778/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
OracleACE/PostgreSQLACE/阿里云MVP/腾讯云TVP/墨天轮 MVP/TiDBMVA/数盟会华东区长老/OpenTenBase社区委和技术委委员/架构师技术同盟名人堂成员上海地区理事会成员/if社区联合发起人/《DBA实战手记》作者/公众号:四海内皆兄弟

注册时间:2013-07-01

  • 博文量
    422
  • 访问量
    952848