用户参与记录存储的演变

1、数据量较小,用户操作行为固定:
存储:MySQL
方案:我们以UID为key,一行一个用户,每个用户包括的用户作为列存储,比如UID=100,固定存储为操作A和操作B,则表结构大致如下:
table_operation
uid operation_a operation_b
100 1 1

如果我们要查询用户是否参与A或B时,直接使用SQL: SELECT * FROM table_operation WHERE uid=100 AND action_a=1就可以达成目标。

问题:用户操作固定,扩展较难,如果需要增加用户操作行为,则需要增加字段或增加表存储,增加字段的方法在一定的数据量级以下(比如100万)是可行的,如果行为间无关,则增加表存储方案的表现会很不错。

2、数据量较小、用户操作行为不固定:
与场景1相比,当前场景除了uid这个变量,增加了用户操作变量,即我们需要关注用户和用户操作两个变量。
存储:MySQL
方案1:增加操作表,生成操作id,用户操作行为表存储uid和oid。当用户执行一个新的操作时就在操作行为表插入一条记录。其表结构大致如下:

table_operation_info
oid name
1 operation_a
2 operation_b

table_operation
uid oid
1 1
1 2

当需要查询用户1是否执行过操作A时,使用SQL:SELECT * FROM table_operation WHERE oid=1 AND oid=1。
问题:当用户的操作行为较多时,用户操作行为增长速度很快,数据量也为逐渐增大,可能MySQL单表无法负载。解决方案在后续场景中说明。

3、数据量较大,用户行为固定
存储:MySQL
方案:与场景1相比,当前场景不同在于数据量比场景1大,数据量大到MySQL单表负载不过来。此方案解决的就是这个问题,当单表太大时,性价比较高的方法一般是采用分表。我们当前场景的变量是uid,只要依据uid按水平分表即可。

4、数据量较大,用户行为不固定
存储: MySQL
方案1:此方案应用于用户的操作行为可以分类的情况,即在场景1的基础上增加两次分表操作,按操作行为类分表和按用户分表。当前方案中我们需要应对两个变量:操作行为和用户。两次分表分别对应这两个变量,按业务规则做操作行为的分表操作,按用户id水平切分减少数据量。

方案2:此方案是完全的水平分表操作,在场景2的方案基础上,按用户水平切分。

5、数据量超大
存储: MySQL
方案1:分库分表,此时一个库已经无法满足需求,规则依据前面的场景实现,根据实际的需求可以考虑把不同的库放不同的机器上。
方案2:在分库分表的基础上,按位存储,因为一个操作行为有没有执行过是一个是否的状态,即0,1状态,因此我们可以用一个位来存储,64位可以存储64个操作行为的标记。

其它存储
key-value数据库
我们的需求实际上并不需要太多的关系型数据库的功能,简单的 k-v数据库就可以实现我们的功能,并且在性能上也会有所提升,毕竟做得少,会快。
先不管是选择基于内存的,还是非内存的(可以根据实际需求来选择,也可以是热点数据在内存,沉默数据在非内存中),假设我们有足够的空间存储。
方案1:
以uid+oid为key,值可以存储状态,也可以只存储是否参与(0和1),但是会存在key太多的情况,特别是当数据量超大时,uid的个数*oid的个数,可能是你无法相像的量级。
方案2:
一般来说,用户操作行为的数据量完全小于用户的量级,并且用户操作行为的数据可控。如果要减少key的个数,我们可以使用oid+用户分区索引id作为key,这里所谓的用户分区索引是指将用户以某个数量分成一个区,所有的用户都记录在这个这个区间内,比如以10000为一个区间,则uid为1到9999的用户分到区间0,这里可以以1和0存储用户是否执行了此操作,一个key对应的value初始化存储10000个0。当uid=100的用户执行了某操作,则将第100个0置为1。
方案3:
在方案2的基础上,将10000个0转换为10000个01位,假设一个位存储50位,则总共只需要200个。
方案4:
当用户量超大时,大多数的用户对于某个操作可能都是没有参与的,则在方案3的基础上我们增加简单的稀疏矩阵压缩,给每个存储位添加索引,当存储值不为0时才会存储。
方案5:
我还没想到,期待你的分享

小结

•随着数据量的增大,总的思路是分冶,当一个表搞不定时分表,当一个库搞不定时分库,当一台机器搞不定时加机器。
•对于不同的存储介质选择需要考虑成本和需求,所有的选择都是平衡后的结果。
•节省空间,按位存储。
•不要过早优化。

时间: 2024-09-20 05:59:50

用户参与记录存储的演变的相关文章

展示与传递价值 仅仅意识到用户参与的重要性

仅仅意识到用户参与的重要性,其实是一个空洞.片面的主张.要想成功激发消费者互动,你必须调动与吸引消费者的兴趣.因此,最初在与消费者互动时,你必须向客户展示你会向他们提供一些有价值的东西,并兑现你的承诺. 做出这个承诺,首先要做到移情,扪心自问:"如果我是一个用户,这个讯息能为我提供什么会让我想要打开它,阅读这个文案,点击这个链接,并参与其中?"定义用户参与对品牌的价值很简单,但你的用户必须从本质上受到激发.要想提出成功的价值主张,必须了解消费者为什么希望与你的品牌互动,并对为他们提供的

不仅仅是外链决定网站排名 社会化媒体让用户参与SEO

从2013年影响网站在百度排名的关键因素总结发布,到360我的搜索,再到百度口碑的来临.百度算法的不断调整以及百度站长沙龙LEE团队关于新时代搜索引擎的报告等一系列的行业信息来看,社会化媒体对于网站SEO排名的影响力正在迅速增长,这也即是web2.0时代用户参与对于SEO的影响,再也不仅仅是外链决定着网站排名,再也不是用户只能被动的接受,SEO已趋向多元化的发展,WEB2.0时代用户也参与到了对网站的选择,站长们现在与其说在迎合搜索引擎,不如说是在迎合用户. 社会化媒体用户行为参与到搜索 从前,

Foursquare的成功历程:用户参与和用户黏性

文章描述:Foursquare产品路:执行力促其抓住每个机会. 本文作者AJ Arora是前Yahoo!技术人员,同时也是Foursquare的忠实用户.在作者眼里,所有成功的产品都贯穿着相同的哲学:确认产品机会,然后创造产品抓住这些机会.在文章里,作者以一个产品经理的视野细细梳理了Foursquare所抓住的数个机会.我们从中可以一窥Foursquare的成功历程并有所启发. 1999: 手机浏览器和短信 看到手机浏览器和短信带来的机会后,Dennis Crowley构想了"签到"功

开心享乐拍节日送礼90万开心网用户参与

十一假期刚刚结束,大家在游山玩水.走亲访友的同时,众多精彩的http://www.aliyun.com/zixun/aggregation/9016.html">线上活动以及丰富的奖品也为大家送上一份节日"幸运"祝福.据悉,"开心享乐拍"作为开心网庆祝双节特别推出的线上活动,自9月24日上线以来,已吸引90万用户参加活动,并有73万用户参与了抽奖.据了解,"开心享乐拍"将与10月11日结束,开心网用户们还有机会继续在游戏中&quo

从“以用户为中心的设计”到“用户参与式设计”

中介交易 SEO诊断 淘宝客 云主机 技术大厅 UCD中常用的用户研究方法--问卷.一对一访谈.焦点小组等,更多是将用户作为研究的客体,通过用户语言表述的观点,了解用户的期望.需求.而北欧和北美近几十年.尤其最近十几年在工业设计领域,逐渐兴起的用户参与式设计(participatory design,PD),倡导将用户更深入的融入到设计过程中,培养用户的主人翁意识,激发并调动他们的积极性和主动性. 以诺基亚.摩托罗拉等传统移动通信产品制造商为代表的实践者,以及以IDEO.frogdesign等第

张楠:网站策划之如何提高用户参与度

中介交易 SEO诊断 淘宝客 云主机 技术大厅 网站策划.网站运营词典中有个叫"用户参与度"的词语,相信大家并不陌生,由于网站类型各不相同,比如: 1.交友网站,会利用交友活动的报名人数去衡量用户的参与度. 2.B2B网站会以用户发布的产品数量作为用户参与度. 3.B2C网站会以订单数量作为用户的参与度. 4.社区型网站会以用户的日记.相册数量,分别进行用户参与度的统计. 显然,用户参与度会有很多种不同的衡量指标,每个网站策划.网站运营人员会根据自己负责的产品和模块,分别确定不同&qu

从Facebook学习社交营销7大要点 获得最大用户参与度

中介交易 SEO诊断 淘宝客 云主机 技术大厅 随着智能手机和平板电脑的普及,用户随时随地登陆诸如Facebook.Twitter等社交网络已经成为了现实.那么,在我们每天使用这些社交媒体的时候有没有考虑过"人们在什么时候.发布什么形式的消息才能获得最大的用户参与度"这个问题呢? 对此,美国知名科技媒体The Next Web日前就根据所获悉的数据统计为我们揭露出了"Facebook所不为人知的七个惊人事实". 1.图片帖拥有更高的用户参与度 带 有图片的帖子比带有

超三成网购用户参与团购 大品牌或是下一增长点

从来没有一个电子商务领域,像网络团购这样发展迅猛,并在网购用户中积聚最多的"拥泵". CNNIC数据显示,截止 2012 年 12 月中国网络购物用户规模达到 2.42 亿人,其中团购用户数已达 8327 万,这意味着有超过三成网购用户参与团购,网络团购已经成为网民重要的购物方式. 目前,网络团购积累的人气和购买力还在不断释放,除了刺激生活服务团购规模水涨船高外,在实物团购领域也出现了越来越多大品牌的身影,带动团购行业新一轮的增长. 输钱未输阵 团购赢得人气 在去年拉手折戟 IPO .

网络营销务必认清品牌效果只有用户参与才是推广王道

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于网络营销,网络上关于类似的文章也是非常的多.但是对于网络营销秀子有自己的想法.秀子认为对于网络营销不是单纯的关键字排名.说实在的,这个太狭隘了.如果你认为关键词排名就是网络营销.只能说对于网络推广你只懂的皮毛.或许有些人听了就很不高兴的说:"不做排名做什么?"是啊,网络推广不做排名做什么这个可以说是很多人的疑惑.秀子接