提升项目记录

购物网站系统

实现目标
移动互联网的全面普及使人们真正进入了在线购物的生活。尽管市场上部分购物网站已足够成熟,但仍没有全民普及。只要存在未普及的客户群体,新型的购物网站就仍有发展契机。对于购物网站来说,产品营销推广策略决定了新用户的加入,而购物网站的体验舒适度、智能推荐、产品价格决定了老用户的去留。本购物网站致力于利用大数据和AI技术构造出一套较为成熟的系统,实现细分领域智能推荐、全链路商品监控、智能搜索、“亲和力”交互等功能,让产品真正地懂客户,了解客户的喜好。本购物网站系统依据水平业务和垂直架构将系统分为了多个模型:推荐模块、商品模块、搜索模块、交易模块、订单模块。下文只介绍核心技术内容。
技术方案
项目整体使用了ASP.NET MVC作为基础框架,并在数据层基于微软的Entity Framework使用CodeFirtst开发模式实现数据存储可靠性和可扩展性。前端使用Html5和React开源框架实现可视化舒适页面,同时为实现高并发访问,使用Redis集群作为系统的缓存。
数据是系统的生命源泉,下面介绍本系统的数据落盘、收集、加工流程。本系统使用Log4J轻量级日志框架收集用户行为埋点、商品信息埋点。行为埋点是智能推荐的数据基础,因此行为埋点的数据将会尽可能详细。例如对于一件上衣来说,行为埋点不仅要记录品牌、价格、颜色、款式等普通信息,更要记录材质、面料、尺寸等信息。使用filebeat/Flume日志采集框架收集落盘日志并发送到高性能消息队列Kakfa。使用大数据处理框架Storm对Kafka中的埋点数据进行过滤处理,处理逻辑依照行业内通用的衍生变量和自定义变量。处理完后,将变量数据存储到Hbase。依照Hbase的分区原理和过滤条件语法,本系统精心设计了Hbase的rowKey、Column、Value、timeStamp属性的数据结构,能实现大量数据高效安全地存储,并提供动态搜索。譬如对于用户近90天内采购新疆棉花材质的上衣数量变量,rowKey按照16进制md5首字母+用户ID+日期设计,column按照唯一标识+新疆棉花标识设计,value则为整型数字。每次Storm处理一条数据后就按照该数据结构更新一次,相同的rowKey和Column,value+1。因此使用该变量时,则基于rowKey和column过滤查询出近90天数据,并统计value值即可。
推荐模块使用AI协同过滤思想。目前协同过滤推荐方法使用普遍,主要分为基于领域和基于模型两种推荐算法。本系统只是用基于邻域的推荐方法。该推荐算法可分为基于用户的协同过滤推荐和基于商品的协同过滤推荐。
针对基于用户的协同过滤推荐(User-CF),其基本思想是为指定目标选择其兴趣类似、年纪相仿、性别一致的一组客户,并从这组用户购买的产品中找到该目标客户喜爱且并未购买的商品进行推荐。
针对基于商品的协同过滤推荐(Item-CF),其基本思想是计算商品之间的相似度,根据用户行为埋点计算出来的变量和商品信息埋点计算出的变量为其寻找相似度的产品并推荐。

自制数据库

实现目标
目前数据库有两种:一种关系型数据库另一种非关系型数据库。
关系型数据库:
关系型数据库指采用了关系模型来组织数据的数据库,可以简单理解为使用二维的表格存储数据,并由表格的结构和表格之间的联系组成数据之间的关系。在关系型数据库中,一张二维表的表名象征了这一张表中数据的关系,表中的每一行数据称为记录,也叫元组,表中的每一列称为一个字段,也叫属性,每一个属性都有一个合理的取值范围,称为域。
关系型数据库最重要的特征是支持SQL和事务,其遵循ACID规则,A (Atomicity) 原子性指事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚;C (Consistency) 一致性指数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。I (Isolation) 独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。D (Durability) 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
关系型数据库容易理解,使用方便,易于维护。但是存在难以支持高并发的难题,查询效率相对较低,升级和扩展数据库时可能需要停机维护,为保持ACID特征,需要较为精细的设计和性能开销。
非关系型数据库:
非关系型数据库往往以键值对存储,且往往结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。
非关系型数据库可以使用键值对存储,列存储,文档存储,图形数据存储等,其没有固定的模式,也没有声明式的查询语言,优点是灵活,并且往往具有高性能,高可用性和可伸缩性中的两个(CAP定理),缺点是对于需要进行较复杂查询的数据,不适合使用非关系型数据库,也不适合持久存储海量数据。
实现目标:
针对关系型数据库结构清晰,易于理解且适合事务和复杂查询特点,非关系型数据库灵活高性能的优点,我们团队设计并实现了一个兼容关系型数据库和非关系性数据库特征的数据库,既能够用关系型数据库SQL进行增删改查,同时能够以非关系型数据库,既能够使用类似于Redis使用键值对存入和取出数据,也能够使用SQL语言进行增删查改,进行复杂查询。
技术方案
为实现一个可以满足以上功能的数据库,需要考虑多个方面的内容,我们团队着重实现了一下内容。
1.存储管理器:实现一个允许读写的存储管理器,以块为单位,从磁盘上读写文件。
2.缓冲区管理器:实现一个管理缓冲区的缓冲内存中的块,将经常读写的硬盘中的块缓存到内存中,其中涉及到缓存置换算法(FIFO、LRU、LRU-k、clock)。
3.记录管理器:实现一个简单的记录管理器,允许浏览记录,插入和删除记录。
4.B±Tree Index:实现基于磁盘的B±tree索引结构。
5.SQL语句解析器:解析SQL语句,完成指定的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值