Skip to content

系统架构会不会因为数据量大就越用越慢? ​

架构层面的事实是这些:

  • 按租户隔离:SAAS 端的业务表通过路由按客户分配到各自的租户数据库,不是所有客户挤在一张表里;单据模型直接映射到 SQL Server 的业务表。
  • 列表统一分页:后台列表页使用统一的分页组件,不一次性把全表拉到前端。
  • 重逻辑下推数据库:记账、BOM 多层展开、成本结转等由存储过程执行,例如多级 BOM 展开、结转记账都有独立的存储过程。
  • 门店端本地缓存:收银端把基础资料放本机缓存,断网时照常点单,网络恢复后补传单据。
  • 大数据自动分离:安仕达特有的大数据自动分离技术,每天自动补传最新数据到历史数据库,再把古早的营业数据从运行库分离出去,运行库长期保持轻量;查询历史大数据也不会影响当前业务的操作。

至于「快不快」,这取决于账套数据量、服务器规格和网络环境,不做笼统比较。签约前建议用客户自己的数据量在测试账套上实测,我们配合压测。

这样设计的好处 ​

  • 别人的数据量不拖累你:租户分库以后,相邻客户的单据多少、索引大小与你的库无关,不会出现公共表时代「邻居家跑月结把你卡住」的情况。
  • 重计算不走网络:BOM 展开、结转这类多表逻辑在数据库内执行,只把结果传回前端,避免了把几万行明细拉到应用层再算的传输与内存开销。
  • 列表页不会越来越重:统一分页意味着第 1000 天和第 1 天打开同一个界面的代价基本一样,慢通常出在查询范围,不在页面本身。
  • 门店不依赖线路活着:基础资料在本机缓存,网络抖一下不会让收银台停摆,这对客流高峰的门店是硬要求。
  • 历史查询不拖累当下:运行库只留近期业务,历史大数据分离到历史数据库,年限再久日常开单与收银也保持高效。

怎么验证而不是听结论 ​

拿客户近 6~12 个月的真实数据量在测试账套跑一遍:最大单店的日结、跨年度的销售流水查询、月结成本结转三个动作各计时一次。这三项覆盖了日常最重的负载,比抽象谈并发数更有意义。

在哪做 ​

环节参考文档
收银端本地缓存与脱机脱机收银与网络异常
月结与成本结转期末处理
多级 BOM 展开配方查看