当前位置: 首页 > news >正文

django-tenants:基于PostgreSQL模式的终极多租户解决方案

django-tenants基于PostgreSQL模式的终极多租户解决方案【免费下载链接】django-tenantsDjango tenants using PostgreSQL Schemas项目地址: https://gitcode.com/gh_mirrors/dj/django-tenantsdjango-tenants是一款强大的开源工具它使Django驱动的网站能够通过PostgreSQL模式实现多租户功能是每个软件即服务SaaS网站的关键特性。借助django-tenants您可以在同一项目实例中支持多个客户实现共享数据与租户特定数据的分离并支持租户视图路由。什么是PostgreSQL模式PostgreSQL模式可以看作是操作系统中的目录每个目录模式都有自己的文件集表和对象。这允许在不同模式中使用相同的表名和对象而不会产生冲突。对于模式的准确描述请参阅PostgreSQL官方文档。为什么选择模式实现多租户实现多租户通常有三种解决方案隔离方法独立数据库。每个租户拥有自己的数据库。半隔离方法共享数据库独立模式。所有租户使用一个数据库但每个租户拥有一个模式。共享方法共享数据库共享模式。所有租户共享同一个数据库和模式有一个主租户表其他表都有指向该表的外键。django-tenants采用第二种方法在我们看来这是在简单性和性能之间的理想折衷。简单性几乎不需要更改现有代码即可支持多租户而且只需管理一个数据库。性能利用共享连接、缓冲区和内存。django-tenants的工作原理租户通过其主机名即tenant.domain.com进行识别。此信息存储在public模式的表中。每当有请求时主机名将用于在数据库中匹配租户。如果找到匹配项搜索路径将更新为使用该租户的模式。从现在开始所有查询都将在租户的模式下进行。例如假设您有一个租户customer位于http://customer.example.com。任何传入customer.example.com的请求都将自动使用customer的模式并使租户在请求中可用。如果未找到租户则会引发404错误。这也意味着您应该为主域设置一个租户通常使用public模式。django-tenants的核心功能无限租户支持 每个租户的数据都存储在特定的模式中。使用单个项目实例即可为任意数量的租户提供服务。租户特定和共享应用租户特定应用数据不在租户之间共享。共享应用信息始终可用并在所有租户之间共享。租户视图路由您可以为http://customer.example.com/和http://example.com/设置不同的视图即使Django仅使用主机名后的字符串来识别要提供的视图。便捷的命令行工具django-tenants提供了一系列管理命令帮助您轻松管理租户和模式例如create_tenant创建新租户migrate_schemas为租户迁移数据库模式tenant_command在特定租户上下文中运行命令这些命令位于django_tenants/management/commands/目录下。快速开始使用django-tenants环境要求Django 2如果需要使用Django 1.11或更低版本请使用django-tenants的1.x版本PostgreSQL安装步骤克隆仓库git clone https://gitcode.com/gh_mirrors/dj/django-tenants修改数据库引擎将DATABASE_ENGINE设置更改为DATABASES { default: { ENGINE: django_tenants.postgresql_backend, # 其他配置... } }添加中间件将django_tenants.middleware.main.TenantMainMiddleware添加到MIDDLEWARE的顶部MIDDLEWARE ( django_tenants.middleware.main.TenantMainMiddleware, # 其他中间件... )配置数据库路由器将django_tenants.routers.TenantSyncRouter添加到DATABASE_ROUTERS设置DATABASE_ROUTERS ( django_tenants.routers.TenantSyncRouter, )添加到INSTALLED_APPS将django_tenants添加到INSTALLED_APPS。创建租户模型from django.db import models from django_tenants.models import TenantMixin, DomainMixin class Client(TenantMixin): name models.CharField(max_length100) paid_until models.DateField() on_trial models.BooleanField() created_on models.DateField(auto_now_addTrue) class Domain(DomainMixin): pass运行迁移python manage.py migrate_schemas --shared创建租户from customers.models import Client, Domain # 创建公共租户 tenant Client(schema_nametenant1, nameMy First Tenant, paid_until2014-12-05, on_trialTrue) tenant.save() # 为租户添加一个或多个域 domain Domain() domain.domain tenant.my-domain.com domain.tenant tenant domain.is_primary True domain.save()示例项目django-tenants附带了示例项目您可以在examples/目录中找到它们。这些示例展示了不同场景下的多租户实现包括租户子文件夹教程和多租户类型示例。完整文档本文只是一个简短的设置指南。强烈建议您阅读完整的文档以充分利用django-tenants的强大功能。完整文档可以在项目的docs/目录中找到。总结django-tenants为Django应用提供了一种简单而强大的多租户解决方案利用PostgreSQL的模式功能实现数据隔离。它易于设置几乎不需要更改现有代码同时提供了出色的性能和灵活性。无论您是构建新的SaaS应用还是将现有应用迁移到多租户架构django-tenants都是一个值得考虑的选择。通过使用django-tenants您可以专注于构建出色的应用功能而不必担心多租户数据隔离的复杂性。立即尝试体验这个终极多租户解决方案带来的便利【免费下载链接】django-tenantsDjango tenants using PostgreSQL Schemas项目地址: https://gitcode.com/gh_mirrors/dj/django-tenants创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
http://www.zskr.cn/news/1336238.html

相关文章:

  • SpringBoot内置插件的使用(jackson和lombok)
  • 免费开源的专业网络调试助手:mNetAssist完整使用指南
  • GTA5终极防护与增强指南:YimMenu完整使用教程
  • YetiForceCRM高级定制技巧:10个方法让CRM完全适配你的业务
  • 2026年屋面装饰欧式发泡陶瓷构件/发泡陶瓷窗套线条源头工厂推荐 - 行业平台推荐
  • Prodigal基因预测工具:3天快速掌握原核生物基因发现终极指南
  • CANN/asc-devkit动态编译静态标志
  • Python Tkinter + 多线程:手把手教你做个不卡顿的TXT文本去重小工具(附完整源码)
  • Redis分布式锁进阶第五十二篇
  • Zabbix监控华为防火墙丢包?可能是你的SNMP v2c配置没做对(附Python巡检脚本)
  • 颠覆性AI 3D建模:Zoo Text-to-CAD技术将设计效率提升10倍
  • 别再死记硬背了!用一张图帮你彻底搞懂FC协议栈(从FC-0到FC-4)
  • Pitest与JUnit完美整合:提升测试质量的完整指南 [特殊字符]
  • CANN/asc-devkit float2到half2向上取整转换函数
  • CANN/asc-devkit Tiling模板参数选择宏
  • 《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》006、环境搭建:PyTorch 2.0+、CUDA 12.x与DEIM代码库配置
  • 蘑菇博客MoguBlog:微服务架构的前后端分离博客系统完整指南 [特殊字符]
  • GGCNN机器人抓取预测:从零开始掌握实时抓取合成技术
  • 天文科研提速关键突破:Perplexity多模态搜索如何秒级定位哈勃原始FITS文件(含ASTROQUERY兼容配置)
  • python海龟绘图之对话框
  • UE5运行时动态调整游戏视口:解决UI遮挡导致物体位置偏移的实战方案
  • 掌握gibMacOS:三步实现高效获取macOS安装文件的完整方案
  • 智能农历计算引擎:5种实战场景深度解析LunarCalendar集成方案
  • 掌握WiX Toolset:从零打造专业级Windows安装包的完整指南
  • 别再手动敲命令了!用这个Shell脚本5分钟搞定Kerberos集群部署(附避坑指南)
  • 3步解锁iOS应用自由:AltStore免越狱安装终极指南
  • 如何快速上手highcharts-ng:10分钟创建动态图表
  • 火绒弹窗总提示msedgewebview2联网?别慌,这是Office在线编辑在“敲门”
  • 实战指南:利用Rufus创建Windows 11安装U盘并绕过硬件限制的完整方案
  • 2026年靠谱的大连电梯特种柔性电缆/起重设备特种柔性电缆精选推荐公司 - 品牌宣传支持者