MySQL innoDB 表中都有微博帖子和与之相关的投票/表情符号。需要两种类型的页面:
(A) 包含许多微博的列表页面以及单页上的投票数/表情符号数(例如 25)。
例如
最有趣的帖子
在一个有趣的帖子中没有那么有趣的内容。Lorem ipsum dolor sit amet, consectetur adipiscing elit。Phasellus euismod consequat pellentesque。.....阅读更多....
(3) 喜欢, (5) 无聊, (7) 微笑
. + 同一页面上还有 24 个帖子。
(B) 包含单个微博的永久链接页面,其中包含详细的投票+投票计数/表情符号。
最有趣的帖子
在一个有趣的帖子中没有那么有趣的内容。Lorem ipsum dolor sit amet, consectetur adipiscing elit。Phasellus euismod consequat pellentesque。Quisque viverra adipiscing auctor。Mauris ut diam risus,在发酵菌中。Aliquam urna lectus, egestas sit amet cursus et, auctor ut elit。Nulla tempus suscipit nisi, nec condimentum dui infantum non。在 eget lacus mi, ut placerat nisi。
(你、Derp 和另外1 个这样)、(5) 无聊、(7) 笑了
第一种方法:
表格1:
post_id | post_content | post_title | creation_time
表#2 用于存储投票、喜欢、表情符号:
action_id | post_id | action_type | action_creator | creation_time
显示一页帖子或单个帖子。查询第一个表以获取帖子,第二个查询以获取与帖子相关的所有操作。每当进行投票等时,都会在表中插入一个post_actions
。
第二种方法:
表格1:
post_id | post_content | post_title | creation_time | action_data
哪里action_data
可以像{ "likes" : 3,"smiles":4 ...}
表#2:
action_id | post_id | action_type | action_creator | creation_time
要显示一页帖子,仅查询第一个表以获取帖子和操作数据,以显示具有详细操作的单个帖子,查询第二个表以获取与帖子相关的所有操作。每当完成投票等操作时,都会在表中进行插入post_actions
,并更新 table#1 的 action_data 字段以存储更新后的计数。
假设有 10 万个帖子和 10 倍的操作,即创建了 100 万个或更多操作。方法#2 有好处吗?除了必须读取、修改和更新 JSON 信息之外,它还有什么缺点吗?无论如何可以遵循并进一步改进哪种方法#2?
根据反馈添加更多信息:
- Python 脚本将读取、写入数据。
- MySQL DB 服务器将不同于 Web 服务器。
- 由于帖子创建的写入量很低,即每天 10000 次。但是由于动作引起的可能更高,假设由于投票、喜欢、表情等动作,每秒最多写入 50 次。
- 我担心的是两种方法的读/写性能比较和第二种方法的陷阱,以及将来可能会不足的地方。