首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL产品存储体系结构

MySQL产品存储体系结构
EN

Stack Overflow用户
提问于 2018-03-12 13:14:49
回答 1查看 59关注 0票数 0

我需要为app制定架构。它是为销售产品而设计的。

系统将每天接收大约30-40k的新产品。这将导致在表product中创建新记录。

制度应该保持价格的历史。用户应该能够看到产品A的价格在去年是如何变化的。

所以我有两个选择:

  1. 当新产品出现时,我将(复制和删除)旧产品移到另一个表中。让我们把它命名为product_history。因此,产品表只包含目前正在销售的产品。因此,我需要重写查询,因为产品中的行可以在表产品中,也可以在表product_history中(如果客户想查看销售历史、统计数据等)。
  2. 任何东西都不会被移除。我将旧产品放在同一个表中,只需使用一些属性("is_old")将其标记为旧产品。新记录由Redis编制索引。

解决方案2使代码更容易编写,但我担心表也会变大。优点是没有复制数据。不要乱动移除。

解决方案1使对系统的支持更高。Active table 产品将始终保持较小。但是,总是玩两张桌子比玩一张桌子更难。

需要注意的一点是,这与问题无关,但它使事情变得更加复杂:每一种产品都可以有多达12种不同的价格(将来可能会更多)。因此,字段价格被存储为json,并且已经被Redis索引。

哪一种解决方案可以减轻未来的痛苦?你会选哪一个?

EN

回答 1

Stack Overflow用户

发布于 2018-03-14 06:35:26

我的选择是: 1.选择option#2,它更干净,option#1的迁移部分增加了写负载和复杂性。

  1. 对每个产品项目使用“活动”标志,默认情况下为1或真。
  2. 对active标志上的表进行分区,以便活动项(这是唯一的查询项)位于单个分区中,而在其他分区中处于非活动状态。
  3. 对于定价,不要将JSON存储为varchar/text,使用本机JSON字段 ( mysql 5.7+),它将允许您在json中进行更丰富的查询。
  4. 对于redis同步,我还建议探索脱贝兹来将mysql更改流到redis。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49236192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档