为少
Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
为少
社区首页
>
专栏
>
Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南
Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南
为少
关注
发布于 2022-12-07 09:13:52
发布于 2022-12-07 09:13:52
6.3K
0
举报
文章被收录于专栏:
黑客下午茶
黑客下午茶
官方手册:https://docs.citusdata.com
脑图大纲
入门
什么是Citus?
Citus 可以扩展多远?
何时使用 Citus
多租户数据库
实时分析
使用注意事项
何时 Citus 不合适
快速教程
多租户应用程序
数据模型和示例数据
创建表
分发表和加载数据
运行查询
实时分析
数据模型和样本数据
创建表
分发表和加载数据
运行查询
安装
单节点 Citus
Docker (Mac 或 Linux)
Ubuntu 或 Debian
Fedora, CentOS, 或 Red Hat
多节点 Citus
Ubuntu 或 Debian
在所有节点上执行的步骤
在协调器节点上执行的步骤
Fedora, CentOS, 或 Red Hat
在所有节点上执行的步骤
在协调器节点上执行的步骤
托管部署
用例指南
多租户应用程序
让我们做一个 App - 广告分析
扩展关系数据模型
准备表和摄取数据
自己试试
集成应用程序
在租户之间共享数据
在线更改 Schema
当租户的数据不同时
扩展硬件资源
与大租户打交道
从这往哪儿走
实时面板
数据模型
汇总
过期的旧数据
近似相异计数
使用 JSONB 的非结构化数据
时间序列数据
扩展 Citus 上的时间序列数据
自动创建分区
使用列式存储归档
将行分区归档到列式存储
架构
概念
节点
协调器与工作器
分布式数据
表类型
类型 1:分布式表
类型 2:引用表
类型 3:本地表
分片
分片放置
共置
并行性
查询执行
开发
确定应用程序类型
概览
示例和特征
选择分布列
多租户应用
最佳实践
实时应用
最佳实践
时间序列数据
最佳实践
表共置
Citus 中用于 hash-distributed 表的数据共置
共置的实际示例
使用常规 PostgreSQL 表
按 ID 分布表
按租户分布表
共置意味着更好的功能支持
查询性能
迁移现有应用程序
确定分布策略
选择分布键
确定表的类型
为迁移准备源表
添加分布键
回填新创建的列
准备申请 Citus
设置 Development Citus 集群
在键中包含分布列
向查询添加分布键
Ruby on Rails
Django
ASP.NET
Java Hibernate
其他(SQL原则)
启用安全连接
检查跨节点流量
迁移生产数据
小型数据库迁移
大数据库迁移
复制 schema
启用逻辑复制
开放访问网络连接
开始复制
切换到 Citus 并停止与旧数据库的所有连接
SQL 参考
创建和修改分布式对象 (DDL)
创建和分发表
引用表
分发协调器数据
共置表
从 Citus 5.x 升级
删除表
修改表
添加/修改列
添加/删除约束
使用 NOT VALID 约束
添加/删除索引
类型和函数
手动修改
摄取、修改数据 (DML)
插入数据
“From Select” 子句(分布式汇总)
COPY 命令(批量加载)
使用汇总缓存聚合
更新和删除
最大化写入性能
查询分布式表 (SQL)
聚合函数
Count (Distinct) 聚合
估计 Top N 项
百分位数计算
限制下推
分布式表的视图
连接
共置连接
引用表连接
重新分区连接
查询处理
分布式查询规划器
分布式查询执行器
子查询/CTE Push-Pull 执行
PostgreSQL 规划器和执行器
手动查询传播
在所有 Worker 上运行
在所有分片上运行
限制
SQL 支持和解决方法
解决方法
使用 CTE 解决限制
临时表:不得已的解决方法
Citus API
Citus 效用函数
表和分片 DDL
create_distributed_table
truncate_local_data_after_distributing_table
undistribute_table
alter_distributed_table
alter_table_set_access_method
remove_local_tables_from_metadata
create_reference_table
citus_add_local_table_to_metadata
mark_tables_colocated
update_distributed_table_colocation
create_distributed_function
alter_columnar_table_set
create_time_partitions
drop_old_time_partitions
alter_old_partitions_set_access_method
元数据/配置信息
citus_add_node
citus_update_node
citus_set_node_property
citus_add_inactive_node
citus_activate_node
citus_disable_node
citus_add_secondary_node
citus_remove_node
citus_get_active_worker_nodes
citus_backend_gpid
citus_check_cluster_node_health
citus_set_coordinator_host
master_get_table_metadata
get_shard_id_for_distribution_column
column_to_column_name
citus_relation_size
citus_table_size
citus_total_relation_size
citus_stat_statements_reset
集群管理与修复函数
citus_move_shard_placement
rebalance_table_shards
get_rebalance_table_shards_plan
get_rebalance_progress
citus_add_rebalance_strategy
citus_set_default_rebalance_strategy
citus_remote_connection_stats
citus_drain_node
isolate_tenant_to_new_shard
citus_create_restore_point
Citus 表和视图
协调器元数据
分区表
分片表
分片信息视图
分片放置表
工作器节点表
分布式对象表
Citus 表视图
时间分区视图
归置组表
再平衡器策略表
查询统计信息表
分布式查询活动
所有节点上的表
接凭证表
连接池凭证
配置参考
通用配置
citus.max_worker_nodes_tracked (integer)
citus.use_secondary_nodes (enum)
citus.cluster_name (text)
citus.enable_version_checks (boolean)
citus.log_distributed_deadlock_detection (boolean)
citus.distributed_deadlock_detection_factor (floating point)
citus.node_connection_timeout (integer)
citus.node_conninfo (text)
citus.local_hostname (text)
citus.show_shards_for_app_name_prefixes (text)
查询统计
citus.stat_statements_purge_interval (integer)
citus.stat_statements_max (integer)
citus.stat_statements_track (enum)
数据加载
citus.multi_shard_commit_protocol (enum)
citus.shard_count (integer)
citus.shard_max_size (integer)
citus.replicate_reference_tables_on_activate (boolean)
规划器配置
citus.local_table_join_policy (enum)
citus.limit_clause_row_fetch_count (integer)
citus.count_distinct_error_rate (floating point)
citus.task_assignment_policy (enum)
中间数据传输
citus.binary_worker_copy_format (boolean)
citus.max_intermediate_result_size (integer)
DDL
citus.enable_ddl_propagation (boolean)
citus.enable_local_reference_table_foreign_keys (boolean)
执行器配置
通用
Explain 输出
外部集成
从 Kafka 提取数据
注意事项
从 Spark 摄取数据
Tableau 的商业智能
管理
集群管理
选择集群大小
分片数
多租户 SaaS 用例
实时分析用例
初始硬件大小
多租户 SaaS 用例
实时分析用例
扩展集群
添加 worker
无需停机即可重新平衡分片
工作原理
添加协调器
处理节点故障
工作节点故障
协调节点故障
租户隔离
查看查询统计信息
统计过期
资源保护
限制长时间运行的查询
安全
连接管理
设置证书颁发机构签署的证书
提高 Worker 安全
行级安全
PostgreSQL 扩展
创建新数据库
表管理
确定表和关系大小
清理分布式表
分析分布式表
列式存储
用法
测量压缩
例子
陷阱
限制
升级 Citus
升级 Citus 版本
补丁版本升级
主要和次要版本升级
步骤 1. 更新 Citus 包
步骤 2. 在数据库中应用更新
将 PostgreSQL 版本从 13 升级到 14
对于每个节点
故障排除
查询性能调优
表分布和分片
PostgreSQL 调优
横向扩展性能
分布式查询性能调优
通用
子查询/CTE 网络开销
高级
连接管理
任务分配策略
中间数据传输格式
二进制协议
横向扩展数据摄取
实时插入和更新
插入吞吐量
更新吞吐量
插入和更新:吞吐量清单
插入和更新:延迟
临时暂存数据
批量复制 (250K - 2M/s)
有用的诊断查询
查找哪个分片包含特定租户的数据
查找表的分布列
检测锁
查询分片的大小
查询所有分布式表的大小
识别未使用的索引
监控客户端连接数
查看系统查询
活动查询
为什么查询等待
索引命中率
缓存命中率
常见错误信息
无法接收查询结果
解决方法
取消事务,因为它涉及分布式死锁
解决方法
无法连接到服务器:无法分配请求的地址
解决方法
SSL 错误:证书验证失败
解决方法
无法连接到任何活动的放置
解决方法
剩余的连接槽保留给非复制超级用户连接
解决方法
PgBouncer 无法连接到服务器
解决方法
关系 foo 没有被分发
解决方法
不支持的子句类型
解决方法
在事务中执行第一个修改命令后,无法打开新连接
解决方法
无法创建唯一性约束
解决方法
函数 create_distributed_table 不存在
解决方法
不能使用列引用调用 UPDATE 查询中使用的 STABLE 函数
解决方法
FAQ
常见问题
我可以在分布式表上创建主键吗?
如何将节点添加到现有 Citus 集群?
Citus 如何处理工作节点的故障?
Citus 如何处理协调节点的故障转移?
Citus 是否不支持任何 PostgreSQL 功能?
对数据进行哈希分区时如何选择分片数?
如何更改哈希分区表的分片数?
citus 如何支持 count(distinct) 查询?
分布式表在哪些情况下支持唯一性约束?
如何在 Citus 集群中创建数据库角色、功能、扩展等?
如果工作节点的地址发生变化怎么办?
哪个分片包含特定租户的数据?
我忘记了表的分布列,如何找到?
我可以通过多个键分发表吗?
为什么 pg_relation_size 报告分布式表的零字节?
为什么我看到有关 max_intermediate_result_size 的错误?
我可以在 Microsoft Azure 上运行 Citus 吗?
对于多租户应用程序,我可以在 Citus 上按 schema 分片吗?
cstore_fdw 如何与 Citus 一起工作?
pg_shard 发生了什么?
博文
Postgres 中使用 HyperLogLog 的高效汇总表
没有 HLL 的汇总表 — 以 GitHub 事件数据为例
没有 HLL,汇总表有一些限制
HLL 来拯救
HLL 和汇总表一起使用
HLL 可以回答哪些类型的查询?
一个带有 HLL 的汇总表胜过一千个没有 HLL 的汇总表
想了解更多关于 Postgres 中的 HLL 的信息吗?
Postgres 上使用 HyperLogLog 的分布式不同计数
HLL 在幕后做什么?
哈希所有的元素
观察数据中的罕见模式
随机平均
更多?
分布式系统中的HLL
亲身体验 HLL
设置
例子
结论
Citus 中的 Postgres 并行索引
使用 Postgres 和 Citus 进行大规模实时事件聚合
PostgreSQL 和 Citus 上的分布式外连接如何工作
Citus 的分布式外连接
使用 Postgres 设计 SaaS 数据库以实现扩展
使用 Citus 扩展构建可扩展的 Postgres 指标后端
时间序列指标
事件
使用 Postgres 对多租户应用进行分片
租约
多租户和托管,完美的一对
综上所述
使用半结构化数据对 Postgres 进行分片及其对性能的影响
一张大表,没有连接
进入 Citus
查询工作负载
每个发行版都有它的刺
使用 PostgreSQL 和 Citus 进行可扩展的实时产品搜索
官方手册:https://docs.citusdata.com
本文参与
腾讯云自媒体同步曝光计划
,分享自微信公众号。
原始发表:2022-10-10,如有侵权请联系
cloudcommunity@tencent.com
删除
分布式
node.js
云数据库 postgresql
postgresql
数据库
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档