我们使用 Postgres 构建多租户 SaaS 服务时踩的坑

Postgres 多租户的设计 从删除效率来讲,差别也非常大,删除 SCHEMA 与创建 SCHEMA 一样,会产生大量的 REDO,甚至会导致 STANDBY 剧烈的延迟,后面会有分析。1. schema 和 database 在物理结构上的差别:database是以目录的形式组织在表空间的目录下的,而schema是以文件的形式在数据库的目录下的,没有再细分独立的目录。从认证层面就开始隔离了,数据库与数据库之间也无法直接访问,必须要登陆到对方的数据库中才能访问对方的数据(即使使用 fdw,,dblink 也是有登陆的过程的)。 阅读详情

原文 Our Multi-tenancy Journey with Postgres Schemas and Apartment。这篇和之前发出的「如何使用 Postgres 对一个多租户应用分片」相呼应。

file

多租户 (Multip-tenancy) 是当下的热门话题。我对多租户应用程序的定义是一个能够服务于多个客户的软件系统,每个客户都能在该系统中拥有自己数据的独立视图。每个客户及其数据通常被称为一个租户,因此而有了多租户之名。

在早先关于分片多租户应用程序的博客文章中,Craig 深入探讨了任何需要支持多个客户账户的系统中自然发生的租户类型(或在他的例子中,是一家店)。在他的例子中,属于特定租户的所有记录都会获得一个外键 tenant_id,这个键逻辑上将其他表中的行与该租户关联起来。隔离发生在查询级别,比如所有产品(例如)都会使用 tenant_id 来限定范围,针对你感兴趣的特定商店。

当我加入 Influitive 时,他们已经采用了多租户路线,但是使用了PostgreSQL schema 来隔离。这使用了一种略有不同的多租户机制,其中表不再存储对其租户的引用。相反,当我们添加一个新租户时,我们会创建一个新的 Postgres schema,并在该 schema 内创建(复制)所有存储客户数据的表。为一个租户进行的查询设置了 schema search_path,以便所有为该请求获取的数据现在都隐式地限定在该租户范围内。

PostgreSQL 里怎样解决多租户数据隔离的性能问题? 在 PostgreSQL 中,处理多租户数据隔离时可能会遇到一些性能挑战。在本节中,我们将详细探讨这些问题,并提供相应的解决方案以及示例代码。 阅读详情

相关推荐

Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)

Python/Django 支持分布式多租户数据库,如 Postgres+Citus。 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库节点。 构建多租户数据库的架构包括:为每个租户创建一个数据库、为每个租户创建一个 schema 和让所有租户共享同一个表。这个库基于第三种设计,即让所有租户共享同一个表,它假设所有租户相关的模型/...

o__cc的博客 1068

SaaS 多租户架构 3 种数据隔离方案对比:独立库、Schema、字段隔离的选型指南

本文深入对比了SaaS多租户架构中的三种数据隔离方案:独立数据库、Schema隔离和字段隔离,分析了各自的优缺点及适用场景。针对不同规模的租户需求和行业特性,提供了详细的选型指南和成本效益分析,帮助企业在资源利用率与隔离安全性之间找到最佳平衡点。

weixin_34067102的博客 392

SaaS核心架构实战:BFF、Schema隔离与自建Auth/Billing设计

SaaS(软件即服务)作为一种多租户、按需交付的云原生应用范式,其架构本质区别于传统单体系统——关键在于租户隔离、弹性计费与身份治理的深度耦合。原理上,必须通过数据库Schema级隔离保障数据安全边界,借助BFF(Backend for Frontend)层实现租户策略动态注入,而非简单API聚合;技术价值体现在故障域收敛、合规可控与商业灵活性,支撑企业客户对AD集成、自定义计费模型、品牌化登录等高阶需求。典型应用场景包括CRM、供应链协同、在线教育等垂直SaaS平台的从0到1落地与规模化演进。本文聚焦真实

493

从零构建多租户AI原生软件工厂:架构设计与容器化实践

多租户架构是一种软件设计模式,允许单个应用实例为多个独立用户组(租户)提供服务,同时确保数据、配置和资源的严格隔离。其核心原理在于通过逻辑或物理层面的隔离机制,实现资源的高效共享与安全管控。这种架构的技术价值在于能显著降低运维成本、提升资源利用率,并简化系统的统一升级与维护。在SaaS平台、企业级开发平台和云服务等场景中,多租户设计是支撑规模化服务的基础。结合AI原生理念,即将AI能力深度融入工作流而非简单附加,可以构建出智能化的软件交付平台。本文以**容器化**技术和**FastAPI**框架为例,详细阐

weixin_33875564的博客 461

出海SaaS从0到1:用AI视觉模板月入1000美元的独立开发实战

在独立开发与SaaS创业不断升温的当下,如何用轻量技术栈快速验证一个垂直场景并实现付费转化,是许多技术人关心的问题。订阅制产品(如SaaS)的核心在于找到高频需求、设计可复用的模板化方案,并将AI能力封装成用户无需学习提示词即可使用的工具。本文从技术选型、开源SaaS模板加速开发、数据库设计到Stripe订阅收费与成本控制,系统拆解了一个AI视觉素材生成器的全流程搭建经验。针对YouTube缩略图、电商主图等明确场景,利用模板系统与异步任务处理,结合多租户数据隔离思维,实现了从免费额度到付费套餐的商业闭环。

weixin_34208185的博客 795

Dify多租户架构解析:构建安全隔离的AI应用开发平台

多租户(Multi-Tenancy)是SaaS平台的核心架构模式,旨在通过一套系统为多个客户(租户)提供独立且安全的应用服务。其实现原理主要基于数据隔离、资源隔离和统一的身份认证与授权体系,通过在数据访问层强制添加租户标识(如tenant_id或workspace_id)来实现逻辑隔离。这一架构的技术价值在于显著降低了运维成本与资源开销,同时保证了不同租户间的数据安全与隐私合规。在AI应用开发领域,多租户架构尤为重要,因为AI应用常涉及敏感的私有数据、定制化的工作流以及专属的知识库。以Dify为例,它通过工

weixin_33709609的博客 471

Kong网关在K8s里到底怎么选?Postgres模式 vs DB-less模式实战对比

本文深入解析Kong网关在Kubernetes环境中的两种部署模式:Postgres数据库模式与DB-less无数据库模式。通过技术架构对比、生产环境指标分析和典型场景选型建议,帮助开发者根据业务需求选择最适合的部署方案,优化系统性能和运维效率。

weixin_33737774的博客 421

基于pytest的企业级多租户自动化测试实践

多租户架构作为SaaS服务的核心技术方案,通过数据隔离与资源共享实现高效服务交付。其测试验证需要特殊设计,重点解决租户隔离、并发控制等核心问题。pytest测试框架凭借灵活的fixture机制和丰富插件生态,成为构建多租户测试体系的理想选择。通过设计租户感知的测试夹具、组织跨租户隔离验证用例,结合PostgreSQL行级安全(RLS)等数据库特性,可有效验证数据隔离策略。在金融科技等高性能场景中,采用pytest-xdist实现分布式测试,配合线程模拟和重试机制,能可靠验证支付系统等关键业务的并发处理能力。

weixin_30256901的博客 354

ASP.NET Core + SaasKit + PostgreSQL + Citus 的多租户应用程序架构示例

在 确定分布策略 中, 我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改。 当前部分研究如何构建与 Citus 存储后端一起使用的多租户 ASP.NET 应用程序。 http://citus.hacker-linner.com/develop/migration_mt_schema.html#mt-schema-migration 示例应用 为了使这个迁移部分具体化,...

o__cc的博客 656

从零搭建一个多租户SaaS后台:Keycloak Realm与Client配置实战详解

本文详细介绍了如何利用Keycloak构建多租户SaaS系统的核心认证授权层,涵盖Realm规划、Client配置和权限策略设计。通过实战案例和代码示例,帮助开发者实现租户隔离与细粒度权限控制,提升系统安全性和可扩展性。特别适合需要处理多租户登录和权限验证的企业级应用场景。

weixin_27875131的博客 305

Dify本地化部署全工具包:免配置三平台实战与踩坑记录

大语言模型应用开发平台正成为企业构建内部AI能力的核心基础设施,而私有化部署则解决了数据合规与敏感信息外泄的痛点。Docker Compose作为容器编排的行业标准,简化了多服务组件的统一调度,使得复杂系统的本地化运行成为可能。通过将Dify的Web服务、API服务、向量数据库、元数据库等容器化组件整合,团队可以在内网环境快速构建起一个完全可控的AI应用底座。从Windows、macOS到Linux,借助Docker Desktop或原生引擎,配合环境变量配置与端口规划,即可实现开箱即用的部署体验。本文围绕

weixin_32715349的博客 322

FastAPI LLM SaaS基础模板:认证与文件上传安全实践

在构建面向生产环境的LLM SaaS应用时,认证(Auth)与文件上传(File Upload)并非附加功能,而是决定系统可扩展性、安全性与合规性的底层基础设施。其核心原理基于OAuth2密码流与JWT无状态鉴权机制,结合后端代理式文件校验与多租户隔离设计,技术价值体现在规避会话瓶颈、防止路径遍历、阻断恶意元数据、满足GDPR/等保等合规要求。典型应用场景包括文档智能分析、法律合同比对、教育课件问答等需处理用户PDF/图片/文本的AI服务。本文聚焦FastAPI实现的高安全、可审计、易扩展的Auth与Upl

weixin_30781433的博客 493

分布式 PostgreSQL 集群示例:构建多租户应用程序

我们可以使用相应的源代码示例来设置新的数据库和获取数据库连接,以实现租户之间的隔离和安全性。当一个新的租户注册时,我们可以调用设置数据库的函数来创建一个新的数据库,并为该租户生成一个唯一的租户标识符。然后,我们可以使用该标识符来获取该租户的数据库连接,并在该连接上执行相应的数据库操作。上述代码连接到主数据库,并创建一个新的数据库,以及在新数据库中创建一个名为 “users” 的表。我们将使用一个简单的示例来说明这个过程。一旦我们有了多个租户的数据库,我们就可以根据请求的租户标识符路由到相应的数据库。

XwlyVue的博客 266

分布式 PostgreSQL 集群示例 - 多租户应用程序

在这个示例中,我们创建了一个名为"tenants"的表,然后向该表中插入了三个租户。如果你有任何问题,请随时提问!通过使用分布式 PostgreSQL 集群,我们可以将数据分布在多个节点上,从而实现更好的性能和可伸缩性。每个租户的数据将被隔离存储,确保数据的安全性和隐私。为了实现这样的多租户应用程序,我们将使用 PostgreSQL 数据库的分布式架构。在本文中,我们将探讨如何构建一个分布式 PostgreSQL 集群,并将其应用于一个多租户应用程序。每个租户的数据应该是隔离的,以确保数据的安全性和隐私。

XwlyVue的博客 405

利用PostgreSQL数据库实现多租户架构

多租户架构是现代SaaS(软件即服务)应用的核心需求之一,它允许多个客户(租户)共享相同的应用程序实例,同时保持各自数据的隔离性和安全性。PostgreSQL作为一款功能强大的开源关系型数据库,提供了多种实现多租户架构的方法。本文旨在全面介绍这些方法,帮助开发者根据具体业务需求选择最合适的实现方案。首先介绍多租户架构的基本概念和PostgreSQL的相关特性然后详细分析三种主要的实现方法及其优缺点接着通过实际代码示例展示具体实现最后讨论性能优化和实际应用中的注意事项。

2502_91592937的博客 1067

第25集:AIOps 平台 SaaS 化!多租户隔离、API 网关、用量计费实战

本文介绍了如何将AIOps平台改造为SaaS化产品,重点解决三大核心问题: 多租户数据隔离方案:采用独立数据库隔离不同客户数据,通过租户管理器动态路由数据库连接,确保物理级别的数据隔离安全。 API网关实现:使用Kong网关配置路由规则,集成JWT认证和限流功能,防止API滥用并保护后端服务。 计费系统设计:基于API调用次数构建用量统计和计费引擎,支持灵活的计费策略。 文章通过具体代码示例展示了租户数据库管理器的实现、FastAPI中的租户注入机制,以及Kong网关的配置方法。这套方案不仅解决了SaaS化

qq_2937655951的博客 51

多租户:Spring Boot + Hibernate + Postgresql的多租户实现Demo

多租户 多租户(Multi Tenancy / Tenant)是一种软件架构,其定义是:在一台服务器上运行分区应用实例,它为多个租户提供服务。 概念是抽象的,但是理解起来并不困难,简单来说就是分组,举个例子:我们管理学校学生的时候,可以按照不同的范围来进行分组,例如我们可以按照学生个人为单位进行分组,也可以按照班级为单位进行分组,然后班级下面有很多的学生,也可以按照年级为单位进行分组,以学校为单位……这样的每一个分组的单位,都可以是我们概念里面说的一个租户。但是这样不就和我们以前说的按照面向对象来分类是一样的吗?其实是差不多的,但是存在一些细节上的互换,首先多租户架构的概念是针对数据存储的,我们是一个数据服务提供商,假设我们给所有的学校提供​​服务,对于我们来说,分组是按照学校为单位的,而且学校与学校之间互相没有任何关系,也就说学校与学校之间是隔离的,对于不同学校的数据我们需要将其隔离开来。这种数据的分组就是多租户架构要研究的问题。当然这只是概念上的区别,在实际使用上和我们传统的分组没有太大差异。 多租户的三种模式 多租户的架构分为以下三种: 独立数据库 共享数据库,独立架构 共享数据

OpenClaw Docker 安装问题解决全记录

控制面板无法加载(WebSocket 错误) | 确认 Nginx 配置中的 `Upgrade` 和 `Connection` 头正确 || 网关容器无法启动 | `docker compose logs openclaw-gateway`,检查权限、镜像名 |如需消除,使用 Let's Encrypt |- `<your-token>`:你的 OpenClaw 网关令牌(如 `b0e5ab...`)将 `<nas-ip>` 替换为你的群晖内网 IP(例如 `192.168.1.100`)。

u014490376的博客 2309

手写数字数据集MNIST

文章目录一、 简介二、下载MNIST数据集训练集和测试集的长度输出图像数据和标记数据的形状显示手写数字图片输出数据集中的第1个样本显示图片 一、 简介 MNIST是一个非常有名的手写体数字识别数据集(手写数字灰度图像数据集),在很多资料中,这个数据集都会被用作深度学习的入门样例。 MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。由250个不同的人手写而成。 每一张图

qq_37289115的博客 1万+

避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题

本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。

weixin_42549496的博客 289

代码实现ROS2bag录制数据和回放数据(C++)

ROS2的ROS2bag功能可以将指定Topic中的数据以.db3的格式(不同于ROS)保存到本地文件中。读取文件数据可以实现数据回放。

m0_57124501的博客 3257

河洛理数【陈抟】每月月卦推演每日运卦

Step2:每卦中的日爻遇到二十四节气中的当日为节(月初)或气(月中)的时候,所代表的日期需要变更。正常来说,屯卦分别代表初一到初六,但是由于当月初二时立秋节,所以初爻就不能作为初一、而是要作为立秋节开始时(文中还精算到了立秋是从初二的午时开始),如下。说的代表月运的基础卦上进行当月日卦的推演方式。老样子,我们还是按照书中举得例子卦在这边进行一步步的推演,最后做总结。Step1:从月卦爻下一爻开始,自下而上,进行五个爻的爻变,新推演的每个卦代表六天,如下。假设当月月卦是即济卦,月爻在二爻,如图所示(

Daniel专栏 764

3、结合物理学与深度学习的连续时间动力学模型

本文探讨了如何结合物理学原理与深度学习技术,构建连续时间动力学模型,以提升机器人系统对复杂动态环境的建模与控制能力。重点介绍了深度拉格朗日网络(DeLaN)和深度哈密顿神经网络(HNN)的理论基础及其在模拟与物理系统中的实验表现,并展示了其在逆向模型、前向模型以及能量控制任务上的优越性能。文章还分析了当前方法的局限性,并提出了未来研究方向,如接触处理、广义坐标学习及优化损失函数等。

linux的博客 910

python抓取美团外卖的数据(商家、评分、评论)

本文详细介绍了如何使用Selenium和抓取美团外卖的商家、评分和评论数据。我们从基础的爬虫原理入手,分析了美团外卖的网页结构,提出了应对反爬虫机制的策略,并给出了详细的代码实现。通过使用Selenium,我们能够绕过动态加载内容的限制,直接抓取网页中的商家信息和评论。结合多线程和代理池等技术,我们可以进一步提高爬虫效率,并避免IP被封禁。未来,随着爬虫技术的发展,我们可以进一步探索深度抓取、数据清洗和数据分析等高级应用,以实现更智能的网页数据抓取。

2201_76125261的博客 2702

yolov5运行detect.py之后卡住了?没后续,没结果,没报错,怎么办?如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1105

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Bytebase 2.14.1 - 分支 (Branching) 功能支持 Oracle
下一篇: Bytebase 签约 PropertyGuru,助力东南亚最大地产科技平台跨国多地数据库变更自动化
Bytebase
博客等级 码龄5年 1348粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值