电子商务网站多语言版设计思路
1. 数据库设计
1. 分库,还是分表
2. 单表还是多表
这步其实很关键:首先 这直接涉及到代码逻辑,一有不慎,可能会导致原有方案失效
说说我们的设计思路吧!
我们采用的是分库方式!
一种语言一个数据库
这样的好处有哪些呢?
1.避免单库数据量过大,导致查询难以优化。
举个例子:假设有2种语言,中文和英文。在商品表中,一个商品在不同语言下,其实还是同一件商品,他们有共同的属性,共同的价格,共同的库存等等;如果放在一个库中那么本来商品数据有100W,现在直接变成了200W。so优化起来是不是更麻烦了呢。而且对于像商品这种表,更新操作是非常频繁的,这样就要不断的去维护索引,这其中开销也是蛮大的。
- 为什么不用分表?
假如一种语言一个表,那跟分库道理不就一样了吗?
其实我个人觉得分表有很多不足的地方。
- 如果采用一个语言一张表,那么我们表的数据过大怎么办呢?这时候是不是还要继续分表呢?就目前的状况来看,很多公司都会采用分表去解决。也就是说要分2次表,这样不是很麻烦吗,而且表在同一个数据库中,数据量变大的时候怎么办呢,当达到Mysql储存上限(这里指的是mysql存储到一定数据时候就变得难以优化的情况)不就更麻烦吗?
所以我们采用了分库策略。
表如何设计
需要中英文对于的表,放到对于的库中即可,无需把所有的表都copy
举个例子
商品表:
id title stock status
假设我们的商品字段如上
这个时候我们添加商品的时候肯定是要往数据库(多个语言)里面添加数据。也就是说我添加了一个中文语言的商品,对应的英文数据库也应该插入同样的数据。然后再去编辑英文的商