作为后端开发如何设计数据库系列文章(三)设计SaaS系统表结构

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文来自读者投稿,作者:陈浩翔

在公司做了一年的SaaS内核系统,但是有些东西不知道能不能透露出来。我尽量在不透露一些敏感东西的情况下(这个度我无法把控,只能是笼统了),将某些关于数据库方面的精髓传递出来。如果表达不畅,请谅解。

前面的两篇讲解了在传统系统和大数据量下的数据库设计应该注意的事项。

接下来需要换一种思路,在SaaS系统中,数据库应该如何进行设计。

与传统开发的思考点不同,在SaaS中,可能更多考虑的是数据隔离(在这里考虑共享数据库,共享数据表),数据通用方面

租户id

既然是SaaS平台,那么肯定是多租户的一个生态。那么在数据库层面,一定要有一个字段来隔离数据。

这个字段在每个表都需要有,且每一次数据库的操作都需要有该字段作为条件。

这一步数据安全的控制都放在了代码中,所以安全性和隔离性都是要依赖编码的。

表的自增id

这个字段还是要有的,但是强烈建议不要在删除行数据,查询数据,修改数据时使用到该字段,因为该字段的单独操作会破坏掉数据的隔离性。也就是前面所说的,所有的sql操作,都要带上租户id再进行。

数据来源标识

作为SaaS平台,在很多情况下,不同的租户可能有一样的数据,或者是通过某些编程,或者是通过配置的方式,通过一套标准数据生成了各个租户的数据。可以实现租户的自定义。

但是在某些情况下,可能某个特性不需要租户进行自定义,而是SaaS系统进行一个控制,那么就需要一个标识,来知道这个数据来源一致。

需要确定的是,这个标识,在这个租户下是唯一的。也就是说,前面的自增id没有用,但是这个标识和租户的id是可以唯一索引到一条数据的。

强烈建议使用租户id和数据的来源标识进行操作数据。

元数据

元数据用一句话就是描述数据的数据

在SaaS中,存在着一些通用配置,通过这些通用配置,可以自由定义一些业务模型,可以极其快速的实现业务需求。

这个元数据,我正在公司负责这块,但是可能不能透露。

简单的说几句,元数据能用非关系型数据库就不要用关系型数据库。前期量级小的时候问题,后面访问量,压力很大。

其次,通用的一些业务模型,一定要抽取出来。元数据对业务来说是极其基础的存在的,业务不应该感知到元数据的存在。业务感知的应该是元数据的一些业务组合,也就是业务模型。

通过组装业务模型,可以配合不同的业务场景,最后实现业务功能。

租户数据

租户的数据,是基于一些元数据来生成的,所以是可扩展的。在这里,也建议不要使用关系型数据库,因为不太适合,非关系型数据库更加适合SaaS系统这个体系。

其实东西很多,但是暂时先讲到这了,我也不知道某些东西是不是属于公司的,前些日子我们公司刚爆出了员工透露公司机密到网上,所以。。。

最后讲下吧,如果要做SaaS系统,一定要考虑长远,不要先被业务拖累。如果在半年一年内无法脱离业务需求来架构设计与开发SaaS系统,那么我的建议是,不要做什么SaaS了,开发业务吧,不然公司都活不下去的。

整篇看上去会比较理论,但是实际上,这些都是实践后的一些理论点。有很多的一些东西,我无法分享太多,非常抱歉。这次也是借这个阿里云活动的机会,分享一点出来。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
19 2
|
9天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
16 0
|
14天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
17天前
|
安全 网络安全 数据库
数据安全之认识数据库漏洞扫描系统
数据库漏洞扫描系统是一种专业的数据库安全产品,它基于对数据库访问控制、数据库审计、资源管理、数据库加密以及数据库系统本身安全机制的深入分析,深入研究和发现数据库系统本身存在的BUG以及数据库管理、使用中存在的问题。
33 4
|
23天前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
19天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新范式
在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业技术战略的关键组成部分。本文深入探讨了微服务的核心概念,包括其设计原则、技术栈选择以及与容器化和编排技术的融合。通过实际案例分析,展示了如何利用微服务架构提升系统性能,实现快速迭代部署,并通过服务的解耦来提高整体系统的可靠性。
|
23天前
|
机器学习/深度学习 人工智能 搜索推荐
未来人工智能在后端开发中的应用前景
随着人工智能技术的不断发展,后端开发领域也迎来了新的机遇与挑战。本文探讨了人工智能在后端开发中的应用前景,分析了其对传统开发模式的影响和未来发展趋势。
|
3天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。
|
5天前
|
小程序 前端开发 JavaScript
小程序全栈开发:前端与后端的完美结合
【4月更文挑战第12天】本文介绍了小程序全栈开发,涵盖前端和后端的关键点。前端使用WXML和WXSS进行页面结构和样式设计,JavaScript处理逻辑及组件使用;后端采用Node.js等语言处理业务逻辑、数据库设计和API接口开发。前端与后端通过数据交互实现结合,采用前后端分离模式,支持跨平台运行。调试测试后,提交微信审核并上线运营。掌握前端后端结合是小程序成功的关键。
|
23天前
|
SQL 存储 安全
【软件设计师备考 专题 】数据库管理系统的功能和特征
【软件设计师备考 专题 】数据库管理系统的功能和特征
72 0