二、数据库表的设计1. 两大数据库表:文章记录表article、文章的点赞记录表article_praise 前言最近公司在做一个NFT商城的项目,大致就是一个只买卖数字产品的平台,项目中有个需求是用户可以给商品点赞,还需要获取商品的点赞总数,类似下图起初感觉这功能很好实现,无非就是加个点赞表嘛,后来发现事情并没有这么简单。
试想一下,如果A线程在执行完查询操作后,发现没有记录,随后由于CPU调度,把控制权让了出去,然后B线程执行查询,也发现没有记录,这时候A和B线程都会执行保存并商品点赞数加1这个操作,导致数据不正确。 CPU操作顺序:A线程查询 -> B线程查询 -> A线程保存 -> B线程保存 下面使用JMeter模拟一下并发的情况,模拟用户...
initial-scale=1.0,user-scalable=no">
应用需求类似微博这样,用户发布一条微博,数据分为两类 1、内容:内容、日期、与其用户发布的地理位置等等。这些数据基本没啥变动。应该叫冷数据 2、点赞、评论数等。这些数据频繁变动,应该叫热数据。 我现在的疑问就是:针对这个场景,如何设计数据库? 需要分成两个表吗?一个表读比较多,一个表写比较多,这样分出来...
首先每条微博你所看到的点赞总数肯定本地和后端分开,也就是你点赞后,本地加1,先保证你自己马上看到变化。然后通过点赞事件的方式传递给队列中,肯定不会直接写关系数据库,一条流量明星微博,千万粉丝点赞,评论里再点赞的请求事件挺吓人的。 先走队列,队列后面一路事件流是流式点赞统计,那么每条微博都会有个当日总...
记录用户对某篇文章的点赞信息 INSERTINTOlikes(user_id,article_id,like_time)VALUES(<user_id>,,NOW()); 1. 2. 这个插入语句将创建一条点赞记录,并将当前时间作为点赞时间。 总结 通过设计合适的 MySQL 数据库表,我们可以高效地存储和查询文章的点赞信息。在实际应用中,还可以根据需求进行优化,例如使用缓...
功能点设计统计文章点赞的总数,用户所有文章的点赞数,因此设计的点赞功能模块具有以下功能点:某篇文章的点赞文章点赞数用户点赞的文章持久化到MySQL数据库数据库设计1、Redis数据库设计Redis是K-V数据库,没有统一的数据结构,针对不同的功能点设计了不同的K-V存储结构用户某篇文章的点赞数:使用HashMap数据 ...