SaaS互联网系统数据库设计容易踩的坑

本文探讨SaaS系统数据库设计中常见的两个误区:未在各表加入company_id导致数据管理和性能优化困难,以及垂直分表原则不合理影响查询效率。文章提出解决方案,强调逻辑分离、安全性提升、索引优化及合理垂直分表的重要性。

这几年,各行各业的SaaS互联网系统应用比较广泛。2B应用的SaaS系统,基本上有如下特点:

  • 用户数不一定多,并发性不高(相比于C端产品)
  • 数据量可能会大
  • 个性业务需求多,配置灵活

在数据库(Mysql)设计之初,有2个坑比较容易踩到,将会给整个系统带来麻烦,尤其后期的扩展和优化方面。

1.各个表没有加company_id

各个表很有必要进行反范式设计,都统一加上company_id,如:在电商订单处理ERP系统中,给订单商品表也加上company_id

子表反范式加入company_id

所有表加上company_id的好处:

  • 所有数据都通过company_id进行逻辑分离,相对独立
  • 安全性提升:访问任何数据,都可以通过严格匹配访问者company_id和访问数据的company_id,使得任何人再怎么瞎搞,也基本只能搞乱本公司的数据,很难去访问到其它公司的数据
  • 索引:自己建的所有二级索引,第一左侧索引都可以为company_id,再怎么差的情况,也不会进行全表扫描,性能下限高
  • 后期提升性能:可以按company_id进行分区,这样本公司的数据写在一起,每个page里面的数据都是本公司的,从磁盘加载数据的命中率更高,能大大减少磁盘io

2.垂直分表原则不合理

2B端的S

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值