💡
原文英文,约3700词,阅读约需14分钟。
📝
内容提要
Citus 12.0为PostgreSQL引入了一项名为基于模式的分片的新功能。该功能通过为每个租户创建单独的模式来将数据分布在集群中。每个模式中的表存储在同一节点上,提高了跨表操作的性能。基于模式的分片简化了多租户应用程序的数据库管理,并提供了高效的资源分配。它还支持多租户与非同质模式和微服务等用例。然而,基于模式的分片存在一些权衡,对于具有大量租户的应用程序,基于行的分片可能更合适。总体而言,基于模式的分片为分布式数据库提供了灵活性和可扩展性。
🎯
关键要点
- Citus 12.0引入了基于模式的分片功能,简化了多租户应用程序的数据库管理。
- 基于模式的分片通过为每个租户创建单独的模式来分布数据,确保同一租户的所有表存储在同一节点上。
- 该功能提高了跨表操作的性能,支持多租户与非同质模式和微服务等用例。
- 基于模式的分片存在权衡,对于大量租户的应用程序,基于行的分片可能更合适。
- Citus 12.0提供了citus.enable_schema_based_sharding设置,允许基于模式进行分片。
- 创建分布式模式时,无需调用create_distributed_table()函数,简化了操作。
- 使用citus_schemas和citus_shards视图可以查看分布式模式的总大小和存储位置。
- 跨表操作应仅针对单一模式,或使用Citus引用表。
- PgBouncer支持在事务池模式下使用session参数,确保search_path设置正常工作。
- schema-based sharding与citus_stat_tenants结合使用,可以收集租户统计信息。
- Citus的分片重平衡器可以帮助重新平衡租户模式,确保公平分配。
- 可以使用citus_schema_distribute()函数将现有模式启用为基于模式的分片。
- django-tenants与Citus的结合使得多租户应用程序的管理更加高效。
- 基于模式的分片提供了易用性、资源分配效率和可扩展性,但在大量租户时可能面临挑战。
- 可以同时使用基于行的分片和基于模式的分片,具体取决于应用需求。
🏷️
标签
➡️