关于拥有海量数据的电子商务网站的CRM系统建设底层存储实现的一点随想
2011-06-21 17:35
816 查看
最近在一直在研究hadoop的使用,主要是集中在数据仓库的应用这块。今天突然和一个业内的朋友聊起大型电子商务网站CRM系统建设的技术问题。CRM系统最基本的功能就是查询某个用户在我们网站进行的所有的操作,光这个需求,对于有千万级别用户的网站来说,设计起来就相当繁琐。比如查A用户在我们网站的所有交易订单记录,那么如果你是架构师,你会怎么设计?
通常的想法还是按照用户建分库,分表,把不同的用户段的订单存放在不同的库中,从而可以拆分库的目的,这样从一定程度上来说确实可以解决问题,但是治标不治本,随着网站的继续交易,总有一天分库也会达到查询能力的极限,到时候只有继续拆分库,这是一个痛苦的轮回。
今天我提出的是一个基于hbase的新思维,关于hbase的介绍请参考淘宝的博客http://www.tbdata.org/archives/1509。
我们可以在hbase中建一个用户表,rowkey为用户id,userinfo列簇,orderinfo列簇……其他列簇;
其中userinfo中存放用户的基本信息;
关键在于orderinfo列簇,在hbase的列簇中可以随意自定义列,我们可以把订单号作为列名,从而达到在一个列簇中存放用户的所有的订单信息;
示例数据如下:
这样就可以快速使用程序从hbase中查询某一个用户的详细历史信息,orderinfo中每一笔订单中的信息可以采用一些分隔符来分割订单的具体的字段信息,展示的时候利用程序解析还原成结构化的订单信息。
这还只是我很初步的一个思路,并没有经过实际验证是否可行,欢迎各位博友拍砖。
通常的想法还是按照用户建分库,分表,把不同的用户段的订单存放在不同的库中,从而可以拆分库的目的,这样从一定程度上来说确实可以解决问题,但是治标不治本,随着网站的继续交易,总有一天分库也会达到查询能力的极限,到时候只有继续拆分库,这是一个痛苦的轮回。
今天我提出的是一个基于hbase的新思维,关于hbase的介绍请参考淘宝的博客http://www.tbdata.org/archives/1509。
我们可以在hbase中建一个用户表,rowkey为用户id,userinfo列簇,orderinfo列簇……其他列簇;
其中userinfo中存放用户的基本信息;
关键在于orderinfo列簇,在hbase的列簇中可以随意自定义列,我们可以把订单号作为列名,从而达到在一个列簇中存放用户的所有的订单信息;
示例数据如下:
rowkey | userinfo | orderinfo |
201010100001 | "id:201010100001" "name:张三" "sex:male" "age:19" | ;"orderid0001:张三 2010年1月1日15:31 htc desire z 交易成功" "orderid0002:张三 2010年1月2日15:31 ipad2 交易成功" |
这还只是我很初步的一个思路,并没有经过实际验证是否可行,欢迎各位博友拍砖。
相关文章推荐
- 关于网站建设我个人的一点见解
- 关于Android数据存储、系统信息相关技术文章网站汇总
- 实现Winform应用系统自动升级 ---------关于服务器端配置文件以实现的一点总结
- 一个电子商务网站的系统结构及功能实现分析
- 关于网站管理系统的一点想法----关于自定义空件
- 现在电子商务网站建设中数据库如何设计使数据存储量变大
- 个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
- 关于SQL Server 存储过程的一点问题
- ASP.NET 自定义成员资格提供程序 Part.1(以 XML 存储为例,实现底层数据存储)
- 存储系统实现-跳跃表实现索引检索
- 关于大型网站技术演进的思考(五):存储的瓶颈
- 用户密码存储方案:中国XX银行业务系统中实现方法总结
- 创业随想--从网站建设开始(1,美好一生一世网首页,开始自己的创业梦想)
- 关于iOS中简单实现调用系统相机及相册功能
- 炫彩电子商务商城系统网站优化流程
- 超生命系统的一点随想
- 电子商务系统的设计与实现(十一):数据库设计
- 实现小数据量和海量数据的通用分页显示存储过程
- 关于时间的一点操作 ---系统锁定时间
- 关于大型网站技术演进的思考(六):存储的瓶颈(6)