Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南

2022-12-07 09:13:52 浏览数 (1)

官方手册: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

0 人点赞