请教下这种情况mysql数据库设计

北风厉兮肃伶伶
  • 369

公司业务:
1.我们有三种商品来源,1某宝,东,pdd,也就是商品表,数据量很大,类型也不一样.而且要求前台搜索商品
我考虑过设计方法:
1.使用mysql 分三表存储
2.一张mysql表存储商品,按typeid区分商品来源
3.直接上MongoDB
三种方法都有缺点,1,分三表存储查询起来困难,特别是订单,字段冗余是必须的 2,一张表存储,typeid字段使用索引会天崩, 3, MongoDB无法关联查询
大神们有什么更好的方法?
个人更倾向于MongoDB,即时你用mysql,left join也是个蛋疼的事儿

回复
阅读 1.1k
2 个回答

如果你的业务MongoDB都能满足那就使用MongoDB吧, 现在不使用join操作很正常.

如果你的业务已经在使用MySQL了, 还是三表分开存储. 如果确实存在业务需要同时简单按id或者时间list三种商品或订单的情况, 可以新建一个单表或者view汇总存储核心的几列数据.

如果需要前台搜索商品, 特别你是允许用户搜索的情况, 那么建议为这个搜索单独上ElasticSearch. 因为你的业务以后如果扩展, 需要搜索标题/类目/标签/商品介绍, 甚至会不同属性不同权重, 还要做同义词/近义词/黑名单, 这些ElasticSearch的专长.

这种静态事务性不强的 直接上mongo

宣传栏