<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>pgcli</title>
    <link>https://pgcli.pages.dev/zh/</link>
    <description>Recent content on pgcli</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Fri, 30 Oct 2026 15:08:09 +0800</lastBuildDate>
    
    
      <atom:link href="https://pgcli.pages.dev/zh/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>扩展目录</title>
        <link>https://pgcli.pages.dev/zh/docs/extensions/catalog/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/extensions/catalog/</guid>
        <description>&lt;p&gt;本页列出基础镜像中所有内置扩展。使用示例请参见&lt;a href=&#34;https://pgcli.pages.dev/zh/docs/extensions/popular/&#34;&gt;常用扩展&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;内置扩展45-个&#34;&gt;内置扩展（45 个）&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;这些扩展已包含在 PostgreSQL 基础镜像中，无需镜像构建或 &lt;code&gt;pg extension install&lt;/code&gt;。直接运行 &lt;code&gt;CREATE EXTENSION&lt;/code&gt; 即可启用。&lt;/p&gt;</description>
      </item>
    <item>
        <title>意见反馈</title>
        <link>https://pgcli.pages.dev/zh/support/feedback/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/support/feedback/</guid>
        <description>&lt;p&gt;pgcli 通过 GitHub 和邮箱收集反馈。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;报告问题或提出功能建议&lt;/strong&gt;——在&#xA;&lt;a href=&#34;https://github.com/mars-base/pgcli/issues&#34;&gt;mars-base/pgcli/issues&lt;/a&gt; 提交 issue，&#xA;附上 &lt;code&gt;pg version&lt;/code&gt; 输出与复现步骤。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;邮件反馈&lt;/strong&gt;——不方便公开留言时，写信到&#xA;&lt;a href=&#34;mailto:dw_wang126@126.com&#34;&gt;dw_wang126@126.com&lt;/a&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- TODO：确认反馈渠道（issue 还是专用表单/邮箱）。 --&gt;</description>
      </item>
    <item>
        <title>PgBouncer</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/pgbouncer/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/pgbouncer/</guid>
        <description>&lt;p&gt;PgBouncer 是轻量级的 PostgreSQL 连接池。作为 pgcli 插件，它以容器形式运行在&#xA;一个或多个 PostgreSQL 实例前面，在大量短生命周期客户端会话之间复用服务端连接 ——&#xA;默认使用事务级池化。&lt;/p&gt;</description>
      </item>
    <item>
        <title>常用扩展</title>
        <link>https://pgcli.pages.dev/zh/docs/extensions/popular/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/extensions/popular/</guid>
        <description>&lt;p&gt;最常用 PostgreSQL 扩展的使用示例，已在 &lt;strong&gt;PG 18&lt;/strong&gt; + pgcli 环境下测试通过。&lt;/p&gt;&#xA;&lt;h2 id=&#34;性能与监控&#34;&gt;性能与监控&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_stat_statements&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pg_stat_statements&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;SQL 性能分析。&lt;strong&gt;生产环境必备。&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_repack&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pg_repack&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;在线表重组，回收膨胀空间。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_prewarm&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pg_prewarm&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;重启后预加载表数据。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;12&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 一次性安装所有扩展&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install pg_stat_statements,pg_repack,pg_prewarm --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查找 top 5 慢查询&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT query, calls, total_exec_time::numeric(10,2) AS ms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 重组膨胀表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -- pg_repack -U admin -d default_db -t my_table --no-superuser-check&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 预热表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT pg_prewarm(&amp;#39;my_table&amp;#39;);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;数据类型与标识符&#34;&gt;数据类型与标识符&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;uuid-ossp&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;UUID 生成（v1/v3/v5）。&lt;strong&gt;PG 18 已内置 &lt;code&gt;gen_random_uuid()&lt;/code&gt; (v4) 和 &lt;code&gt;uuidv7()&lt;/code&gt; (v7)——无需安装扩展。&lt;/strong&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;hstore&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;键值对存储。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;citext&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;不区分大小写的文本。&lt;code&gt;Foo&lt;/code&gt; = &lt;code&gt;foo&lt;/code&gt;。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;18&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# UUID 生成（PG 18 内置——无需安装扩展）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT gen_random_uuid();&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# v4 随机 UUID（PG 13 起内置）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT uuidv7();&amp;#34;&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# v7 时间有序 UUID（PG 18 新增）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# uuid-ossp 扩展——仅在需要 v1/v3/v5 UUID 时安装&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE EXTENSION IF NOT EXISTS \&amp;#34;uuid-ossp\&amp;#34;;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT uuid_generate_v1();&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# v1 时间戳 + MAC 地址&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT uuid_generate_v3(uuid_ns_url(), &amp;#39;https://example.com&amp;#39;);&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# v3 基于 MD5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT uuid_generate_v5(uuid_ns_url(), &amp;#39;https://example.com&amp;#39;);&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# v5 基于 SHA-1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 键值存储&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT &amp;#39;theme =&amp;gt; dark, lang =&amp;gt; en&amp;#39;::hstore -&amp;gt; &amp;#39;theme&amp;#39;;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 返回: dark&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 不区分大小写匹配&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE TABLE users (email citext);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         INSERT INTO users VALUES (&amp;#39;Alice@Example.COM&amp;#39;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         SELECT * FROM users WHERE email = &amp;#39;alice@example.com&amp;#39;;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;搜索与文本&#34;&gt;搜索与文本&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_trgm&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;三元组相似性，用于模糊搜索和自动补全。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;unaccent&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;去除重音，用于灵活的国际化文本搜索。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;12&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 模糊搜索&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT name, similarity(name, &amp;#39;John&amp;#39;) FROM users&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         ORDER BY similarity(name, &amp;#39;John&amp;#39;) DESC LIMIT 5;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建三元组索引加速模糊搜索&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE INDEX users_name_trgm_idx ON users USING gin (name gin_trgm_ops);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 去除重音&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT unaccent(&amp;#39;Crème Brûlée&amp;#39;);&amp;#34;&lt;/span&gt;  -- 返回 &lt;span class=&#34;s1&#34;&gt;&amp;#39;Creme Brulee&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 组合使用实现不区分重音的模糊搜索&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT name FROM users WHERE name % unaccent(&amp;#39;Creme Brulee&amp;#39;);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;安全与加密&#34;&gt;安全与加密&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgcrypto&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;哈希、加密/解密、随机数生成。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgaudit&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pgaudit&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;审计日志。合规（GDPR、HIPAA、SOX）必需。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 使用 bcrypt 哈希密码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT crypt(&amp;#39;my_password&amp;#39;, gen_salt(&amp;#39;bf&amp;#39;));&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 验证密码&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT (crypt(&amp;#39;my_password&amp;#39;, stored_hash) = stored_hash);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 对称加密/解密&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT pgp_sym_decrypt(pgp_sym_encrypt(&amp;#39;secret&amp;#39;, &amp;#39;key&amp;#39;), &amp;#39;key&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 启用特定操作的审计日志&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SET pgaudit.log = &amp;#39;read, ddl&amp;#39;;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;地理空间&#34;&gt;地理空间&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;postgis&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install postgis&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;完整空间数据库：几何类型、空间索引、距离/面积计算。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-4&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;16&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-4-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install postgis --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建包含空间数据的表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE TABLE places (id serial, name text, geom geometry(Point, 4326));&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;INSERT INTO places (name, geom) VALUES&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         (&amp;#39;San Francisco&amp;#39;, ST_MakePoint(-122.4, 37.8)),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         (&amp;#39;London&amp;#39;, ST_MakePoint(-0.1276, 51.5074));&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查找 5km 范围内的地点&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT name FROM places&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         WHERE ST_DWithin(geom, ST_MakePoint(-122.4, 37.8)::geography, 5000);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 计算两个城市间的距离（米）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT ST_Distance(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;           ST_MakePoint(-74.006, 40.7128)::geography,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;           ST_MakePoint(-0.1276, 51.5074)::geography);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;ai-与向量搜索&#34;&gt;AI 与向量搜索&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgvector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install vector&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;存储和搜索嵌入向量。AI 应用标准。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-5&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-5-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install vector --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建带向量列的表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE TABLE items (id serial PRIMARY KEY, embedding vector(3));&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;INSERT INTO items (embedding) VALUES (&amp;#39;[1,2,3]&amp;#39;), (&amp;#39;[4,5,6]&amp;#39;), (&amp;#39;[7,8,9]&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查找最近邻（欧几里得距离）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT id FROM items ORDER BY embedding &amp;lt;-&amp;gt; &amp;#39;[3,1,2]&amp;#39; LIMIT 5;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建 IVFFlat 索引加速近似搜索&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE INDEX items_embedding_idx ON items USING ivfflat (embedding vector_l2_ops);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;时序数据&#34;&gt;时序数据&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;timescaledb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install timescaledb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;优化的时序存储，支持超级表。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-6&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-6-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install timescaledb --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建超级表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE TABLE sensor (time timestamptz NOT NULL, value float);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         SELECT create_hypertable(&amp;#39;sensor&amp;#39;, &amp;#39;time&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 时间桶聚合&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT time_bucket(&amp;#39;1 hour&amp;#39;, time) AS bucket, avg(value)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         FROM sensor GROUP BY bucket ORDER BY bucket;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;定时任务与分布式&#34;&gt;定时任务与分布式&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_cron&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pg_cron&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Cron 定时任务调度器。pgcli 自动配置。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;citus&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install citus&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;分布式 PostgreSQL，支持分片。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-7&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-7-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install pg_cron --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 调度每日清理任务（午夜运行）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT cron.schedule(&amp;#39;cleanup&amp;#39;, &amp;#39;0 0 * * *&amp;#39;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         &amp;#39;DELETE FROM logs WHERE created_at &amp;lt; now() - interval &amp;#39;&amp;#39;30 days&amp;#39;&amp;#39;&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 列出已调度的任务&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT jobid, schedule, command FROM cron.job;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 取消调度&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT cron.unschedule(&amp;#39;cleanup&amp;#39;);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;外部数据&#34;&gt;外部数据&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;安装&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;描述&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;postgres_fdw&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;内置&lt;/td&gt;&#xA;      &lt;td&gt;将外部 PostgreSQL 服务器作为本地表查询。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;pg extension install pg_duckdb&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;嵌入式 DuckDB 分析引擎。读取 Parquet/CSV，OLAP 查询加速。&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-8&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;13&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-8-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建外部服务器&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE SERVER remote FOREIGN DATA WRAPPER postgres_fdw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         OPTIONS (host &amp;#39;10.0.0.2&amp;#39;, port &amp;#39;5432&amp;#39;, dbname &amp;#39;analytics&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建用户映射&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;CREATE USER MAPPING FOR current_user SERVER remote&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         OPTIONS (user &amp;#39;reader&amp;#39;, password &amp;#39;secret&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 导入远程 schema 作为外部表&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;IMPORT FOREIGN SCHEMA public FROM SERVER remote INTO remote_schema;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 像查询本地表一样查询远程数据&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM remote_schema.events LIMIT 10;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fda2be5f-fence-9&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;31&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fda2be5f-fence-9-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg extension install pg_duckdb --auto-restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 DuckDB 中执行 SQL —— duckdb.query 是表函数（必须在 FROM 子句中使用）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM duckdb.query(\$\$ SELECT 42 AS answer, &amp;#39;hello&amp;#39; AS msg \$\$);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 将表导出为 Parquet 文件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;COPY my_table TO &amp;#39;/tmp/my_table.parquet&amp;#39; (FORMAT &amp;#39;parquet&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 直接读取 Parquet/CSV 文件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM duckdb.query(\$\$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         SELECT * FROM read_parquet(&amp;#39;/tmp/my_table.parquet&amp;#39;) WHERE id &amp;gt; 2 \$\$);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 将整个查询下推到 DuckDB 执行（OLAP 加速）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SET duckdb.force_execution = true;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         SELECT category, sum(amount) FROM sales GROUP BY category;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 纯 DuckDB SQL（完全绕过 PostgreSQL 规划器）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM duckdb.raw_query(\$\$ SELECT range AS n FROM range(1, 6) \$\$);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# --- 从 S3 / MinIO 读取文件（无需复制文件） ---&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 先创建 S3 secret（use_ssl 是文本类型：&amp;#39;true&amp;#39;/&amp;#39;false&amp;#39;）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT duckdb.create_simple_secret(&amp;#39;S3&amp;#39;, &amp;#39;&amp;lt;access_key&amp;gt;&amp;#39;, &amp;#39;&amp;lt;secret_key&amp;gt;&amp;#39;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         &amp;#39;&amp;#39;, &amp;#39;us-east-1&amp;#39;, &amp;#39;path&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;minio.example.com:9000&amp;#39;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         &amp;#39;s3://bucket&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;false&amp;#39;);&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 直接查询 bucket 中的 CSV&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM duckdb.query(\$\$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         SELECT category, count(*) AS cnt, sum(sales) AS total_sales&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         FROM read_csv(&amp;#39;s3://bucket/products.csv&amp;#39;, auto_detect=true)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;         GROUP BY category ORDER BY total_sales DESC \$\$);&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;兼容性说明&#34;&gt;兼容性说明&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;扩展&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;PG 18 状态&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;备注&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgml&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;不可用&lt;/td&gt;&#xA;      &lt;td&gt;仅支持 PG 14-17（无 PG 18 包）&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;uuid-ossp&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;部分需要&lt;/td&gt;&#xA;      &lt;td&gt;PG 18 内置：&lt;code&gt;gen_random_uuid()&lt;/code&gt; (v4)、&lt;code&gt;uuidv7()&lt;/code&gt; (v7)。扩展仅在需要 v1/v3/v5 时安装&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>技术支持</title>
        <link>https://pgcli.pages.dev/zh/support/tech-support/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/support/tech-support/</guid>
        <description>&lt;p&gt;安装、实例管理、备份、副本、HA 集群等任何问题，都可以直接联系 pgcli 维护者。&lt;/p&gt;&#xA;&lt;h2 id=&#34;微信&#34;&gt;微信&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;用微信扫描下方二维码添加好友，好友申请请备注&lt;strong&gt;技术咨询&lt;/strong&gt;：&lt;/p&gt;</description>
      </item>
    <item>
        <title>Etcd</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/etcd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/etcd/</guid>
        <description>&lt;p&gt;etcd 是一个分布式键值存储。pgcli 可以将一个或多个 etcd 成员作为&lt;strong&gt;独立的顶层&#xA;addon&lt;/strong&gt; 运行 —— 它是共享基础设施，而非绑定某个实例的 sidecar。常见用途是为&#xA;PostgreSQL 高可用栈充当 DCS（Distributed Concurrent Store），或作为通用的配置 /&#xA;锁服务。&lt;/p&gt;</description>
      </item>
    <item>
        <title>付费订阅</title>
        <link>https://pgcli.pages.dev/zh/support/subscription/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/support/subscription/</guid>
        <description>&lt;p&gt;pgcli 本身免费开源（Apache 2.0）。付费订阅可获得优先响应、生产部署协助与功能建议通道。&lt;/p&gt;&#xA;&lt;!-- TODO：补充订阅档位、价格与购买链接。 --&gt;</description>
      </item>
    <item>
        <title>PgDog</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/pgdog/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/pgdog/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://pgdog.dev&#34;&gt;PgDog&lt;/a&gt; 是一个用 Rust 编写的高性能 Postgres 代理（PgCat&#xA;的继任者）。它提供连接池化、跨副本的读写负载均衡，以及水平分片，位于一个或多&#xA;个 PostgreSQL 后端之前。pgcli 可将 PgDog 作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行：它是共享&#xA;基础设施，而非依附某个实例的 sidecar。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Garage</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/garage/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/garage/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://garagehq.deuxfleurs.fr&#34;&gt;Garage&lt;/a&gt; 是 &lt;a href=&#34;https://deuxfleurs.fr&#34;&gt;Deuxfleurs&lt;/a&gt;&#xA;出品的 Rust、AGPLv3 S3 兼容对象存储重实现，为小规模自建和异地分布式集群设&#xA;计。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行，CLI 表面与&#xA;&lt;a href=&#34;../minio/&#34;&gt;&lt;code&gt;minio&lt;/code&gt;&lt;/a&gt;、&lt;a href=&#34;../silo/&#34;&gt;&lt;code&gt;silo&lt;/code&gt;&lt;/a&gt;、&lt;a href=&#34;../rustfs/&#34;&gt;&lt;code&gt;rustfs&lt;/code&gt;&lt;/a&gt; 一致&#xA;（install、list、logs、autostart、password），但其运行时模型在四个方面与三者&#xA;都不同，这也决定了本页的写法：&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 高可用</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://patroni.readthedocs.io&#34;&gt;Patroni&lt;/a&gt; 是 PostgreSQL 高可用的事实标准：它&#xA;管理每个 postmaster 的生命周期、在成员间流式复制，并在 leader 失联时执行&#xA;&lt;strong&gt;自动故障切换&lt;/strong&gt;。pgcli 将 Patroni 作为独立的模式暴露 —— &lt;code&gt;pg ha&lt;/code&gt; —— 而不是&#xA;把它揉进普通的 &lt;code&gt;pg&lt;/code&gt; 实例管理路径。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 动态配置</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-dynamic/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-dynamic/</guid>
        <description>&lt;p&gt;这些参数存储在 DCS（etcd）的 &lt;code&gt;/service/&amp;lt;scope&amp;gt;/config&lt;/code&gt; 下，应用于集群的&lt;strong&gt;所有&lt;/strong&gt;成员。使用 &lt;code&gt;pg ha edit-config&lt;/code&gt; 修改：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fd1b15a0-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fd1b15a0-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app -- -s &lt;span class=&#34;nv&#34;&gt;loop_wait&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app -- -s &lt;span class=&#34;s1&#34;&gt;&amp;#39;postgresql.parameters.max_connections=200&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg ha edit-config app --show          &lt;span class=&#34;c1&#34;&gt;# 查看当前配置&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;参考：&lt;a href=&#34;https://patroni.readthedocs.io/en/latest/dynamic_configuration.html&#34;&gt;Patroni 官方文档&lt;/a&gt;、&#xA;&lt;a href=&#34;https://pigsty.cc/docs/patroni/config/dynamic/&#34;&gt;Pigsty 动态配置&lt;/a&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgREST</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/postgrest/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/postgrest/</guid>
        <description>&lt;p&gt;PostgREST 是一个单进程、无状态的 Web 服务器，把一个 PostgreSQL schema 直接变成&#xA;RESTful API。作为 pgcli 插件，它是贴在任意 PG 端点前面的一个容器——没有数据目录、&#xA;没有渲染出的配置文件，全部通过 &lt;code&gt;PGRST_*&lt;/code&gt; 环境变量配置。&lt;/p&gt;</description>
      </item>
    <item>
        <title>SeaweedFS</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/seaweedfs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/seaweedfs/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/seaweedfs/seaweedfs&#34;&gt;SeaweedFS&lt;/a&gt; 是一个 Go 语言、Apache-2.0&#xA;的 S3 兼容对象存储，其标志性特征是&lt;strong&gt;以 volume 粒度管理磁盘&lt;/strong&gt;：数据被切成固定大&#xA;小的 &lt;em&gt;volume&lt;/em&gt;（&lt;code&gt;.vol&lt;/code&gt; 文件），由 master 在各 volume 服务器之间放置，从而获得&#xA;O(1) 读取和廉价的小文件存储。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行，CLI 表面与&#xA;&lt;a href=&#34;../garage/&#34;&gt;&lt;code&gt;garage&lt;/code&gt;&lt;/a&gt;、&lt;a href=&#34;../minio/&#34;&gt;&lt;code&gt;minio&lt;/code&gt;&lt;/a&gt;、&lt;a href=&#34;../silo/&#34;&gt;&lt;code&gt;silo&lt;/code&gt;&lt;/a&gt;、&#xA;&lt;a href=&#34;../rustfs/&#34;&gt;&lt;code&gt;rustfs&lt;/code&gt;&lt;/a&gt; 一致（install、list、logs、autostart、password、&#xA;&lt;code&gt;pg mc&lt;/code&gt;），但其运行时模型在四个方面与四者都不同，这也决定了本页的写法：&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni REST API</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-rest-api/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-rest-api/</guid>
        <description>&lt;p&gt;Patroni 在每个成员上暴露一个 HTTP REST API，提供健康检查端点（供负载均衡器和&#xA;Kubernetes 探针使用）、监控数据（含 Prometheus 指标）以及集群管理操作。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;参考：&lt;a href=&#34;https://patroni.readthedocs.io/en/latest/rest_api.html&#34;&gt;Patroni 官方文档&lt;/a&gt;、&#xA;&lt;a href=&#34;https://pigsty.cc/docs/patroni/rest_api/&#34;&gt;Pigsty REST API&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;查找-rest-api&#34;&gt;查找 REST API&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;每个成员的 REST API 端口由 pgcli 自动分配，存储在 &lt;code&gt;pg.yaml&lt;/code&gt; 的&#xA;&lt;code&gt;addons.patroni.&amp;lt;scope&amp;gt;.members.&amp;lt;name&amp;gt;.restapi_port&lt;/code&gt; 下。端口也写入渲染后的&#xA;&lt;code&gt;patroni.yml&lt;/code&gt; 的 &lt;code&gt;restapi.connect_address&lt;/code&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>RustFS</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/rustfs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/rustfs/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/rustfs/rustfs&#34;&gt;rustfs&lt;/a&gt; 是 Rust 重新实现的 S3 兼容对象存&#xA;储：同样的 S3 API、Web 控制台、纠删码多盘/多节点布局——但运行时模型与&#xA;MinIO/silo 完全不同。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行，CLI 表面与&#xA;&lt;a href=&#34;../minio/&#34;&gt;&lt;code&gt;minio&lt;/code&gt;&lt;/a&gt;、&lt;a href=&#34;../silo/&#34;&gt;&lt;code&gt;silo&lt;/code&gt;&lt;/a&gt; 一致（install、TLS、BYO 证书、&#xA;drives、logs、autostart），共用同一个端口池；但有三点决定了本页的写法：&lt;/p&gt;</description>
      </item>
    <item>
        <title>HA 集群扩展安装</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-extensions/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-extensions/</guid>
        <description>&lt;p&gt;在 Patroni 管理的 HA 集群中安装 PostgreSQL 扩展，与单节点实例有本质区别。&#xA;本页解释原因，并介绍 &lt;code&gt;pg ha extension&lt;/code&gt; 命令子树。&lt;/p&gt;&#xA;&lt;h2 id=&#34;为什么不能用-pg-extension-install&#34;&gt;为什么不能用 &lt;code&gt;pg extension install&lt;/code&gt;？&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;单节点流程（&lt;code&gt;pg extension install &amp;lt;instance&amp;gt; &amp;lt;ext&amp;gt;&lt;/code&gt;）的工作方式是：&lt;/p&gt;</description>
      </item>
    <item>
        <title>HAProxy</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/haproxy/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/haproxy/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.haproxy.org&#34;&gt;HAProxy&lt;/a&gt; 是 Patroni 官方文档推荐放在集群前面的负载&#xA;均衡器：客户端只连一个稳定地址，HAProxy 对各成员的 REST API 做健康检查，把写&#xA;请求路由到当前 leader（读写分离模式下，读请求路由到 replica）。pgcli 将其作为&#xA;&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行——共享的路由基础设施，而非实例级 sidecar——镜像固定为&#xA;官方 &lt;code&gt;haproxy:3.2.23-alpine&lt;/code&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/silo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/silo/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://silo.pgsty.com&#34;&gt;silo&lt;/a&gt; 是 Pigsty 社区维护的 MinIO 分支：S3 兼容对象&#xA;存储、内置 Web 控制台，并完整保留了 MinIO 的对外契约——S3 API、&lt;code&gt;MINIO_*&lt;/code&gt;&#xA;环境变量、&lt;code&gt;server /data --address :9000 --console-address :9001&lt;/code&gt; 命令行、&#xA;&lt;code&gt;--certs-dir&lt;/code&gt; 目录布局、以及纠删码集群模式。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;&#xA;运行，功能面与 &lt;a href=&#34;../minio/&#34;&gt;&lt;code&gt;minio&lt;/code&gt; 插件&lt;/a&gt; 完全一致——install、TLS、BYO 证书、&#xA;分布式模式、logs、autostart 一一对应。如果你跟随 Pigsty 的发布节奏就选 silo；&#xA;两者可以在同一台主机并存（共用一个端口池，统一游标分配，不会冲突）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>MinIO</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/minio/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/minio/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://min.io&#34;&gt;MinIO&lt;/a&gt; 是 S3 兼容的对象存储。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;&#xA;运行——共享基础设施，而非实例级 sidecar——带 Web 控制台。默认采用&lt;strong&gt;单机&#xA;（single-node）&lt;strong&gt;模式，也支持跨主机的&lt;/strong&gt;分布式集群模式&lt;/strong&gt;（见下文&#xA;&lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/minio/#%e5%88%86%e5%b8%83%e5%bc%8f--%e9%9b%86%e7%be%a4%e6%a8%a1%e5%bc%8f&#34;&gt;分布式 / 集群模式&lt;/a&gt;）。两种模式下它都是通用对象存储。&#xA;&lt;a href=&#34;../silo/&#34;&gt;silo&lt;/a&gt;——Pigsty 的 MinIO 分支，保持线路兼容——作为同级插件提供，功能面&#xA;完全一致；两者共用一个端口池，可在同一主机并存。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 集群备份</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-backup/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-backup/</guid>
        <description>&lt;p&gt;本页给出 &lt;strong&gt;Patroni HA 集群备份的完整操作流程&lt;/strong&gt;：从 &lt;code&gt;pg backup setup&lt;/code&gt; 打通备份&#xA;基础设施，到 &lt;code&gt;pg ha snapshot&lt;/code&gt; 做全量/增量/差异备份，再到一个运行态坑——副本&#xA;&lt;code&gt;Replay LSN&lt;/code&gt; 卡住导致 &lt;code&gt;pg ha status&lt;/code&gt; 显示成员 LSN 不一致时，如何用&#xA;&lt;code&gt;patronictl reinit&lt;/code&gt; 拉回。命令与前置机制的参考细节见&#xA;&lt;a href=&#34;../ha/#%E5%A4%87%E4%BB%BD%E8%B7%A8%E4%B8%BB%E6%9C%BA-leader&#34;&gt;Patroni HA&lt;/a&gt; 与&#xA;&lt;a href=&#34;../../backup/#s3-%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E4%BB%93%E5%BA%93&#34;&gt;备份&lt;/a&gt;；本页把它们串成一条能照着跑完的路径。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Redis</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/redis/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/redis/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://redis.io/&#34;&gt;Redis&lt;/a&gt; 是应用需要缓存、会话后端、排行榜（有序集合）或&#xA;原子计数时最常选的内存键值存储。pgcli 将其作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行，CLI&#xA;表面与对象存储一致（install / start / stop / logs / autostart / remove），&#xA;全部通过 &lt;code&gt;pg.yaml&lt;/code&gt; 管理。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni 集群恢复</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-restore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-restore/</guid>
        <description>&lt;p&gt;本页是 &lt;strong&gt;&lt;a href=&#34;../ha-backup/&#34;&gt;Patroni 集群备份&lt;/a&gt;&lt;/strong&gt; 的恢复侧姊妹页。集群一旦有了带 WAL&#xA;归档的 stanza（&lt;code&gt;pg backup setup&lt;/code&gt; + &lt;code&gt;pg ha snapshot&lt;/code&gt;），&lt;code&gt;pg ha restore&lt;/code&gt; 就能把整个集群&#xA;回到某个时间点——它是单实例 &lt;a href=&#34;../../restore/&#34;&gt;&lt;code&gt;pg restore&lt;/code&gt;&lt;/a&gt; 的 Patroni 集群对应物。本页&#xA;讲清机制（为什么集群 PITR 不是简单跑一次 &lt;code&gt;pgbackrest restore&lt;/code&gt;）、关于 leader 所在主机&#xA;的安全性预检、端到端操作流程，以及恢复之后必须做的重新基线步骤。命令 / flag 细节同时见&#xA;&lt;a href=&#34;../../restore/#patroni-%E9%9B%86%E7%BE%A4&#34;&gt;恢复 → Patroni 集群&lt;/a&gt;；本页把它们串成一条可照着跑的流程。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Predixy</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/predixy/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/predixy/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/joyieldInc/predixy&#34;&gt;Predixy&lt;/a&gt; 是一个高性能 Redis 协议代理。&#xA;pgcli 把它做成一个&lt;strong&gt;独立的顶层插件&lt;/strong&gt;：它接住一个 &lt;a href=&#34;../redis/#%E5%8E%9F%E7%94%9F%E9%9B%86%E7%BE%A4&#34;&gt;Redis 原生集群&lt;/a&gt;&#xA;（3 个以上节点、16384 个 slot、&lt;code&gt;MOVED&lt;/code&gt; 重定向），再把它交回应用侧——形式是&#xA;&lt;strong&gt;一个普通的 &lt;code&gt;redis://&lt;/code&gt; 端点&lt;/strong&gt;。客户端不需要懂集群：不加 &lt;code&gt;-c&lt;/code&gt;、不处理重定向，&#xA;连上就能读写。&lt;/p&gt;</description>
      </item>
    <item>
        <title>HA Exec / psql</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-exec/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-exec/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg ha exec&lt;/code&gt; 和 &lt;code&gt;pg ha psql&lt;/code&gt; 是对 Patroni 集群直接跑 SQL 的方式。它们是单实例&#xA;&lt;a href=&#34;../../exec-psql/&#34;&gt;&lt;code&gt;pg exec&lt;/code&gt;&lt;/a&gt; / &lt;a href=&#34;../../exec-psql/&#34;&gt;&lt;code&gt;pg psql&lt;/code&gt;&lt;/a&gt; 的集群对应物：你只给一个&#xA;scope，工具负责解析目标并连上去。不用手拼 &lt;code&gt;--dsn&lt;/code&gt;、不用 &lt;code&gt;podman exec&lt;/code&gt; 钻进成员容器，&#xA;而且因为走的是普通 TCP，&lt;strong&gt;另一台主机&lt;/strong&gt;上的 leader 或副本和本机成员一样可达。&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgAdmin 4</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/pgadmin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/pgadmin/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.pgadmin.org/&#34;&gt;pgAdmin 4&lt;/a&gt; 是 PostgreSQL 的官方 Web 管理界面——在&#xA;浏览器里浏览 schema、执行 SQL、观察服务器状态。pgcli 将其作为&lt;strong&gt;独立的顶层插&#xA;件&lt;/strong&gt;运行，CLI 表面与其他 web/infra 插件一致（install / start / stop / logs /&#xA;autostart / remove），全部通过 &lt;code&gt;pg.yaml&lt;/code&gt; 管理。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Nginx</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/nginx/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/nginx/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; 是 HTTP 反向代理，用于前置多个 Web 服务——仪表盘、API、&#xA;管理面板——通过基于路径的路由和可选 TLS 终止。pgcli 将其&#xA;作为&lt;strong&gt;独立的顶层插件&lt;/strong&gt;运行，CLI 表面与其他 web/infra 插件一致（install / start&#xA;/ stop / logs / autostart / remove），全部通过 &lt;code&gt;pg.yaml&lt;/code&gt; 管理。&lt;/p&gt;</description>
      </item>
    <item>
        <title>示例：HA 集群 &#43; 自签 CA 的 MinIO</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-example-minio/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-example-minio/</guid>
        <description>&lt;p&gt;这是一页&lt;strong&gt;实操示例&lt;/strong&gt;，每一步都真实跑通并验证过：创建 Patroni HA 集群，架一台&#xA;对外服务&lt;strong&gt;自带域名证书&lt;/strong&gt;的 MinIO 插件（这里用我们自己造的自签 CA——与公共&#xA;CA、企业 CA 证书同一种形态，只是没去买），并把集群的 pgBackRest 备份与 WAL&#xA;归档指向它。下面每条命令都是实跑过的命令；只有主机名、端口、密码和证书材料&#xA;做了泛化处理。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Grafana</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/grafana/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/grafana/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install grafana&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://grafana.com/oss/grafana/&#34;&gt;Grafana&lt;/a&gt;——开源可观测性面板——直接跑官方上游镜像。与 pgAdmin 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不依附于任何单个 PostgreSQL 实例，也不会自动前置它们——数据源和仪表盘都在 Web UI 里自己添加。v1 是纯 Web UI：配置只经环境变量（&lt;code&gt;GF_*&lt;/code&gt;）交付，不挂载任何 datasource/dashboard 的 provisioning。&lt;/p&gt;</description>
      </item>
    <item>
        <title>生成证书 —— pg cert</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-cert/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-cert/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg cert&lt;/code&gt; 签发一张&lt;strong&gt;自签证书&lt;/strong&gt;——SubjectAltNames 覆盖你要求的任意域名 / IP&#xA;组合——适用于任何不想走 CA 又需要 TLS 的场合：开发或测试服务器、内部端点、&#xA;客户端归你可控的服务。它写出的就是一张普通的 TLS 服务端叶证书，哪里都能用。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Prometheus</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/prometheus/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/prometheus/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install prometheus&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://prometheus.io/&#34;&gt;Prometheus&lt;/a&gt;——指标采集与告警后端——直接跑官方 &lt;code&gt;docker.io/prom/prometheus&lt;/code&gt; 镜像。与 Grafana 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不前置某个具体实例（它抓很多端点），也不依附于任何一个。二者是天然搭档——Prometheus 负责采集与存储、Grafana 负责可视化——且生命周期形状完全一致（单容器、Linux 上宿主网络、各自端口池里的一个 web 端口、持久数据目录、开机自启、日志）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>S3 存储高可用方案</title>
        <link>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-s3-storage/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/ha-cluster/ha-s3-storage/</guid>
        <description>&lt;p&gt;Patroni 集群能扛住一个节点失联；它的 WAL 与备份流向的那个 S3 仓库却必须同&#xA;样扛得住，否则&amp;quot;高可用&amp;quot;在备份这条路上悄无声息地就断了。store 是一个&#xA;&lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/minio/&#34;&gt;MinIO&lt;/a&gt; 或 &lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/silo/&#34;&gt;silo&lt;/a&gt; 插件（两者可互换——silo 是&#xA;Pigsty 的 MinIO 分支，功能面完全一致）。这里真正要紧的是两个&lt;strong&gt;互相正交&lt;/strong&gt;的&#xA;故障域：&lt;/p&gt;</description>
      </item>
    <item>
        <title>Alertmanager</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/alertmanager/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/alertmanager/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install alertmanager&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://prometheus.io/docs/alerting/latest/alertmanager/&#34;&gt;Alertmanager&lt;/a&gt;——位于 Prometheus 下游的告警去重、分组、路由与通知层——直接跑官方 &lt;code&gt;docker.io/prom/alertmanager&lt;/code&gt; 镜像。与 Prometheus、Grafana 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不前置某个具体实例，也不依附于任何一个。Prometheus 与 Alertmanager 是天然一对——Prometheus 触发告警，Alertmanager 决定通知谁、怎么通知——而本插件在形状上是 Prometheus 的近乎完全同构体（单容器、Linux 上宿主网络、各自端口池里的一个 web 端口、持久数据目录、开机自启、日志、渲染配置文件 + 镜像名之后的 CLI flag、SIGHUP 热加载、无 Web 登录）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Gitea</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/gitea/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/gitea/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install gitea&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://about.gitea.com/&#34;&gt;Gitea&lt;/a&gt;——轻量级自托管 Git 服务——直接跑官方上游镜像（&lt;code&gt;docker.io/gitea/gitea&lt;/code&gt;，rootful 构建）。与 Grafana 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不依附于任何单个 PostgreSQL 实例，也不自动前置它们——但可以把某个 PG 实例&lt;strong&gt;用作&lt;/strong&gt;自己的元数据库（见下文 &lt;code&gt;--dsn&lt;/code&gt;）。单个容器同时提供 Web UI、Git HTTP 流量，以及 git-over-ssh（跑在镜像自带的 OpenSSH &lt;code&gt;sshd&lt;/code&gt; 上——见下文「Git SSH」小节；无论 &lt;code&gt;--ssh-port&lt;/code&gt; 与否这个 &lt;code&gt;sshd&lt;/code&gt; 都在跑，该 flag 只决定它是否是&lt;em&gt;活的&lt;/em&gt;克隆端点）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>VictoriaMetrics</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/victoriametrics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/victoriametrics/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install victoriametrics&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://victoriametrics.com/&#34;&gt;VictoriaMetrics&lt;/a&gt;——高性能、兼容 Prometheus 的时序数据库——直接跑官方 &lt;code&gt;docker.io/victoriametrics/victoria-metrics&lt;/code&gt; 镜像。与 Prometheus 和 Grafana 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不前置某个具体实例（它从多个来源摄入指标），也不依附于任何一个。三者是天然搭档——Prometheus 负责采集、VictoriaMetrics 以优异的压缩率做长期存储、Grafana 负责可视化——且生命周期形状完全一致（单容器、Linux 上宿主网络、各自端口池里的一个 web 端口、持久数据目录、开机自启、日志）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>BeeGFS</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/beegfs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/beegfs/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.beegfs.io/&#34;&gt;BeeGFS&lt;/a&gt; 是一套走「易用」路线的&lt;strong&gt;并行文件系统&lt;/strong&gt;：2004&#xA;年生于德国弗劳恩霍夫工业数学研究所（ITWM）——当年一个课题组要用 Lustre，嫌它&#xA;部署运维太重，干脆自己写了一个，目标从一开始就定死：不求规模最大，但求部署和&#xA;维护最省人力。2014 年核心成员从研究所出来成立商业公司 ThinkParQ，产品改名&#xA;BeeGFS，一路从研究所内部工具长成欧洲高校与区域超算里常见的共享存储。&lt;/p&gt;</description>
      </item>
    <item>
        <title>VMCluster</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/vmcluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/vmcluster/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install vmcluster&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://docs.victoriametrics.com/cluster-victoriametrics/&#34;&gt;VictoriaMetrics 集群版&lt;/a&gt;——3 个组件各跑一个容器，使用官方 &lt;code&gt;docker.io/victoriametrics/{vminsert,vmselect,vmstorage}:v1.154.1-cluster&lt;/code&gt; 镜像。与单机版 &lt;code&gt;victoriametrics&lt;/code&gt; addon（1 容器 1 端口）不同，它管理最多 3 个容器、3 个镜像、5 个端口，支持跨主机部署和水平扩展。&lt;/p&gt;</description>
      </item>
    <item>
        <title>JuiceFS</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/juicefs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/juicefs/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://juicefs.com/&#34;&gt;JuiceFS&lt;/a&gt; 把真正的 POSIX 文件系统铺在对象存储之上：文件&#xA;数据切块后存进 S3 桶，另由一个&lt;strong&gt;元数据引擎&lt;/strong&gt;（SQLite、Redis、PostgreSQL……）&#xA;保存命名空间、文件属性与块映射。你拿到的是一个可以 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt; 的普通&#xA;目录——每次写入最终都化作桶里不可变的对象。「想要文件系统、但字节应该住在&#xA;S3」就是它解决的问题：快照近乎免费（对象不可变）、容量就是桶的容量、任何知道&#xA;元数据 URL 的主机都能把同一个桶再挂起来。&lt;/p&gt;</description>
      </item>
    <item>
        <title>VictoriaLogs</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/victorialogs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/victorialogs/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install victorialogs&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://docs.victoriametrics.com/victorialogs/&#34;&gt;VictoriaLogs&lt;/a&gt;——VictoriaMetrics 家族的高性能、低成本日志数据库——直接跑官方 &lt;code&gt;docker.io/victoriametrics/victoria-logs&lt;/code&gt; 镜像。与 VictoriaMetrics 和 Prometheus 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不前置某个具体实例（它从多个来源摄入日志），也不依附于任何一个。VictoriaMetrics 存指标、VictoriaLogs 存日志、Grafana 同时可视化两者——三者生命周期形状完全一致（单容器、Linux 上宿主网络、各自端口池里的一个 web 端口、持久数据目录、重启策略）。&lt;/p&gt;</description>
      </item>
    <item>
        <title>vlagent</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/vlagent/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/vlagent/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install vlagent&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://docs.victoriametrics.com/victorialogs/vlagent/&#34;&gt;vlagent&lt;/a&gt;——VictoriaLogs 家族的官方日志 agent、&lt;code&gt;vmagent&lt;/code&gt; 的&lt;strong&gt;日志&lt;/strong&gt;对应物——直接跑官方 &lt;code&gt;docker.io/victoriametrics/vlagent&lt;/code&gt; 镜像。它是&lt;strong&gt;顶层插件&lt;/strong&gt;：不前置某个具体 PostgreSQL 实例，是 &lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/victorialogs/&#34;&gt;VictoriaLogs 插件&lt;/a&gt;的天然搭档——VictoriaLogs 存日志，vlagent 从文件或 HTTP 采集日志并转发给一个或多个 VictoriaLogs 实例。&lt;/p&gt;</description>
      </item>
    <item>
        <title>VLCluster</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/vlcluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/vlcluster/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install vlcluster&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://docs.victoriametrics.com/victorialogs/cluster/&#34;&gt;VictoriaLogs 集群版&lt;/a&gt;——可水平扩展的日志数据库。与单机版 &lt;code&gt;victorialogs&lt;/code&gt; addon（1 容器 1 端口）不同，它管理最多 3 个容器，但三个角色&lt;strong&gt;共用同一个镜像&lt;/strong&gt;（&lt;code&gt;docker.io/victoriametrics/victoria-logs:v1.53.0&lt;/code&gt;），角色完全由启动参数区分；每台主机占用 3 个 HTTP 端口。&lt;/p&gt;</description>
      </item>
    <item>
        <title>ZeroFS</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/zerofs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/zerofs/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/Barre/ZeroFS&#34;&gt;ZeroFS&lt;/a&gt; 是把&lt;strong&gt;一切关在桶里&lt;/strong&gt;的 S3 文件系&#xA;统：不像 JuiceFS 依赖外部元数据引擎，它自己在对象存储上跑一套 LSM 树，且每个&#xA;对象都用卷数据密钥加密——该密钥由你的&lt;strong&gt;加密口令&lt;/strong&gt;包裹（wrap）。快照与一致性&#xA;由后台 compaction 负责——没有要备份的数据库、没有要养活的 Redis。它经本地&#xA;9P 一跳再以 FUSE 挂载，日常使用与普通文件系统无异；而桶本身就是这个卷完整的、&#xA;加密的副本。&lt;/p&gt;</description>
      </item>
    <item>
        <title>DuckDB</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/duckdb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/duckdb/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://duckdb.org/&#34;&gt;DuckDB&lt;/a&gt; 是嵌入式分析数据库——常被称作&amp;quot;SQLite for analytics&amp;quot;。&#xA;C++ 编写的列式引擎，向量化执行，可以直接查询 Parquet、CSV、JSON 和 Arrow 文件，&#xA;无需服务器进程。把它当成一个单二进制的 OLAP 引擎，指向你的数据即可使用：&#xA;加载 &lt;code&gt;httpfs&lt;/code&gt; 扩展后，&lt;code&gt;SELECT * FROM read_parquet(&#39;s3://bucket/data.parquet&#39;)&lt;/code&gt;&#xA;开箱即用。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Node_exporter</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/nodeexporter/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/nodeexporter/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install nodeexporter&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://github.com/prometheus/node_exporter&#34;&gt;node_exporter&lt;/a&gt;——Prometheus 官方的&lt;strong&gt;宿主机&lt;/strong&gt;指标导出器，在 &lt;code&gt;/metrics&lt;/code&gt; 上发布整台机器的 CPU、内存、磁盘、网络与文件系统指标——直接跑官方 &lt;code&gt;docker.io/prom/node-exporter&lt;/code&gt; 镜像。与 Prometheus、VictoriaMetrics、Grafana 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：它描述的是机器，不是某个 PostgreSQL 实例，故不依附于任何一个。它是 pgcli &lt;a href=&#34;../prometheus/&#34;&gt;Prometheus&lt;/a&gt; 插件的天然搭档——node_exporter 负责暴露、Prometheus 负责抓取。&lt;/p&gt;</description>
      </item>
    <item>
        <title>InfluxDB</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/influxdb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/influxdb/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install influxdb&lt;/code&gt; 以受管容器方式运行 &lt;strong&gt;InfluxDB 1.13.1 OSS&lt;/strong&gt;——单节点时序数据库，TSM 存储、InfluxQL 查询——直接跑 pgcli 自建的 &lt;code&gt;ghcr.io/mars-base/pgcli/pgcli-influxdb&lt;/code&gt; 镜像（官方 linux/amd64 发行版二进制 + Alpine）。与 VictoriaMetrics 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;，不前置任何 PostgreSQL 实例。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Pg_exporter</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/pgexporter/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/pgexporter/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install pgexporter&lt;/code&gt; 以受管容器方式运行 &lt;a href=&#34;https://pigsty.cc/docs/pg_exporter/&#34;&gt;pg_exporter&lt;/a&gt;——Pigsty 的 PostgreSQL 指标导出器——直接跑官方 &lt;code&gt;docker.io/pgsty/pg_exporter&lt;/code&gt; 镜像。&lt;a href=&#34;../nodeexporter/&#34;&gt;node_exporter&lt;/a&gt; 插件描述的是&lt;strong&gt;机器&lt;/strong&gt;，而 pg_exporter 描述的是一个&lt;strong&gt;数据库&lt;/strong&gt;：它连上某个 PostgreSQL 服务，在 &lt;code&gt;/metrics&lt;/code&gt; 上发布约 460 个 &lt;code&gt;pg_*&lt;/code&gt; 指标（活动、锁、复制、膨胀、WAL、按库统计……）。与 Prometheus、VictoriaMetrics、Grafana、node_exporter 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;：本身不依附任何实例——而是&lt;em&gt;指向&lt;/em&gt;它监控的目标。&lt;/p&gt;</description>
      </item>
    <item>
        <title>influx2tsdb</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/influx2tsdb/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/influx2tsdb/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install influx2tsdb&lt;/code&gt; 以受管容器方式运行 &lt;strong&gt;influx2tsdb-proxy 1.3.2&lt;/strong&gt;——&#xA;一个 InfluxDB 1.x HTTP API 适配器（Line Protocol 写入、InfluxQL 查询），数据落到&#xA;启用了 TimescaleDB 扩展的 PostgreSQL。镜像由 pgcli 自建：&#xA;&lt;code&gt;ghcr.io/mars-base/pgcli/pgcli-influx2tsdb&lt;/code&gt;。与 &lt;a href=&#34;https://pgcli.pages.dev/zh/docs/addon/influxdb/&#34;&gt;InfluxDB 插件&lt;/a&gt; 不同，&#xA;这里没有 TSM 引擎：每个数据点都存进 TimescaleDB hypertable，代理本身&lt;strong&gt;无状态&lt;/strong&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>ClickHouse</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/clickhouse/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/clickhouse/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install clickhouse&lt;/code&gt; 以受管容器方式运行 &lt;strong&gt;ClickHouse 26.8 LTS&lt;/strong&gt;——单机列式 OLAP 数据库——直接跑官方 &lt;code&gt;docker.io/clickhouse/clickhouse-server&lt;/code&gt; 多架构镜像。与 VictoriaMetrics、InfluxDB 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;，不前置任何 PostgreSQL 实例。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Kafka</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/kafka/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/kafka/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install kafka&lt;/code&gt; 以托管容器方式运行 &lt;strong&gt;Apache Kafka 4.4.0&lt;/strong&gt;，直接使用官方&#xA;&lt;code&gt;docker.io/apache/kafka&lt;/code&gt; 多架构镜像。Kafka 4.x 是 &lt;strong&gt;KRaft-only&lt;/strong&gt;：元数据 controller&#xA;内建在 broker 进程里（&lt;code&gt;process.roles=broker,controller&lt;/code&gt;，combined 模式），&lt;strong&gt;不安装也不依赖&#xA;ZooKeeper&lt;/strong&gt;。&lt;/p&gt;</description>
      </item>
    <item>
        <title>RabbitMQ</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/rabbitmq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/rabbitmq/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install rabbitmq&lt;/code&gt; 以托管容器方式运行 &lt;strong&gt;RabbitMQ 4.4.0&lt;/strong&gt;，直接使用官方&#xA;&lt;code&gt;docker.io/library/rabbitmq&lt;/code&gt; 的 &lt;code&gt;-management&lt;/code&gt; 镜像（内含 Web UI 与 HTTP API）。和&#xA;Kafka、ClickHouse 一样，RabbitMQ 是&lt;strong&gt;顶层插件&lt;/strong&gt;：pgcli 负责渲染 &lt;code&gt;rabbitmq.conf&lt;/code&gt;、管理&#xA;管理员账号、绑定挂载数据目录，并以 host 网络启动容器。&lt;/p&gt;</description>
      </item>
    <item>
        <title>RocketMQ</title>
        <link>https://pgcli.pages.dev/zh/docs/addon/rocketmq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgcli.pages.dev/zh/docs/addon/rocketmq/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg addon install rocketmq&lt;/code&gt; 以托管插件方式运行 &lt;strong&gt;Apache RocketMQ 5.x&lt;/strong&gt;，使用官方&#xA;&lt;code&gt;docker.io/apache/rocketmq&lt;/code&gt; 镜像。和 Kafka、ClickHouse、RabbitMQ 一样，它是&lt;strong&gt;顶层插件&lt;/strong&gt;，&#xA;不代理某个 PostgreSQL 实例。&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
