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

这几年,各行各业的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端的SaaS系统由于业务复杂,各类个性化需求高,这样各个对象的属性可能就会更多(比如: 订单主对象可能包括卖方信息、买方信息、收货人信息、金融信息、发票信息、支付信息、快递信息、拣货信息等等),所有的业务属性都放在一张大表,也存在相应问题:

  • 字段多,不好维护
  • 单行数据量大,给性能较大造成影响

比较常见的一种垂直分表方法: 按业务类别分,比如: 订单主对象, 把金融信息、支付信息、收货人信息分出去,建成1对1字表。这样做优点是开发员好理解,缺点是查询时又得INNER JOIN回来,这样其实也就失去了垂直分表的最大意义(性能)。

从性能考虑(否则,后期很难优化),设计时垂直分表原则应该是:会作为查询条件的尽可能放在主表。哪怕重要信息但不作为查询条件的都可以放子表,更不用说数据量大的属性和不经常访问到的属性了。

在整个系统中,尽量不用到JOIN操作,基于单表的增删改查操作,entity访问(架构设计中如何做到呢? 且听下回分解^_^)。

  • 1
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 1
    评论
Niushop开源商城Saas多开运营版是专业电商平台以及智能营销云平台,大大提高了企业建站效率,只需三步(Step1 账号申请--->Step2 选择套餐--->Step3 一键开店)快速帮助轻松开店,开启电商运营之路。 商城系统功能汇总: 平台端: 运营:店铺列表、用户列表、店铺套餐、短信套餐、体验开店; 订单:订单概况、订单管理; 设置:网站设置(网站设置、版权设置、网站公告、网站帮助、数据库管理)、常用工具设置(收款账户、<span> </span>支付设置、上传设置、验证码设置、消息管理、短信管理); 授权升级:系统授权、插件管理、系统升级、系统回滚、更新日志; 店铺端: 店铺装修:主页装修、分类页面、微页面、底部导航、商城风格、内容管理(店铺帮助、店铺公告); 商品:商品列表、回收站、商品分类、商品分组、商品服务、商品属性、商品评价、相册管理、售后保障; 订单:订单管理、订单发货、退款维权、订单核销、发票管理; 会员:会员概况、会员列表、会员等级、会员标签; 营销:店铺促销(砍价、团购、组合套餐、满减活动、优惠券、拼团、限时折扣、限时秒杀、满额包邮、专题活动)、会员互动(会员消费、会员充值、会员注册、会员签到); 门店:管理线下门店,对门店进行增删改查; 财务:财务概况、门店结算、会员提现; 统计:店铺统计、商品统计、交易统计、访问统计; 设置:店铺设置、会员设置、交易设置、配送设置、系统设置、微信小程序、微信公众号; 门店端: 商品管理、订单管理、收银台、结算管理、会员管理、用户管理、门店设置、主页装修; Saas部署优点: 1、建站流程:Saas部署一键建站,无需考虑服务器配置,数据库如何搭建,初始数据如何导入,只需点击下一步,一分钟完成建站。 2、后期维护:Saas系统后期维护方便快捷,基础数据配置、系统更新等工作由官方统一部署,节约人力成本。 3、服务器性能:Saas系统采用阿里云SLB服务器,多组服务器形成集群,实现负载平衡。 4、产品付费:Saas系统提供多样化套餐,企业可根据自己自身条件挑选合适套餐。 5、功能优化:官方不断收集优化建议,结合市场潮流,定期进行更新,最大力度满足客户需求。 6、数据库功能:RDS数据库实现读写分离,异步方式减缓数据库连接压力,每天自动备份数据。 7、综合评价:Niushop开源商城Saas运营版是一体化电商平台解决方案,尤其适用于初创型电商公司。无需自建服务器,节约大量 资金成本,让您无忧。  相对于Saas部署独立部署缺点: 1、建站流程:下载安装,本地搭建环境,安装系统上传至服务器,购买Niushop高级授权版及以上用户,可享受官方客服免费安装调试。 2、后期维护:Niushop定期更新系统,不断优化产品性能,独立部署版用户可选择性进行升级及维护工作。 3、服务器性能:根据自身情况,选择对应服务器类型,客服人员将免费为您提供参考意见。 4、产品付费:一次性购买Niushop商业版授权及源码,终身免费试用。 5、功能优化:官方团队提供个性化定制服务,可根据自己平台性质,开发符合自身相应功能。 6、数据库功能:传统数据库同步执行,读写混合操作,手动配置数据库优化项、备份数据库等。 7、综合评价:Niushop独立部署版适用于中、大型 电商企业。独立部署版在后期优化上具备较强灵活性,Niushop团队可为其提供二次开发,以满足企业个性化需求。 环境要求:php7.1以上 说明:商城采用Thinkphp6.0全新架构开发,系统同时包含主商城、小程序端、h5端。免费下载试用期为1个月,到期 网站将自动关闭,如需商用请联系官方进行授权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

Soft21

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值