From 449e8562851a402f5c7ee6eaba81eba39a2bac8d Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Fri, 26 Jun 2026 15:23:38 -0700 Subject: [PATCH 01/14] save --- docs/enterprise_edition/autodiscovery.md | 113 +++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 docs/enterprise_edition/autodiscovery.md diff --git a/docs/enterprise_edition/autodiscovery.md b/docs/enterprise_edition/autodiscovery.md new file mode 100644 index 00000000..2220947b --- /dev/null +++ b/docs/enterprise_edition/autodiscovery.md @@ -0,0 +1,113 @@ +--- +icon: material/database-eye +--- + +# Automatic database discovery + +When deployed in front of AWS Aurora databases, PgDog can automatically detect the cluster instances and configure them in `pgdog.toml`. This is useful when Aurora uses replica autoscaling, which can add or remove instances at any time. + +## How it works + +This feature is **disabled** by default. To enable it, add at least one Aurora host to `pgdog.toml` and enable autodiscovery: + +=== "pgdog.toml" + ```toml + [[databases]] + name = "postgres" + host = "any-instance.account-id.region.rds.amazonaws.com" + + [autodiscovery] + enabled = true + ``` +=== "Helm chart" + ```yaml + databases: + - name: "postgres" + host: "any-instance.account-id.region.rds.amazonaws.com" + autodiscovery: + enabled: true + ``` + +When enabled, PgDog connects to the first available host for each database in the configuration and runs the [`aurora_replica_status()`](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora_replica_status.html) function to get the list of instances in the cluster. + +PgDog then replaces all entries in `pgdog.toml` with the discovered hosts and reloads its configuration automatically. + +### Autoscaling events + +To keep the list of databases in sync with Aurora autoscaling events, PgDog periodically queries the first available host in its config and runs the replica discovery function again. + +If the list of databases has changed, PgDog updates its config and reloads it. The interval for this check is configurable: + +=== "pgdog.toml" + ```toml + [autodiscovery] + enabled = true + check_interval = 5_000 + ``` + +=== "Helm chart" + ```yaml + autodiscovery: + enabled: true + checkInterval: 5000 + ``` + +### Filtering databases + +When enabled, autodiscovery runs for all databases in `pgdog.toml` by default. If some of your databases are not running on Aurora, or you want autodiscovery on some databases but not others, you can configure which ones it applies to: + +=== "pgdog.toml" + ```toml + [[databases]] + name = "postgres" + host = "any-instance.account-id.region.rds.amazonaws.com" + + [[databases]] + name = "staging" + host = "not-aurora.account-id.region.rds.amazonaws.com" + + [autodiscovery] + enabled = true + + [[autodiscovery.databases]] + name = "postgres" + ``` +=== "Helm chart" + ```yaml + databases: + - name: "postgres" + host: "any-instance.account-id.region.rds.amazonaws.com" + - name: "staging" + host: "not-aurora.account-id.region.rds.amazonaws.com" + autodiscovery: + enabled: true + databases: + - name: "postgres" + ``` + +In this example, only the `postgres` database will have autodiscovery enabled. + +!!! note "Configuring databases" + If you specify the `[[autodiscovery.databases]]` config, any database _not_ listed there will + not have autodiscovery enabled. + +### Replicas only + +If you're not using the read/write separation (single endpoint) feature of the [load balancer](../features/load-balancer/index.md#single-endpoint), you may want to configure read and write connection pools separately. + +To exclude the writer instance from host discovery for a read-only connection pool, set `replicas_only` in the autodiscovery database settings: + +=== "pgdog.toml" + ```toml + [[autodiscovery.databases]] + name = "prod_readonly" + replicas_only = true + ``` + +=== "Helm chart" + ```yaml + autodiscovery: + databases: + - name: "postgres" + replicasOnly: true + ``` From dd5328f75a2aec4940d697853f6b901ce678c38e Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Fri, 26 Jun 2026 20:56:32 -0700 Subject: [PATCH 02/14] prettier theme --- docs/style.css | 620 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 514 insertions(+), 106 deletions(-) diff --git a/docs/style.css b/docs/style.css index 599958f3..d17444a1 100644 --- a/docs/style.css +++ b/docs/style.css @@ -1,19 +1,308 @@ -/* ===== Custom Properties ===== */ +/* ========================================================================== + PgDog Docs Theme — ported onto MkDocs Material + Source design: "PgDog Docs Theme" (Claude Design) + A clean, modern docs look: PgDog brand blue, tight bold headings, subtle + borders, soft-tinted admonitions and rounded code blocks — layered on top + of Material so content tabs, card grids, search and instant-nav keep working. + ========================================================================== */ + +/* ===== Shared tokens ===== */ :root { - --card-border-radius: 8px; - --card-padding: 1.2rem; + --pg-radius: 10px; + --pg-radius-lg: 12px; --transition-speed: 0.2s; + --card-border-radius: 10px; + --card-padding: 1.2rem; +} + +/* -------------------------------------------------------------------------- + Light scheme → bind PgDog tokens onto Material's palette variables + -------------------------------------------------------------------------- */ +[data-md-color-scheme="default"] { + --pg-bg: #ffffff; + --pg-bg-subtle: #f7f8fa; + --pg-bg-code: #eceef2; + --pg-text: #1b1c21; + --pg-muted: #5c616b; + --pg-faint: #9aa0ab; + --pg-border: #ebecef; + --pg-border-strong: #e0e2e6; + --pg-accent: #3f6fe8; + --pg-accent-soft: rgba(63, 111, 232, 0.10); + --pg-hover: rgba(16, 17, 20, 0.045); + --pg-amber: #b5791b; --pg-amber-bg: rgba(217, 149, 40, 0.11); --pg-amber-bd: rgba(217, 149, 40, 0.40); + --pg-green: #1f8a5b; --pg-green-bg: rgba(31, 138, 91, 0.10); --pg-green-bd: rgba(31, 138, 91, 0.35); + --pg-red: #c0392b; --pg-red-bg: rgba(192, 57, 43, 0.09); --pg-red-bd: rgba(192, 57, 43, 0.35); + + /* Material core palette */ + --md-default-bg-color: var(--pg-bg); + --md-default-fg-color: var(--pg-text); + --md-default-fg-color--light: var(--pg-muted); + --md-default-fg-color--lighter: var(--pg-faint); + --md-default-fg-color--lightest: var(--pg-border); + --md-primary-fg-color: var(--pg-accent); + --md-primary-fg-color--light: var(--pg-accent); + --md-primary-fg-color--dark: var(--pg-accent); + --md-primary-bg-color: #ffffff; + --md-primary-bg-color--light: rgba(255, 255, 255, 0.7); + --md-accent-fg-color: var(--pg-accent); + --md-accent-fg-color--transparent: var(--pg-accent-soft); + --md-typeset-a-color: var(--pg-accent); + --md-code-bg-color: var(--pg-bg-code); + --md-code-fg-color: var(--pg-text); + + /* Code syntax highlighting — restrained design palette */ + --md-code-hl-keyword-color: #3f6fe8; + --md-code-hl-string-color: #3ba776; + --md-code-hl-number-color: #b5791b; + --md-code-hl-comment-color: #9aa0ab; + --md-code-hl-constant-color: #b5791b; + --md-code-hl-name-color: var(--pg-text); + --md-code-hl-function-color: var(--pg-text); + --md-code-hl-operator-color: var(--pg-muted); + --md-code-hl-punctuation-color: var(--pg-muted); + --md-code-hl-variable-color: var(--pg-text); + --md-code-hl-special-color: #c0392b; + --md-code-hl-generic-color: var(--pg-faint); +} + +/* -------------------------------------------------------------------------- + Dark scheme (slate) → PgDog blue accent on near-black + -------------------------------------------------------------------------- */ +[data-md-color-scheme="slate"] { + --pg-bg: #0d0e12; + --pg-bg-subtle: #14161b; + --pg-bg-code: #16181e; + --pg-text: #e9eaee; + --pg-muted: #979ca6; + --pg-faint: #666b75; + --pg-border: #22242b; + --pg-border-strong: #2c2f37; + --pg-accent: #7aa2ff; + --pg-accent-soft: rgba(122, 162, 255, 0.16); + --pg-hover: rgba(255, 255, 255, 0.05); + --pg-amber: #e0b463; --pg-amber-bg: rgba(224, 180, 99, 0.10); --pg-amber-bd: rgba(224, 180, 99, 0.32); + --pg-green: #4fcf94; --pg-green-bg: rgba(79, 207, 148, 0.10); --pg-green-bd: rgba(79, 207, 148, 0.30); + --pg-red: #f0857a; --pg-red-bg: rgba(240, 133, 122, 0.10); --pg-red-bd: rgba(240, 133, 122, 0.30); + + --md-default-bg-color: var(--pg-bg); + --md-default-fg-color: var(--pg-text); + --md-default-fg-color--light: var(--pg-muted); + --md-default-fg-color--lighter: var(--pg-faint); + --md-default-fg-color--lightest: var(--pg-border); + --md-primary-fg-color: var(--pg-accent); + --md-primary-fg-color--light: var(--pg-accent); + --md-primary-fg-color--dark: var(--pg-accent); + --md-primary-bg-color: var(--pg-text); + --md-primary-bg-color--light: var(--pg-muted); + --md-accent-fg-color: var(--pg-accent); + --md-accent-fg-color--transparent: var(--pg-accent-soft); + --md-typeset-a-color: var(--pg-accent); + --md-code-bg-color: var(--pg-bg-code); + --md-code-fg-color: var(--pg-text); + + --md-code-hl-keyword-color: #7aa2ff; + --md-code-hl-string-color: #5fcf94; + --md-code-hl-number-color: #e0b463; + --md-code-hl-comment-color: #666b75; + --md-code-hl-constant-color: #e0b463; + --md-code-hl-name-color: var(--pg-text); + --md-code-hl-function-color: var(--pg-text); + --md-code-hl-operator-color: var(--pg-muted); + --md-code-hl-punctuation-color: var(--pg-muted); + --md-code-hl-variable-color: var(--pg-text); + --md-code-hl-special-color: #f0857a; + --md-code-hl-generic-color: var(--pg-faint); } /* ===== Header ===== */ +/* Flat header: page background + a hairline border, like the design. */ .md-header { - --md-primary-fg-color: rgb(7, 81, 207); + background-color: var(--pg-bg); + color: var(--pg-text); + border-bottom: 1px solid var(--pg-border); + box-shadow: none; + -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); } +.md-header[data-md-state="shadow"], +.md-header--shadow { + box-shadow: none; +} +.md-header__title { + color: var(--pg-text); + font-weight: 700; + letter-spacing: -0.3px; +} +.md-header__button.md-icon, +.md-header__source { + color: var(--pg-muted); +} +.md-header__button.md-icon:hover { + color: var(--pg-text); + opacity: 1; +} + +/* Search box in the header — subtle pill, like the design's search button. */ +.md-search__form { + background-color: var(--pg-bg-subtle); + border: 1px solid var(--pg-border); + border-radius: 10px; + box-shadow: none; +} +.md-search__form:hover { + background-color: var(--pg-bg-subtle); + border-color: var(--pg-border-strong); +} +[data-md-toggle="search"]:checked ~ .md-header .md-search__form { + border-color: var(--pg-border-strong); +} +.md-search__input { + color: var(--pg-text); +} +.md-search__input::placeholder { + color: var(--pg-faint); +} +.md-search__icon { + color: var(--pg-faint); +} -[data-md-color-scheme="slate"] .md-header { - --md-primary-fg-color: rgb(30, 58, 138); - background-color: hsla(230, 15%, 14%, 0.85); +/* ===== Typography ===== */ +.md-typeset { + font-size: 0.8rem; + line-height: 1.75; + color: var(--pg-text); +} +.md-typeset h1 { + font-size: 1.9rem; + font-weight: 800; + letter-spacing: -0.03em; + line-height: 1.14; + color: var(--pg-text); + margin: 0 0 0.8rem; +} +.md-typeset h2 { + font-size: 1.25rem; + font-weight: 700; + letter-spacing: -0.02em; + margin: 2.2rem 0 0.7rem; +} +.md-typeset h3 { + font-size: 0.95rem; + font-weight: 700; + letter-spacing: -0.01em; + margin: 1.6rem 0 0.5rem; +} +.md-typeset h4 { + font-size: 0.82rem; + font-weight: 700; +} +.md-typeset a { + color: var(--pg-accent); + text-decoration: none; + font-weight: 500; +} +.md-typeset a:hover { + text-decoration: underline; + text-underline-offset: 3px; +} +.md-typeset hr { + border-bottom: 1px solid var(--pg-border); +} +.md-typeset blockquote { + border-left: 3px solid var(--pg-border-strong); + color: var(--pg-muted); +} + +/* ===== Sidebar navigation ===== */ +.md-nav { + font-size: 0.7rem; +} +/* Breathing room below the "PgDog" title before the first menu item. */ +.md-sidebar--primary .md-nav__title { + padding-bottom: 1rem; +} +/* Slightly larger left-menu text at every nesting level (the right-hand TOC, + which lives in the secondary sidebar, keeps the base size). rem avoids the + size compounding as nav levels nest. */ +.md-sidebar--primary .md-nav { + font-size: 0.8rem; +} +.md-nav__link { + border-radius: 8px; + padding: 0.3rem 0.55rem; + margin: 1px 0; + color: var(--pg-muted); + transition: background var(--transition-speed) ease, color var(--transition-speed) ease; +} +/* Expandable sections wrap an inner link + arrow in a .md-nav__link container. + Reset the nested link's padding (Material does this) so the text lines up + with leaf links instead of getting doubled-up left offset. */ +.md-nav__link > .md-nav__link { + padding: 0; + margin: 0; +} +.md-nav__link:focus, +.md-nav__link:hover { + background-color: var(--pg-hover); + color: var(--pg-text); +} +.md-nav__item .md-nav__link--active, +.md-nav__link--active { + color: var(--pg-accent); + background-color: var(--pg-accent-soft); + font-weight: 650; +} +/* For expandable sections the active link is the zero-padded inner link, which + would make the highlight pill too thin. Move the highlight to the container, + which keeps the full row padding and the correct left edge. */ +.md-nav__container:has(> .md-nav__link--active) { + background-color: var(--pg-accent-soft); + border-radius: 8px; + font-weight: 650; +} +.md-nav__container > .md-nav__link--active { + background-color: transparent; +} +/* Top-level section labels: small uppercase, like the design's nav groups. */ +.md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link, +.md-nav--primary > .md-nav__list > .md-nav__item > label.md-nav__link { + text-transform: uppercase; + font-size: 0.62rem; + font-weight: 700; + letter-spacing: 0.07em; + color: var(--pg-faint); + background: transparent; + margin-top: 0.6rem; +} +.md-nav__item--section > .md-nav__link:hover { + background: transparent; + color: var(--pg-faint); +} + +/* ===== Table of contents (right rail) ===== */ +.md-nav--secondary .md-nav__title { + text-transform: uppercase; + font-size: 0.62rem; + font-weight: 700; + letter-spacing: 0.07em; + color: var(--pg-faint); +} +.md-nav--secondary .md-nav__link { + border-left: 2px solid var(--pg-border); + border-radius: 0; + padding-left: 0.8rem; + margin: 1px 0; +} +.md-nav--secondary .md-nav__link:hover { + background: transparent; + color: var(--pg-text); +} +.md-nav--secondary .md-nav__link--active { + background: transparent; + border-left-color: var(--pg-accent); + color: var(--pg-accent); + font-weight: 600; } /* ===== Tables ===== */ @@ -21,143 +310,267 @@ table { table-layout: fixed !important; display: table !important; } - .md-typeset table:not([class]) { - border-radius: var(--card-border-radius); + border-radius: var(--pg-radius); overflow: hidden; - border: 1px solid var(--md-default-fg-color--lightest); - font-size: 0.75rem; + border: 1px solid var(--pg-border); + font-size: 0.76rem; + box-shadow: none; } - .md-typeset table:not([class]) th { - background-color: var(--md-default-fg-color--lightest); + background-color: var(--pg-bg-subtle); + color: var(--pg-text); + font-weight: 650; + border-bottom: 1px solid var(--pg-border-strong); +} +.md-typeset table:not([class]) td { + border-top: 1px solid var(--pg-border); +} + +/* ===== Code blocks ===== */ +.md-typeset pre > code { + border-radius: var(--pg-radius-lg); +} +.md-typeset .highlight { + border-radius: var(--pg-radius-lg); + overflow: hidden; + border: 1px solid var(--pg-border); +} +.md-typeset .highlight > pre, +.md-typeset pre { + margin: 0; +} +/* Titled code blocks: the filename's default margin-top can't collapse inside + our bordered, overflow-hidden container, leaving an empty gap above it. + Pin it flush so the title sits at the top of the block. */ +.md-typeset .highlight > .filename { + margin-top: 0; +} +/* Language label shown by pymdownx.highlight */ +.md-typeset .highlight [data-md-annotation-id], +.md-typeset .highlighttable .linenos { + background: var(--pg-bg-subtle); +} +/* Code blocks: a touch smaller than body text. */ +.md-typeset pre > code, +.md-typeset .highlight code, +.md-typeset .md-code__content { + font-size: 0.72rem; +} + +/* ===== Inline code ===== */ +.md-typeset :not(pre) > code { + font-size: 0.9em; + padding: 0.1em 0.4em; + border-radius: 6px; + background-color: var(--pg-bg-code); + border: 1px solid var(--pg-border); + color: var(--pg-text); +} +/* Inline code reads small, so give it a bit more contrast on the light theme. */ +[data-md-color-scheme="default"] .md-typeset :not(pre) > code { + background-color: #e6e8ee; + border-color: var(--pg-border-strong); +} + +/* ===== Admonitions ===== */ +/* Whole block softly tinted, 3px colored left border, colored title. */ +.md-typeset .admonition, +.md-typeset details { + border: 1px solid var(--pg-border); + border-left: 3px solid var(--pg-accent); + border-radius: var(--pg-radius); + background-color: var(--pg-accent-soft); + box-shadow: none; + font-size: 0.76rem; +} +.md-typeset .admonition-title, +.md-typeset summary { + background-color: transparent !important; + color: var(--pg-accent); + font-weight: 700; + border: none; +} +.md-typeset .admonition-title::before, +.md-typeset summary::before { + background-color: var(--pg-accent); +} + +/* warning family → amber */ +.md-typeset .admonition.warning, +.md-typeset .admonition.caution, +.md-typeset .admonition.attention, +.md-typeset details.warning, +.md-typeset details.caution { + background-color: var(--pg-amber-bg); + border-color: var(--pg-amber-bd); + border-left-color: var(--pg-amber); +} +.md-typeset .warning > .admonition-title, +.md-typeset .caution > .admonition-title, +.md-typeset .attention > .admonition-title, +.md-typeset .warning > summary, +.md-typeset .caution > summary { + color: var(--pg-amber); +} +.md-typeset .warning > .admonition-title::before, +.md-typeset .caution > .admonition-title::before, +.md-typeset .attention > .admonition-title::before, +.md-typeset .warning > summary::before, +.md-typeset .caution > summary::before { + background-color: var(--pg-amber); +} + +/* success / tip-as-success family → green */ +.md-typeset .admonition.success, +.md-typeset .admonition.check, +.md-typeset .admonition.done, +.md-typeset details.success { + background-color: var(--pg-green-bg); + border-color: var(--pg-green-bd); + border-left-color: var(--pg-green); +} +.md-typeset .success > .admonition-title, +.md-typeset .check > .admonition-title, +.md-typeset .done > .admonition-title, +.md-typeset .success > summary { + color: var(--pg-green); +} +.md-typeset .success > .admonition-title::before, +.md-typeset .check > .admonition-title::before, +.md-typeset .done > .admonition-title::before, +.md-typeset .success > summary::before { + background-color: var(--pg-green); +} + +/* danger family → red */ +.md-typeset .admonition.danger, +.md-typeset .admonition.error, +.md-typeset .admonition.failure, +.md-typeset .admonition.bug, +.md-typeset details.danger, +.md-typeset details.error, +.md-typeset details.bug { + background-color: var(--pg-red-bg); + border-color: var(--pg-red-bd); + border-left-color: var(--pg-red); +} +.md-typeset .danger > .admonition-title, +.md-typeset .error > .admonition-title, +.md-typeset .failure > .admonition-title, +.md-typeset .bug > .admonition-title, +.md-typeset .danger > summary, +.md-typeset .error > summary, +.md-typeset .bug > summary { + color: var(--pg-red); +} +.md-typeset .danger > .admonition-title::before, +.md-typeset .error > .admonition-title::before, +.md-typeset .failure > .admonition-title::before, +.md-typeset .bug > .admonition-title::before, +.md-typeset .danger > summary::before, +.md-typeset .error > summary::before, +.md-typeset .bug > summary::before { + background-color: var(--pg-red); +} + +/* ===== Content tabs (pymdownx.tabbed) ===== */ +.md-typeset .tabbed-labels > label { + font-size: 0.7rem; font-weight: 600; - text-transform: uppercase; - font-size: 0.65rem; - letter-spacing: 0.05em; + color: var(--pg-muted); +} +.md-typeset .tabbed-set > input:checked + label { + color: var(--pg-accent); +} +.md-typeset .tabbed-labels { + box-shadow: inset 0 -1px var(--pg-border); } /* ===== Screenshots ===== */ .screenshot { - border-radius: var(--card-border-radius); - border: 1px solid var(--md-default-fg-color--lightest); + border-radius: var(--pg-radius); + border: 1px solid var(--pg-border); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } -/* ===== Theme-aware Images ===== */ +/* ===== Theme-aware images ===== */ .theme-aware-image { filter: contrast(1.04) saturate(1.08); } - [data-md-color-scheme="slate"] .theme-aware-image { filter: invert(1) hue-rotate(180deg) contrast(1.12) saturate(1.05); } -/* ===== Card Grid ===== */ +/* ===== Card grid (card_grid / next_steps_links macros) ===== */ .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; margin: 1.5rem 0; } - .grid > div { padding: var(--card-padding); - border: 1px solid var(--md-default-fg-color--lightest); - border-radius: var(--card-border-radius); - transition: all var(--transition-speed) ease; + border: 1px solid var(--pg-border); + border-radius: var(--pg-radius-lg); background: var(--md-default-bg-color); + transition: border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease, transform var(--transition-speed) ease; } - .grid > div:hover { - border-color: var(--md-primary-fg-color); + border-color: var(--pg-accent); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); transform: translateY(-2px); } - +.grid > div .card-icon { + font-size: 1.6rem; + margin-bottom: 0.5rem; + display: block; +} .grid > div h4 { margin: 0 0 0.5rem 0; - font-size: 0.9rem; + font-size: 0.85rem; } - .grid > div h4 a { - color: var(--md-primary-fg-color); + color: var(--pg-accent); text-decoration: none; - font-weight: 600; + font-weight: 650; } - .grid > div p { margin: 0; - font-size: 0.82rem; - color: var(--md-default-fg-color--light); - line-height: 1.5; -} - -/* ===== Code Blocks ===== */ -.md-typeset pre > code { - border-radius: var(--card-border-radius); -} - -.md-typeset code { - border-radius: 4px; - font-size: 0.82em; -} - -.md-typeset .highlight { - border-radius: var(--card-border-radius); - overflow: hidden; -} - -/* ===== Inline Code ===== */ -.md-typeset :not(pre) > code { - padding: 0.1em 0.4em; - background-color: var(--md-code-bg-color); - border: 1px solid var(--md-default-fg-color--lightest); -} - -/* ===== Admonitions ===== */ -.md-typeset .admonition, -.md-typeset details { - border-radius: var(--card-border-radius); - border-width: 0 0 0 4px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05); + font-size: 0.78rem; + color: var(--pg-muted); + line-height: 1.55; } -/* ===== Navigation ===== */ -.md-nav__item .md-nav__link--active { - font-weight: 600; -} - -/* ===== Content Width ===== */ +/* ===== Content width & footer ===== */ .md-grid { max-width: 1400px; } - -/* ===== Footer ===== */ .md-footer { margin-top: 2rem; } +.md-footer-meta { + background-color: var(--pg-bg-subtle); +} -/* ===== Hero Section (homepage) ===== */ +/* ===== Hero section (homepage) ===== */ .hero { text-align: center; padding: 2rem 0 1rem; } - .hero h1 { font-size: 2.2rem; - font-weight: 700; + font-weight: 800; + letter-spacing: -0.03em; margin-bottom: 0.5rem; } - .hero p { font-size: 1.1rem; - color: var(--md-default-fg-color--light); + color: var(--pg-muted); max-width: 640px; margin: 0 auto 1.5rem; line-height: 1.6; } - .hero .hero-buttons { display: flex; gap: 0.75rem; @@ -165,58 +578,53 @@ table { flex-wrap: wrap; margin-bottom: 1rem; } - .hero .hero-buttons a { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.6rem 1.4rem; - border-radius: 6px; + border-radius: 8px; font-weight: 600; font-size: 0.88rem; text-decoration: none; transition: all var(--transition-speed) ease; } - .hero .hero-buttons .btn-primary { - background-color: var(--md-primary-fg-color); - color: var(--md-primary-bg-color); + background-color: var(--pg-accent); + color: #ffffff; } - .hero .hero-buttons .btn-primary:hover { - opacity: 0.9; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + opacity: 0.92; + box-shadow: 0 4px 12px rgba(63, 111, 232, 0.3); } - .hero .hero-buttons .btn-secondary { - border: 1px solid var(--md-default-fg-color--lighter); - color: var(--md-default-fg-color); + border: 1px solid var(--pg-border-strong); + color: var(--pg-text); } - .hero .hero-buttons .btn-secondary:hover { - border-color: var(--md-primary-fg-color); - color: var(--md-primary-fg-color); + border-color: var(--pg-accent); + color: var(--pg-accent); } -/* ===== Feature Cards (icons) ===== */ -.grid > div .card-icon { - font-size: 1.6rem; - margin-bottom: 0.5rem; - display: block; +/* ===== Responsive ===== */ +/* Material bumps the root font-size up on wide viewports (137.5% at 100em, + 150% at 125em). Pin it to the base size so text stays consistent across + widths instead of growing on large displays. */ +@media screen and (min-width: 100em) { + html { + font-size: 125%; + } } - -/* ===== Tabs ===== */ -.md-typeset .tabbed-labels > label { - font-size: 0.75rem; - font-weight: 600; +@media screen and (min-width: 125em) { + html { + font-size: 125%; + } } -/* ===== Responsive ===== */ @media screen and (max-width: 76.25em) { .hero h1 { font-size: 1.6rem; } - .hero p { font-size: 0.95rem; } From 22f1461e66ee842d577e51012412071cdfc93b5e Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 10:30:46 -0700 Subject: [PATCH 03/14] new style --- docs/images/logo-blue-64x64.png | Bin 0 -> 542 bytes docs/style.css | 98 +++++++++++++++++++++++++++++--- 2 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 docs/images/logo-blue-64x64.png diff --git a/docs/images/logo-blue-64x64.png b/docs/images/logo-blue-64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..37f74b308ac7c2b292f86c65cade43f750ca8eb7 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^jzH|d#0(@Yj(#czQVPi)LB0$ORcZ_j4J`}|zkosw zFBlj~4Hy_+B``2p&0t^G*YM=iCh=9CpuNtNUDaMi@zhDN3XE)M7 zoFs2|7p64sniP=o0*^?b6?)1b%viD1z6>bHUgGKN%KnN?T98L}AxkXCAk`Arh?11V zl2ohYqEsNoU}RuqrfXoPYiJx|U}R-vVP$BnZD3$!U@*H%ZY_$2-29Zxv`X9>Ua2n= z1ZvQL+fb63n_66wm|FnXV`Ls;Xl`W)w8s)+iCkOGS)iUXo-U3d7N@sf_7*yRf zQNZ%vIsbvvyZWiCE*|i|~pVdps4n7hs&6#vn_GVsb<7XVhmUXYui#es$zbNpQ@I?8R zg<@~|@6WK^>Sf10siw*0<(=dHo#o7Oa}Ug$CoJe9XLMP^wQlG6$Gm56FADV9vs47= OF9uInKbLh*2~7ZlbhZWn literal 0 HcmV?d00001 diff --git a/docs/style.css b/docs/style.css index d17444a1..304cd9b2 100644 --- a/docs/style.css +++ b/docs/style.css @@ -53,9 +53,9 @@ /* Code syntax highlighting — restrained design palette */ --md-code-hl-keyword-color: #3f6fe8; - --md-code-hl-string-color: #3ba776; + --md-code-hl-string-color: #2c8a60; --md-code-hl-number-color: #b5791b; - --md-code-hl-comment-color: #9aa0ab; + --md-code-hl-comment-color: #6e7480; --md-code-hl-constant-color: #b5791b; --md-code-hl-name-color: var(--pg-text); --md-code-hl-function-color: var(--pg-text); @@ -104,7 +104,7 @@ --md-code-hl-keyword-color: #7aa2ff; --md-code-hl-string-color: #5fcf94; --md-code-hl-number-color: #e0b463; - --md-code-hl-comment-color: #666b75; + --md-code-hl-comment-color: #8a8f99; --md-code-hl-constant-color: #e0b463; --md-code-hl-name-color: var(--pg-text); --md-code-hl-function-color: var(--pg-text); @@ -134,10 +134,40 @@ font-weight: 700; letter-spacing: -0.3px; } +/* Sit the title right next to the logo. Material's margin lives on a + [dir=ltr]-scoped rule, so match its specificity; also trim the logo button's + right padding/margin. */ +.md-header .md-header__title { + margin-left: 0.3rem; +} +.md-header .md-header__button.md-logo { + margin-right: 0; + padding-right: 0; +} +/* The logo PNG is white (made for the original dark header). On the light-mode + top bar that makes it invisible, so swap in a blue-recolored copy. */ +[data-md-color-scheme="default"] .md-header__button.md-logo img { + content: url("/images/logo-blue-64x64.png"); +} .md-header__button.md-icon, .md-header__source { color: var(--pg-muted); } +/* Light mode: darken the GitHub icon, repo name and stats (they inherit a + mid-grey and the facts are dimmed to 75% by default). */ +[data-md-color-scheme="default"] .md-header__source { + color: var(--pg-text); +} +[data-md-color-scheme="default"] .md-source__facts { + opacity: 0.85; +} +/* Dark mode: brighten the GitHub icon, repo name and stats. */ +[data-md-color-scheme="slate"] .md-header__source { + color: var(--pg-text); +} +[data-md-color-scheme="slate"] .md-source__facts { + opacity: 0.85; +} .md-header__button.md-icon:hover { color: var(--pg-text); opacity: 1; @@ -154,6 +184,16 @@ background-color: var(--pg-bg-subtle); border-color: var(--pg-border-strong); } +/* Dark mode: lift the search box off the near-black header so it's prominent. */ +[data-md-color-scheme="slate"] .md-search__form { + background-color: #1c2029; + border-color: #353a45; +} +[data-md-color-scheme="slate"] .md-search__form:hover, +[data-md-color-scheme="slate"] [data-md-toggle="search"]:checked ~ .md-header .md-search__form { + background-color: #222632; + border-color: var(--pg-accent); +} [data-md-toggle="search"]:checked ~ .md-header .md-search__form { border-color: var(--pg-border-strong); } @@ -166,6 +206,10 @@ .md-search__icon { color: var(--pg-faint); } +/* Light mode: the magnifier defaults to white (header context) — make it dark. */ +[data-md-color-scheme="default"] .md-search__icon { + color: var(--pg-text); +} /* ===== Typography ===== */ .md-typeset { @@ -218,9 +262,12 @@ .md-nav { font-size: 0.7rem; } -/* Breathing room below the "PgDog" title before the first menu item. */ +/* Breathing room below the "PgDog" title before the first menu item. + Also drop Material's bg-colored box-shadow glow on the sticky title, which + bleeds onto the first item as an odd fade (the title bg is already solid). */ .md-sidebar--primary .md-nav__title { padding-bottom: 1rem; + box-shadow: none; } /* Slightly larger left-menu text at every nesting level (the right-hand TOC, which lives in the secondary sidebar, keeps the base size). rem avoids the @@ -247,6 +294,14 @@ background-color: var(--pg-hover); color: var(--pg-text); } +/* Consistent, scheme-aware contrast for every left-menu AND right-TOC item + (links and expandable section labels alike): --pg-text is near-black in light + mode and near-white in dark mode. Active links keep the accent; the uppercase + top-level group labels stay faint via their higher-specificity rule below. */ +.md-sidebar--primary .md-nav__link:not(.md-nav__link--active), +.md-sidebar--secondary .md-nav__link:not(.md-nav__link--active) { + color: var(--pg-text); +} .md-nav__item .md-nav__link--active, .md-nav__link--active { color: var(--pg-accent); @@ -329,10 +384,10 @@ table { /* ===== Code blocks ===== */ .md-typeset pre > code { - border-radius: var(--pg-radius-lg); + border-radius: 0; } .md-typeset .highlight { - border-radius: var(--pg-radius-lg); + border-radius: 0; overflow: hidden; border: 1px solid var(--pg-border); } @@ -373,13 +428,28 @@ table { border-color: var(--pg-border-strong); } +/* Monospace text WITHOUT the inline-code box (no background / border). + Usage in Markdown (attr_list + md_in_html are enabled): + some text + Or strip the box off real inline code: `text`{ .mono } */ +.md-typeset .mono, +.md-typeset code.mono { + font-family: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace; +} +.md-typeset code.mono { + background: none; + border: none; + padding: 0; + font-size: 0.9em; +} + /* ===== Admonitions ===== */ /* Whole block softly tinted, 3px colored left border, colored title. */ .md-typeset .admonition, .md-typeset details { border: 1px solid var(--pg-border); border-left: 3px solid var(--pg-accent); - border-radius: var(--pg-radius); + border-radius: 0; background-color: var(--pg-accent-soft); box-shadow: none; font-size: 0.76rem; @@ -549,8 +619,20 @@ table { .md-footer { margin-top: 2rem; } +/* Light mode: Material's footer (prev/next nav bar) is dark in both schemes. + Make it a light, subtle bar with dark text. */ +[data-md-color-scheme="default"] .md-footer { + --md-footer-bg-color: var(--pg-bg-subtle); + --md-footer-bg-color--dark: var(--pg-bg-subtle); + --md-footer-fg-color: var(--pg-text); + --md-footer-fg-color--light: var(--pg-muted); + --md-footer-fg-color--lighter: var(--pg-faint); + color: var(--pg-text); + border-top: 1px solid var(--pg-border); +} +/* Hide the bottom meta bar ("Made with MkDocs" + social/GitHub icons). */ .md-footer-meta { - background-color: var(--pg-bg-subtle); + display: none; } /* ===== Hero section (homepage) ===== */ From 96f843c88f33e5c7d892b33addbedb68b643324e Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 10:32:47 -0700 Subject: [PATCH 04/14] save --- docs/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/style.css b/docs/style.css index 304cd9b2..a5dcf79e 100644 --- a/docs/style.css +++ b/docs/style.css @@ -70,7 +70,7 @@ Dark scheme (slate) → PgDog blue accent on near-black -------------------------------------------------------------------------- */ [data-md-color-scheme="slate"] { - --pg-bg: #0d0e12; + --pg-bg: #111318; --pg-bg-subtle: #14161b; --pg-bg-code: #16181e; --pg-text: #e9eaee; From 088ead03a1bce90a32e68a22e6c6d4e5dba945f0 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 10:45:31 -0700 Subject: [PATCH 05/14] save --- docs/features/transaction-mode.md | 6 ++++++ docs/style.css | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/docs/features/transaction-mode.md b/docs/features/transaction-mode.md index 81d1e355..3ebf55c2 100644 --- a/docs/features/transaction-mode.md +++ b/docs/features/transaction-mode.md @@ -27,6 +27,7 @@ Transaction mode is **enabled** by default. This is controllable via configurati [general] pooler_mode = "transaction" ``` +
```yaml title="Helm chart" poolerMode: transaction ``` @@ -37,6 +38,7 @@ Transaction mode is **enabled** by default. This is controllable via configurati host = "127.0.0.1" pooler_mode = "transaction" ``` +
```yaml title="Helm chart" databases: - name: prod @@ -50,6 +52,7 @@ Transaction mode is **enabled** by default. This is controllable via configurati database = "prod" pooler_mode = "transaction" ``` +
```yaml title="Helm chart" users: - name: alice @@ -145,6 +148,7 @@ To use statement mode, you can configure it globally or per user/database, for e [general] pooler_mode = "statement" ``` +
```yaml title="Helm chart" poolerMode: statement ``` @@ -155,6 +159,7 @@ To use statement mode, you can configure it globally or per user/database, for e host = "127.0.0.1" pooler_mode = "statement" ``` +
```yaml title="Helm chart" databases: - name: prod @@ -168,6 +173,7 @@ To use statement mode, you can configure it globally or per user/database, for e database = "prod" pooler_mode = "statement" ``` +
```yaml title="Helm chart" users: - name: alice diff --git a/docs/style.css b/docs/style.css index a5dcf79e..c68e095c 100644 --- a/docs/style.css +++ b/docs/style.css @@ -246,6 +246,20 @@ text-decoration: none; font-weight: 500; } +/* Keep links bold when wrapped in **bold** (our 500 weight was overriding it). */ +.md-typeset strong a, +.md-typeset a strong { + font-weight: 700; +} +/* Links inside headings should take the heading's weight, not the link 500. */ +.md-typeset h1 a, +.md-typeset h2 a, +.md-typeset h3 a, +.md-typeset h4 a, +.md-typeset h5 a, +.md-typeset h6 a { + font-weight: inherit; +} .md-typeset a:hover { text-decoration: underline; text-underline-offset: 3px; @@ -400,6 +414,7 @@ table { Pin it flush so the title sits at the top of the block. */ .md-typeset .highlight > .filename { margin-top: 0; + border-bottom: 1px solid color-mix(in srgb, var(--pg-faint) 35%, var(--pg-border-strong)); } /* Language label shown by pymdownx.highlight */ .md-typeset .highlight [data-md-annotation-id], From 263cda056db18262f2dce613bb4342bb239c1e80 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 17:30:59 -0700 Subject: [PATCH 06/14] rewrite auth --- docs/features/authentication.md | 175 +++++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 37 deletions(-) diff --git a/docs/features/authentication.md b/docs/features/authentication.md index b2a82c79..1649ce95 100644 --- a/docs/features/authentication.md +++ b/docs/features/authentication.md @@ -5,12 +5,12 @@ icon: material/login PostgreSQL servers support many authentication mechanisms. PgDog supports a subset of those, with the aim to support all of them over time. Since PostgreSQL 14, `scram-sha-256` is widely used to encrypt passwords and PgDog supports this algorithm for both client and server connections. -Authentication is **enabled** by default. Applications connecting to PgDog must provide a username and password which is configured in [`users.toml`](../configuration/users.toml/users.md). +Authentication is **enabled** by default. Applications connecting to PgDog must provide a username and password, configured in [`users.toml`](../configuration/users.toml/users.md). ## Supported methods -PgDog implements a subset of authentication methods supported by Postgres. We're continuously working on adding more. The following table summarizes which algorithms are supported for client and server connections. +PgDog implements a subset of authentication methods supported by Postgres and some others which are commonly used in the industry. The following table summarizes the current level of support for client and server connection authentication methods: | Authentication method | Client connections | Server connections | |-|-|-| @@ -19,11 +19,16 @@ PgDog implements a subset of authentication methods supported by Postgres. We're | `md5` | :material-check-circle-outline: | :material-check-circle-outline: | | `plain` | :material-check-circle-outline: | :material-check-circle-outline: | | `trust` | :material-check-circle-outline: | :material-check-circle-outline: | -| [AWS IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) | No | :material-check-circle-outline: | +| [AWS RDS IAM](#rds-iam-authentication) | No | :material-check-circle-outline: | +| [Azure Workload Identity](#azure-workload-identity-authentication) | No | :material-check-circle-outline: | -### Client authentication +!!! note "Contributions" + PgDog is an open source project. If you'd like to add an authentication method we don't currently support, + please [open an issue](https://github.com/pgdogdev/pgdog/issues) to discuss. -By default, client connections will use `scram-sha-256` for password encryption during the authentication handshake. This method is secure and recommended in production. PgDog does support using others, and you can change it with configuration: +## Client authentication + +By default, client connections will use password authentication encrypted with `scram-sha-256`. This method is secure and recommended for production usage. PgDog supports using other methods, e.g., `md5` and `plain`, which you can change it with configuration: === "pgdog.toml" ```toml @@ -35,38 +40,49 @@ By default, client connections will use `scram-sha-256` for password encryption authType: scram ``` -Available options currently are: +The following password authentication algorithms are available for client connections: + +| Configuration | Description | +|-|-| +| `scram` | The most secure password encryption, used by default in PostgreSQL. | +| `md5` | Deprecated and insecure, but an order of magnitude faster than SCRAM. Still commonly used with connection poolers (e.g., pgbouncer). | +| `plain` | No encryption is used and the password is sent as-is. Commonly used with TLS-encrypted connections. | +| `trust` | Disables password authentication and allows all users to login. | -- `scram` (SCRAM-SHA-256) -- `md5` -- `plain` -- `trust` (No authentication) -!!! note "SCRAM overhead" - The SCRAM-SHA-256 algorithm is computationally expensive and will use a considerable amount of CPU time. This is by design, in order to make it difficult to brute-force. However, if your application is frequently creating new connections to the database, like serverless apps running on Vercel or Cloudflare workers, this could also have a latency impact. +### SCRAM performance + +The SCRAM-SHA-256 algorithm is computationally expensive and will use a considerable amount of CPU time. This is by design so it makes it difficult to brute-force. However, if your application is frequently creating new connections to the database, like serverless apps running on Vercel, Cloudflare workers, etc., this could also have a latency impact. - If your application is affected by this, consider enabling [TLS](tls.md) and `plain` authentication method instead. Modern CPUs implement TLS algorithms in hardware which makes them pretty efficient and fast. +If your application is affected by this, consider enabling [TLS](tls.md) and using the `plain` authentication method instead. Modern CPUs implement TLS algorithms in hardware which makes them efficient and fast. + +## Server authentication -### Server authentication +The server authentication method is controlled by PostgreSQL. PgDog will use whatever method Postgres requests during connection creation, which is configurable in the [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file on the server. -Server authentication method is controlled by PostgreSQL. PgDog will use whatever method Postgres requests during connection creation, which is configurable in [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html). +PgDog currently supports four (4) authentication methods for server connections: -PgDog currently supports three authentication methods for server connections: +| Method | Description | +|-|-| +| Password authentication | PgDog sends the password using one of the supported [password encryption](#client-authentication) algorithms. | +| [AWS RDS IAM](#rds-iam-authentication) | PgDog requests a temporary password from AWS IAM and uses that for password authentication instead. | +| [Azure Workload Identity](#azure-workload-identity-authentication) | Same method as AWS RDS IAM, except supported on Azure. | +| Hashicorp Vault | PgDog connects to a configured instance of Hashicorpt Vault and uses the provided username and password. | -1. Password authentication, using any of the [client authentication](#client-authentication) methods -2. AWS RDS IAM authentication -3. Azure Workload Identity authentication +### RDS IAM authentication +PgDog supports using temporary credentials from [AWS IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) and using those to connect to RDS PostgreSQL (and Aurora) instances. -#### RDS IAM authentication +Under the hood, PgDog is using the [AWS RDS SDK](https://docs.rs/aws-sdk-rds/latest/aws_sdk_rds/) to fetch credentials at runtime. The SDK can retrieve them from the environment and from the EC2 IAM API. For example, if you're deploying PgDog in [Kubernetes](../installation.md#kubernetes), you just need to assign its container an IAM role with the right permissions. -PgDog supports authenticating to RDS PostgreSQL (and Aurora) databases using [IAM](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html). This is configurable on a user-per-user basis, for example: +To use RDS IAM authentication, configure it on each user in [`users.toml`](../configuration/users.toml/users.md): === "users.toml" ```toml [[users]] name = "pgdog" database = "prod" + password = "hunter2" server_auth = "rds_iam" ``` === "Helm chart" @@ -74,18 +90,22 @@ PgDog supports authenticating to RDS PostgreSQL (and Aurora) databases using [IA users: - name: pgdog database: prod + password: hunter2 serverAuth: rds_iam ``` -#### Azure Workload Identity authentication +### Azure Workload Identity authentication -Similar to RDS IAM, PgDog can authenticate to PostgreSQL running in Azure using the built-in Workload Identity provider. This is configurable on a user-per-user basis, for example: +PgDog supports using temporary credentials provided by Azure Workload Identity to connect to PostgreSQL running on Azure. This uses the [Azure SDK](https://github.com/Azure/azure-sdk-for-rust) and supports fetching credentials from the environment. + +To use Workload Identity authentication, configure it on each user in [`users.toml`](../configuration/users.toml/users.md): === "users.toml" ```toml [[users]] name = "pgdog" database = "prod" + password = "hunter2" server_auth = "azure_workload_identity" ``` === "Helm chart" @@ -93,12 +113,19 @@ Similar to RDS IAM, PgDog can authenticate to PostgreSQL running in Azure using users: - name: pgdog database: prod + password: hunter2 serverAuth: azure_workload_identity ``` -## Add users -[`users.toml`](../configuration/users.toml/users.md) follows a simple TOML list structure. To add users, simply add another `[[users]]` section, e.g.: +### Hashicorp Vault + +!!! info "TODO: Documentation" + Support for Hashicorp Vault authentication has been added in [v0.1.46](https://github.com/pgdogdev/pgdog/releases/tag/v0.1.46). It has not been documented or thouroughly tested yet. + +## Configuring users + +The [`users.toml`](../configuration/users.toml/users.md) configuration file follows a TOML list structure. To allow a user to connect to PgDog, add a `[[users]]` section with the user name, password and a corresponding database name (located in [`pgdog.toml`](../configuration/pgdog.toml/databases.md)) to `users.toml`, for example: === "users.toml" ```toml @@ -115,11 +142,29 @@ Similar to RDS IAM, PgDog can authenticate to PostgreSQL running in Azure using password: hunter2 ``` -PgDog will expect clients connecting as `pgdog` to provide the password `hunter2` (hashed with `scram-sha-256` by default), and will use the same username and password to connect to PostgreSQL. +The `database` parameter must match the name of one of the databases configured in [`pgdog.toml`](../configuration/pgdog.toml/databases.md). For example: -### Override server credentials +=== "users.toml" + ```toml + [[users]] + name = "alice" + database = "prod" + password = "hunter2" + ``` +=== "pgdog.toml" + ```toml + [[databases]] + name = "prod" + host = "10.0.0.1" + ``` + +The `database` parameter in the `[[users]]` entry ("prod") matches the `[[databases]]` entry with the same `name` ("prod"). If you add a user with a `database` name not specified in `pgdog.toml`, that user entry will be ignored by PgDog at runtime and that user will not be able to connect. + +The same username, database name and password will also be used by PgDog to connect to PostgreSQL. This makes configuration simpler since the Postgres connection options used by applications don't have to change when PgDog is deployed for the first time. + +### Overriding server credentials -You can override the user and/or password PgDog uses to connect to Postgres by specifying `server_user` and `server_password` in the same configuration: +If you want to use a different username or password for PgDog to connect to Postgres, you can override them by specifying the `server_user` and `server_password` parameters in the same user configuration entry: === "users.toml" ```toml @@ -140,13 +185,13 @@ You can override the user and/or password PgDog uses to connect to Postgres by s serverPassword: opensesame ``` -This allows you to separate client and server credentials. In case your clients accidentally leak theirs, you only need to rotate them in the PgDog configuration, without having to take downtime to change passwords in PostgreSQL. +This allows you to separate client and server authentication credentials. In case your applications accidentally leak their credentials (e.g., by comitting them to git), you only need to rotate them in the PgDog configuration, without having to take downtime to change passwords in PostgreSQL. ## Passthrough authentication -Passthrough authentication is a feature where instead of storing passwords in `users.toml`, PgDog attempts to connect to Postgres using the credentials provided by the client. Passthrough authentication simplifies PgDog deployments by using a single source of truth for authentication and doesn't require passwords to be stored outside the database. +Passthrough authentication is a feature where instead of storing passwords in `users.toml`, PgDog attempts to connect to PostgreSQL using the credentials provided by the client. Passthrough authentication simplifies PgDog deployments by using a single source of truth for user credentials and doesn't require passwords to be stored outside the database or the application. -Passthrough authentication is disabled by default and can be enabled with configuration: +Passthrough authentication is **disabled** by default and can be enabled with configuration: === "pgdog.toml" ```toml @@ -158,15 +203,17 @@ Passthrough authentication is disabled by default and can be enabled with config passthroughAuth: enabled ``` -This will require clients to send passwords in plain text. PgDog will create a connection pool for the database/user pair and the provided password. The database must exist in [`pgdog.toml`](../configuration/pgdog.toml/databases.md). +Since PgDog doesn't store the server password anymore, using passthrough authentication will require clients to send passwords in plain text. Therefore, PgDog will automatically change the `auth_method` to `plain` and ignore the setting configured in `pgdog.toml`. -The connection pool is dynamic and will be created the first time a client connects. When configuration is reloaded, the connection pool is removed. As long as `passthrough_auth` is enabled between config changes, clients won't be impacted, since connection pools will be recreated next time clients reconnect or execute a query. +When a client connects to PgDog for the first time, it will create a connection pool for the database/user pair and the provided password. The database specified by the client must still exist in [`pgdog.toml`](../configuration/pgdog.toml/databases.md). -### Security +When configuration is reloaded, connection pools created with passthrough auth are temporarily removed and immediately re-create when a connected client executes a query. As long as `passthrough_auth` is enabled between configuration changes, clients will not be impacted. -Sending plain text passwords over unencrypted connections isn't ideal, even if PgDog and Postgres are on the same local network. For this reason, `passthrough_auth = "enabled"` will only work if PgDog is configured to use [TLS encryption](tls.md). +### Passthrough authentication security -If you don't want to set up TLS (it has some impact on latency), you can override this behavior and send passwords via plain text (unsecured) connection: +Sending passwords in plain text over unencrypted connections is not great, even if PgDog and Postgres are on the same local network. For this reason, `passthrough_auth = "enabled"` will only work if PgDog is configured to use [TLS encryption](tls.md). + +If you don't want to set up TLS (it has some impact on latency), you can override this behavior and send passwords via plain text and an unencrypted connection: === "pgdog.toml" ```toml @@ -178,6 +225,60 @@ If you don't want to set up TLS (it has some impact on latency), you can overrid passthroughAuth: enabled_plain ``` +### Configuring user options + +The most typical deployments of PgDog with passthrough authentication do not configure a `users.toml` at all. However, some user-specific options can only be configured in that file, for example, [server authentication](#server-authentication). To configure users with options and passthrough authentication, add them to `users.toml` without specifying a password: + +=== "users.toml" + ```toml + [[users]] + name = "alice" + pool_size = 10 + server_auth = "rds_iam" + ``` +=== "Helm chart" + ```yaml + users: + - name: alice + poolSize: 10 + serverAuth: rds_iam + ``` + +Passthrough authentication must still be enabled in `pgdog.toml`. PgDog will use password supplied by the client and create a connection pool dynamically when they connect for the first time. + +### Changing passwords + +Connection pools created dynamically with passthrough authentication will have a static password. If that password is changed inside the server (e.g., by running `ALTER USER [...] PASSWORD` command), PgDog will no longer be able to connect to the database. To change the password in PgDog without restarting the proxy, you can configure the passthrough auth passwords to be changeable: + +=== "pgdog.toml" + ```toml + [general] + passthrough_auth = "enabled_allow_change" + ``` +=== "Helm chart" + ```yaml + passthroughAuth: enabled_allow_change + ``` + +When a client connects with a different password to what's currently stored in PgDog's memory, it will re-create the connection pool with the new password and re-connect to the server. + +!!! warning "Trusted clients only" + Allowing clients to change their passwords at runtime should never be used with PgDog deployments open to the Internet. This feature is built for convenience to allow almost zero-downtime password rotation in Postgres and, if used incorrectly, can open up the proxy to a denial-of-service attack. + +#### Plain text connections + +If passthrough authentication is used without [TLS](tls.md), set it to `"enabled_plain_allow_change"` instead: + +=== "pgdog.toml" + ```toml + [general] + passthrough_auth = "enabled_plain_allow_change" + ``` +=== "Helm chart" + ```yaml + passthroughAuth: enabled_plain_allow_change + ``` + ## Password security -Since PgDog stores passwords in a separate configuration file, it's possible to encrypt it at rest without compromising the DevOps experience. For example, Kubernetes provides built-in [secrets management](https://kubernetes.io/docs/concepts/configuration/secret/) to manage this. +Since PgDog stores passwords in a separate configuration file (i.e., `users.toml`), it's possible to encrypt them at rest without compromising the DevOps experience. For example, Kubernetes provides built-in [secrets management](https://kubernetes.io/docs/concepts/configuration/secret/) to manage this, and our [Helm chart](../installation.md#kubernetes) automatically takes advantage of it. From 81ffd51dff640d140a98a696836de60674bf9c0b Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 17:35:39 -0700 Subject: [PATCH 07/14] words --- docs/features/authentication.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/features/authentication.md b/docs/features/authentication.md index 1649ce95..349f1b86 100644 --- a/docs/features/authentication.md +++ b/docs/features/authentication.md @@ -10,7 +10,7 @@ Authentication is **enabled** by default. Applications connecting to PgDog must ## Supported methods -PgDog implements a subset of authentication methods supported by Postgres and some others which are commonly used in the industry. The following table summarizes the current level of support for client and server connection authentication methods: +PgDog implements a subset of authentication methods supported by Postgres and some others commonly used in the industry. The following table summarizes the current level of support for client and server connection authentication methods: | Authentication method | Client connections | Server connections | |-|-|-| @@ -28,7 +28,7 @@ PgDog implements a subset of authentication methods supported by Postgres and so ## Client authentication -By default, client connections will use password authentication encrypted with `scram-sha-256`. This method is secure and recommended for production usage. PgDog supports using other methods, e.g., `md5` and `plain`, which you can change it with configuration: +By default, client connections will use password authentication encrypted with `scram-sha-256`. This method is secure and recommended for production usage. PgDog supports using other methods, e.g., `md5` and `plain`, which you can change with configuration: === "pgdog.toml" ```toml @@ -52,7 +52,7 @@ The following password authentication algorithms are available for client connec ### SCRAM performance -The SCRAM-SHA-256 algorithm is computationally expensive and will use a considerable amount of CPU time. This is by design so it makes it difficult to brute-force. However, if your application is frequently creating new connections to the database, like serverless apps running on Vercel, Cloudflare workers, etc., this could also have a latency impact. +The SCRAM-SHA-256 algorithm is computationally expensive and will use a considerable amount of CPU time. This is by design, since it makes passwords difficult to brute-force. However, if your application is frequently creating new connections to the database, like serverless apps running on Vercel, Cloudflare workers, etc., this could also have a latency impact. If your application is affected by this, consider enabling [TLS](tls.md) and using the `plain` authentication method instead. Modern CPUs implement TLS algorithms in hardware which makes them efficient and fast. @@ -60,14 +60,14 @@ If your application is affected by this, consider enabling [TLS](tls.md) and usi The server authentication method is controlled by PostgreSQL. PgDog will use whatever method Postgres requests during connection creation, which is configurable in the [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) file on the server. -PgDog currently supports four (4) authentication methods for server connections: +PgDog currently supports four authentication methods for server connections: | Method | Description | |-|-| | Password authentication | PgDog sends the password using one of the supported [password encryption](#client-authentication) algorithms. | | [AWS RDS IAM](#rds-iam-authentication) | PgDog requests a temporary password from AWS IAM and uses that for password authentication instead. | | [Azure Workload Identity](#azure-workload-identity-authentication) | Same method as AWS RDS IAM, except supported on Azure. | -| Hashicorp Vault | PgDog connects to a configured instance of Hashicorpt Vault and uses the provided username and password. | +| Hashicorp Vault | PgDog connects to a configured instance of Hashicorp Vault and uses the provided username and password. | ### RDS IAM authentication @@ -121,7 +121,7 @@ To use Workload Identity authentication, configure it on each user in [`users.to ### Hashicorp Vault !!! info "TODO: Documentation" - Support for Hashicorp Vault authentication has been added in [v0.1.46](https://github.com/pgdogdev/pgdog/releases/tag/v0.1.46). It has not been documented or thouroughly tested yet. + Support for Hashicorp Vault authentication has been added in [v0.1.46](https://github.com/pgdogdev/pgdog/releases/tag/v0.1.46). It has not been documented or thoroughly tested yet. ## Configuring users @@ -185,11 +185,11 @@ If you want to use a different username or password for PgDog to connect to Post serverPassword: opensesame ``` -This allows you to separate client and server authentication credentials. In case your applications accidentally leak their credentials (e.g., by comitting them to git), you only need to rotate them in the PgDog configuration, without having to take downtime to change passwords in PostgreSQL. +This allows you to separate client and server authentication credentials. In case your applications accidentally leak their credentials (e.g., by committing them to git), you only need to rotate them in the PgDog configuration, without having to take downtime to change passwords in PostgreSQL. ## Passthrough authentication -Passthrough authentication is a feature where instead of storing passwords in `users.toml`, PgDog attempts to connect to PostgreSQL using the credentials provided by the client. Passthrough authentication simplifies PgDog deployments by using a single source of truth for user credentials and doesn't require passwords to be stored outside the database or the application. +With passthrough authentication, instead of storing passwords in `users.toml`, PgDog connects to PostgreSQL using the credentials provided by the client. Passthrough authentication simplifies PgDog deployments by using a single source of truth for user credentials and doesn't require passwords to be stored outside the database or the application. Passthrough authentication is **disabled** by default and can be enabled with configuration: @@ -207,7 +207,7 @@ Since PgDog doesn't store the server password anymore, using passthrough authent When a client connects to PgDog for the first time, it will create a connection pool for the database/user pair and the provided password. The database specified by the client must still exist in [`pgdog.toml`](../configuration/pgdog.toml/databases.md). -When configuration is reloaded, connection pools created with passthrough auth are temporarily removed and immediately re-create when a connected client executes a query. As long as `passthrough_auth` is enabled between configuration changes, clients will not be impacted. +When configuration is reloaded, connection pools created with passthrough auth are temporarily removed and immediately re-created when a connected client executes a query. As long as `passthrough_auth` is enabled between configuration changes, clients will not be impacted. ### Passthrough authentication security @@ -244,7 +244,7 @@ The most typical deployments of PgDog with passthrough authentication do not con serverAuth: rds_iam ``` -Passthrough authentication must still be enabled in `pgdog.toml`. PgDog will use password supplied by the client and create a connection pool dynamically when they connect for the first time. +Passthrough authentication must still be enabled in `pgdog.toml`. PgDog will use the password supplied by the client and create a connection pool dynamically when they connect for the first time. ### Changing passwords From 3d099dd46d1708ba5234c6794e40abe4348da957 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 17:47:20 -0700 Subject: [PATCH 08/14] install --- docs/installation.md | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 35c0dd37..48c95527 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -31,22 +31,23 @@ docker run ghcr.io/pgdogdev/pgdog:v0.1.44 ### AWS ECS !!! note "New feature" - This is a new feature. Please report any issues you may encounter. + The ECS Terraform module is a new project. Please report any issues you may encounter. Community contributions are welcome. - We recently added a [Terraform module](https://github.com/pgdogdev/pgdog-ecs-terraform) to deploy PgDog on AWS ECS. It works with the same Docker image as our Helm chart, so the experience should be familiar. + We recently added a [Terraform module](https://github.com/pgdogdev/pgdog-ecs-terraform) to deploy PgDog in AWS ECS. It works with the same Docker image as our [Helm chart](#kubernetes), so the experience should be familiar. ## Pre-built binaries -Each PgDog release (weekly, on Thursdays) contains pre-built binaries for Linux (arm64, amd64), Mac (aarch64, i.e. Apple Silicon), and Debian packages (`.deb`) for convenient installation on Debian/Ubuntu. +Each PgDog release (every week, on Thursday) contains pre-built binaries for Linux (arm64, amd64), Mac (aarch64, i.e. Apple Silicon), and Debian packages (`.deb`) for convenient installation on Debian/Ubuntu. -You can download pre-built binaries in [GitHub](https://github.com/pgdogdev/pgdog/releases). +You can download all binaries from the [releases page](https://github.com/pgdogdev/pgdog/releases) in GitHub. -#### glibc -The Linux binaries are built on Ubuntu 24.04, and are linked against glibc version 2.39. To run them, your system needs glibc 2.39 or later. +#### Linux binaries and glibc -#### Mac OS +The Linux binaries are built on Ubuntu 24.04 and are linked against glibc version 2.39. To run them, your system needs glibc 2.39 or later. -The Mac OS binary is not signed. To run it locally, make sure to de-quarantine it: +#### Mac OS security + +The Mac OS binary is not signed. To run it locally, make sure to de-quarantine it first, e.g.: ```bash xattr -d com.apple.quarantine ./pgdog @@ -54,11 +55,11 @@ xattr -d com.apple.quarantine ./pgdog ## From source -PgDog can be easily compiled from source. For production deployments, a `Dockerfile` is provided in [GitHub](https://github.com/pgdogdev/pgdog/tree/main/Dockerfile). If you prefer to deploy on bare-metal or you're looking to run PgDog locally, you'll need to install a few dependencies. +PgDog can be easily compiled from source. For production deployments, a [`Dockerfile`](https://github.com/pgdogdev/pgdog/tree/main/Dockerfile) is provided in our code repository. If you prefer to deploy on bare-metal or you are looking to run PgDog locally, you will need to install a few dependencies. ### Dependencies -Parts of PgDog depend on C/C++ libraries, which are compiled from source. Make sure to have a working version of a C/C++ compiler installed. +Parts of PgDog depend on C/C++ libraries which are compiled from source. Make sure to have a working version of a C/C++ compiler installed before building from source: === "macOS" Install [Xcode](https://developer.apple.com/xcode/) from the App Store and CMake & Clang from Homebrew: @@ -102,7 +103,7 @@ git clone https://github.com/pgdogdev/pgdog && \ cd pgdog ``` -To make sure you get all performance benefits, PgDog should be compiled in release mode: +To make sure you get all performance benefits, PgDog should be compiled in release mode with all optimizations: ```bash cargo build --release @@ -110,7 +111,7 @@ cargo build --release ### Launch PgDog -You can start PgDog by running the binary directly, located in `target/release/pgdog`, or with Cargo: +You can start PgDog by running the binary directly which is located in `target/release/pgdog`, or by running it with Cargo: ```bash cargo run --release @@ -122,13 +123,12 @@ PgDog is configured via two files: | Configuration file | Description | |-|-| -| [pgdog.toml](configuration/index.md) | Contains general settings and information about PostgreSQL servers. | -| [users.toml](configuration/users.toml/users.md) | Contains users and passwords that are allowed to connect to PgDog. | +| [pgdog.toml](configuration/index.md) | General settings and information about PostgreSQL servers. | +| [users.toml](configuration/users.toml/users.md) | Usernames and passwords that are allowed to connect to PgDog. | -Users are configured separately to allow them to be encrypted at rest in environments that support it, like in Kubernetes or with the AWS Secrets Manager. +Users are configured separately which allows them to be encrypted at rest in environments that support it, like in Kubernetes or with the AWS Secrets Manager. -Both config files should be placed in the current working directory (`$PWD`) for PgDog to detect them. Alternatively, -you can pass their paths at startup as arguments: +If the configuration files are placed in the current working directory (`$PWD`), PgDog will detect them automatically. Alternatively, you can pass their paths at startup as arguments: ```bash pgdog \ @@ -155,7 +155,7 @@ Most configuration options have sensible defaults. This makes single-database co #### [users.toml](configuration/users.toml/users.md) -This config file contains a mapping between databases, users, and passwords. Unless you configured [passthrough authentication](features/authentication.md#passthrough-authentication), users not specified in this file won't be able to connect: +This config file contains a mapping between databases, users, and passwords. Unless you configured [passthrough authentication](features/authentication.md#passthrough-authentication), users not specified in this file will not be able to connect: === "users.toml" ```toml @@ -173,7 +173,6 @@ This config file contains a mapping between databases, users, and passwords. Unl ``` !!! note "Configuring users" - PgDog creates connection pools for each user/database pair. If no users are configured in `users.toml`, all connection pools will be disabled and PgDog won't connect to the database(s). ## Next steps From abd550e5ebec3e77c8ef211f9566a7b35a6f56d8 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 17:48:17 -0700 Subject: [PATCH 09/14] install --- docs/installation.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 48c95527..ca7066f1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -33,7 +33,7 @@ docker run ghcr.io/pgdogdev/pgdog:v0.1.44 !!! note "New feature" The ECS Terraform module is a new project. Please report any issues you may encounter. Community contributions are welcome. - We recently added a [Terraform module](https://github.com/pgdogdev/pgdog-ecs-terraform) to deploy PgDog in AWS ECS. It works with the same Docker image as our [Helm chart](#kubernetes), so the experience should be familiar. +We recently added a [Terraform module](https://github.com/pgdogdev/pgdog-ecs-terraform) to deploy PgDog on AWS ECS. It works with the same Docker image as our [Helm chart](#kubernetes), so the experience should be familiar. ## Pre-built binaries @@ -59,7 +59,7 @@ PgDog can be easily compiled from source. For production deployments, a [`Docker ### Dependencies -Parts of PgDog depend on C/C++ libraries which are compiled from source. Make sure to have a working version of a C/C++ compiler installed before building from source: +Parts of PgDog depend on C/C++ libraries, which are compiled from source. Make sure to have a working version of a C/C++ compiler installed before building from source: === "macOS" Install [Xcode](https://developer.apple.com/xcode/) from the App Store and CMake & Clang from Homebrew: @@ -111,7 +111,7 @@ cargo build --release ### Launch PgDog -You can start PgDog by running the binary directly which is located in `target/release/pgdog`, or by running it with Cargo: +You can start PgDog by running the binary directly, which is located in `target/release/pgdog`, or by running it with Cargo: ```bash cargo run --release @@ -126,7 +126,7 @@ PgDog is configured via two files: | [pgdog.toml](configuration/index.md) | General settings and information about PostgreSQL servers. | | [users.toml](configuration/users.toml/users.md) | Usernames and passwords that are allowed to connect to PgDog. | -Users are configured separately which allows them to be encrypted at rest in environments that support it, like in Kubernetes or with the AWS Secrets Manager. +Users are configured separately, which allows them to be encrypted at rest in environments that support it, like in Kubernetes or with the AWS Secrets Manager. If the configuration files are placed in the current working directory (`$PWD`), PgDog will detect them automatically. Alternatively, you can pass their paths at startup as arguments: From ec856e7f35031d9bb3db55f7e7d2bd535e6a43a4 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 19:07:57 -0700 Subject: [PATCH 10/14] save --- docs/images/resharding-intro.png | Bin 0 -> 80073 bytes docs/index.md | 46 ++++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 docs/images/resharding-intro.png diff --git a/docs/images/resharding-intro.png b/docs/images/resharding-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6873cbefb63b80a19a3e546c30feedd332993d GIT binary patch literal 80073 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 U(K=4_IZa7};I#@zB`ZV2 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 CcD1_z literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 394ea0c8..e5970fd2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,30 +4,56 @@ icon: material/home # Introduction to PgDog -[PgDog](https://pgdog.dev) is a sharder, connection pooler and load balancer for PostgreSQL. Written in Rust, PgDog is fast, reliable and scales databases horizontally without requiring changes to application code. +PgDog is a connection pooler, load balancer and database sharder for PostgreSQL. Written in Rust, PgDog is fast, reliable and scales Postgres databases without requiring changes to your application. -## The problem +## Getting started -Unlike NoSQL databases, PostgreSQL can serve `INSERT`, `UPDATE`, and `DELETE` queries from only one machine. Once the capacity of that machine is exceeded, applications have to find new and creative ways to reduce their impact on the database, like batching requests or delaying workloads to run overnight. +PgDog is an open source project. You can download its code from our [repository](https://github.com/pgdogdev/pgdog) in GitHub. If you're deploying PgDog to your cloud account (or on prem), you can either use the [compiled binaries](https://github.com/pgdogdev/pgdog/releases) we provide, or build it from source. -At the same time, database operators are faced with increasing operating costs, like behind schedule vacuums, table bloat and downtime. Incidents are frequent and engineers are more focused on not breaking the DB than building new features. +Every commit in the `main` branch and weekly tagged releases have a correspoding images in our [Docker](github.com/orgs/pgdogdev/packages/container/package/pgdog) repository, for example: + +```bash +docker run ghcr.io/pgdogdev/pgdog:v0.1.46 +``` + +## Why PgDog + +PostgreSQL is a process-based, single-primary database. It has an upper bound on the number of clients that can connect, the number of queries a single server can execute, and on the amount of data it can write at any given time. + +PgDog is a proxy that can help solve all of these problems. It's a single executable, deployed between the application and the database. It understands the protocol used by applications to talk to the database and the replication protocol used by PostgreSQL. This allows do its job in the background, without impacting how Postgres servers operate or how applications query it. + +## Connection pooler + +PgDog is a connection pooler, similar to PgBouncer or RDS Proxy. It can multiplex thousands of application connections with only a handful of actual Postgres server connections. This effectively removes the upper bound on the number of connections PostgreSQL databases can serve. + +Unlike PgBouncer or RDS Proxy, PgDog has more features that make it easier to use: it can handle SET statements, LISTEN/NOTIFY commands and advisory locks, without breaking connection state or pinning connections. + +PgDog is also multithreaded, so more clients can connect to just one instance of PgDog and use the same, small, number of Postgres connections. + +You can read more about how PgDog handles transactions [here](features/transaction-mode.md). + +## Load balancer + +If your database has multiple replicas, PgDog can equally spread read queries between them using one of several load balancing [algorithms](features/load-balancer/index.md) it supports out of the box. This makes it easy to add more replicas to scale reads, without changing application code or adding additional infrastructure, like HAProxy or Patroni. + +You can read more about how PgDog load balances queries [here](features/load-balancer/index.md). ## Sharding PostgreSQL -The solution to an overextended database is **sharding**: splitting all tables and indices equally between multiple machines. For example, if your primary database is 750 GB, splitting it into 3 shards will produce 3 databases of 250 GB each. As databases get smaller, vacuums start to catch up, indices fit into memory again, and queries run faster with reliable performance. +Unlike NoSQL databases, PostgreSQL can serve INSERT, UPDATE, and DELETE queries from only one server. Once the capacity of that server is exceeded, applications have to find new and creative ways to reduce their impact on the database, like batching requests or delaying workloads to run overnight. -As shards store more data and grow, they can be split again, scaling PostgreSQL horizontally. Sharded databases can grow into petabytes (that's thousands of TB), while serving OLTP and OLAP use cases. +At the same time, database operators are faced with increasing operating costs, like behind schedule vacuums, table bloat and downtime. Incidents are frequent and engineers are more focused on not breaking the DB than building new features. -## How PgDog works +The solution to an overextended database is sharding: splitting all tables and indices equally between multiple machines. For example, if your primary database is 750 GB, splitting it into 3 shards will produce 3 databases of 250 GB each. As databases get smaller, vacuums start to catch up, indices fit into memory again, and queries run faster with reliable performance. -PgDog operates on the application layer of the stack: it speaks PostgreSQL and understands not only the queries sent by applications but also the logical replication protocol used by the server. This allows it to automatically route queries while moving data between machines to create more capacity. +As shards store more data and grow, they can be split again, scaling PostgreSQL horizontally. Sharded databases can grow into petabytes (that's thousands of TB), while serving OLTP and OLAP use cases.
- How PgDog works + How PgDog sharding works
-While PgDog focuses a lot on sharding PostgreSQL, it is also a load balancer and transaction pooler that can be used with simpler PostgreSQL deployments. +PgDog operates on the application layer of the stack: it speaks PostgreSQL and understands not only the queries sent by applications but also the logical replication protocol used by the server. This allows it to automatically route queries while moving data between machines to create more capacity. This documentation provides a detailed overview of all PgDog features, along with reference material for production operations. From 2222b6eee6de26d46f63e4378fc572364c76e6ed Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sat, 27 Jun 2026 19:09:10 -0700 Subject: [PATCH 11/14] spelling --- docs/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index e5970fd2..9242966d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,7 +10,7 @@ PgDog is a connection pooler, load balancer and database sharder for PostgreSQL. PgDog is an open source project. You can download its code from our [repository](https://github.com/pgdogdev/pgdog) in GitHub. If you're deploying PgDog to your cloud account (or on prem), you can either use the [compiled binaries](https://github.com/pgdogdev/pgdog/releases) we provide, or build it from source. -Every commit in the `main` branch and weekly tagged releases have a correspoding images in our [Docker](github.com/orgs/pgdogdev/packages/container/package/pgdog) repository, for example: +Every commit in the `main` branch and weekly tagged releases have corresponding images in our [Docker](https://github.com/orgs/pgdogdev/packages/container/package/pgdog) repository, for example: ```bash docker run ghcr.io/pgdogdev/pgdog:v0.1.46 @@ -20,7 +20,7 @@ docker run ghcr.io/pgdogdev/pgdog:v0.1.46 PostgreSQL is a process-based, single-primary database. It has an upper bound on the number of clients that can connect, the number of queries a single server can execute, and on the amount of data it can write at any given time. -PgDog is a proxy that can help solve all of these problems. It's a single executable, deployed between the application and the database. It understands the protocol used by applications to talk to the database and the replication protocol used by PostgreSQL. This allows do its job in the background, without impacting how Postgres servers operate or how applications query it. +PgDog is a proxy that can help solve all of these problems. It's a single executable, deployed between the application and the database. It understands the protocol used by applications to talk to the database and the replication protocol used by PostgreSQL. This allows it to do its job in the background, without impacting how Postgres servers operate or how applications query it. ## Connection pooler @@ -50,7 +50,7 @@ The solution to an overextended database is sharding: splitting all tables and i As shards store more data and grow, they can be split again, scaling PostgreSQL horizontally. Sharded databases can grow into petabytes (that's thousands of TB), while serving OLTP and OLAP use cases.
- How PgDog sharding works + How PgDog sharding works
PgDog operates on the application layer of the stack: it speaks PostgreSQL and understands not only the queries sent by applications but also the logical replication protocol used by the server. This allows it to automatically route queries while moving data between machines to create more capacity. From fd52d0a93364739654c0c25c8de7652182dad7f4 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sun, 28 Jun 2026 21:58:48 -0700 Subject: [PATCH 12/14] save --- docs/images/resharding-intro.png | Bin 80073 -> 93662 bytes docs/index.md | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/images/resharding-intro.png b/docs/images/resharding-intro.png index ed6873cbefb63b80a19a3e546c30feedd332993d..576d79ef9864149dac7906117305dea481c98254 100644 GIT binary patch literal 93662 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
=K!Yxq`X*QQE#_ubgbt`7y^c$KB^mn<`+ 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

7%ZxVbNR*KgAYD>OwCALp+*3r0uF_g-pZ89kLR= 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 U(K=4_IZa7};I#@zB`ZV2 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 CcD1_z diff --git a/docs/index.md b/docs/index.md index 9242966d..29206691 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,7 @@ PgDog is a connection pooler, load balancer and database sharder for PostgreSQL. ## Getting started -PgDog is an open source project. You can download its code from our [repository](https://github.com/pgdogdev/pgdog) in GitHub. If you're deploying PgDog to your cloud account (or on prem), you can either use the [compiled binaries](https://github.com/pgdogdev/pgdog/releases) we provide, or build it from source. +PgDog is an open source project. You can download its code from our [repository](https://github.com/pgdogdev/pgdog) on GitHub. If you're deploying PgDog to your cloud account (or on prem), you can either use the [compiled binaries](https://github.com/pgdogdev/pgdog/releases) we provide or build it from source. Every commit in the `main` branch and weekly tagged releases have corresponding images in our [Docker](https://github.com/orgs/pgdogdev/packages/container/package/pgdog) repository, for example: @@ -18,36 +18,36 @@ docker run ghcr.io/pgdogdev/pgdog:v0.1.46 ## Why PgDog -PostgreSQL is a process-based, single-primary database. It has an upper bound on the number of clients that can connect, the number of queries a single server can execute, and on the amount of data it can write at any given time. +PostgreSQL is a process-based, single-primary database. As such, it has hard limits on how many clients can connect, how many queries a single server can execute, and how much data it can write at any given time. -PgDog is a proxy that can help solve all of these problems. It's a single executable, deployed between the application and the database. It understands the protocol used by applications to talk to the database and the replication protocol used by PostgreSQL. This allows it to do its job in the background, without impacting how Postgres servers operate or how applications query it. +PgDog helps you work around these limits. It's a single binary, deployed between your application and the database, that speaks both the protocol applications use to talk to Postgres and the replication protocol Postgres uses internally. This lets PgDog do its job transparently, without changes to Postgres or the applications that query it. ## Connection pooler -PgDog is a connection pooler, similar to PgBouncer or RDS Proxy. It can multiplex thousands of application connections with only a handful of actual Postgres server connections. This effectively removes the upper bound on the number of connections PostgreSQL databases can serve. +Like PgBouncer or RDS Proxy, PgDog is a connection pooler: it multiplexes thousands of application connections over just a handful of Postgres server connections. This effectively removes the limit on how many clients a PostgreSQL database can serve at once. -Unlike PgBouncer or RDS Proxy, PgDog has more features that make it easier to use: it can handle SET statements, LISTEN/NOTIFY commands and advisory locks, without breaking connection state or pinning connections. +Unlike those proxies, PgDog handles features that usually force a pooler to pin or reset connections. It supports SET statements, LISTEN/NOTIFY, and advisory locks without breaking connection state, so your application keeps working as if it were talking to Postgres directly. -PgDog is also multithreaded, so more clients can connect to just one instance of PgDog and use the same, small, number of Postgres connections. +PgDog is also multithreaded, so a single instance can serve many more clients while still relying on the same small number of Postgres connections. You can read more about how PgDog handles transactions [here](features/transaction-mode.md). ## Load balancer -If your database has multiple replicas, PgDog can equally spread read queries between them using one of several load balancing [algorithms](features/load-balancer/index.md) it supports out of the box. This makes it easy to add more replicas to scale reads, without changing application code or adding additional infrastructure, like HAProxy or Patroni. +If your database has read replicas, PgDog can distribute read queries across them using one of several built-in load balancing [algorithms](features/load-balancer/index.md). This lets you scale reads simply by adding replicas, with no application changes and no extra infrastructure like HAProxy or Patroni. You can read more about how PgDog load balances queries [here](features/load-balancer/index.md). ## Sharding PostgreSQL -Unlike NoSQL databases, PostgreSQL can serve INSERT, UPDATE, and DELETE queries from only one server. Once the capacity of that server is exceeded, applications have to find new and creative ways to reduce their impact on the database, like batching requests or delaying workloads to run overnight. +Unlike NoSQL databases, PostgreSQL can serve INSERT, UPDATE, and DELETE queries from only one server. Once that server's capacity is exceeded, applications have to find new and creative ways to reduce their load on the database, such as batching requests or deferring workloads to run overnight. -At the same time, database operators are faced with increasing operating costs, like behind schedule vacuums, table bloat and downtime. Incidents are frequent and engineers are more focused on not breaking the DB than building new features. +At the same time, database operators face rising operating costs from vacuums that fall behind schedule, table bloat and downtime. Incidents become frequent, and engineers end up more focused on keeping the database from breaking than on building new features. The solution to an overextended database is sharding: splitting all tables and indices equally between multiple machines. For example, if your primary database is 750 GB, splitting it into 3 shards will produce 3 databases of 250 GB each. As databases get smaller, vacuums start to catch up, indices fit into memory again, and queries run faster with reliable performance. -As shards store more data and grow, they can be split again, scaling PostgreSQL horizontally. Sharded databases can grow into petabytes (that's thousands of TB), while serving OLTP and OLAP use cases. +As shards accumulate more data and grow, they can be split again, scaling PostgreSQL horizontally. Sharded databases can grow into petabytes (thousands of TB) while serving both OLTP and OLAP workloads.

How PgDog sharding works From 618d230cad1e8005ff07a6214c87e79ff6593b30 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sun, 28 Jun 2026 22:09:00 -0700 Subject: [PATCH 13/14] fix read more links --- docs/style.css | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/style.css b/docs/style.css index c68e095c..2e2b2be8 100644 --- a/docs/style.css +++ b/docs/style.css @@ -246,6 +246,10 @@ text-decoration: none; font-weight: 500; } +/* Darker blue for prose links in light mode (leaves the nav/accent untouched). */ +[data-md-color-scheme="default"] .md-typeset a { + color: #2e59cf; +} /* Keep links bold when wrapped in **bold** (our 500 weight was overriding it). */ .md-typeset strong a, .md-typeset a strong { @@ -595,12 +599,20 @@ table { margin: 1.5rem 0; } .grid > div { + position: relative; padding: var(--card-padding); border: 1px solid var(--pg-border); border-radius: var(--pg-radius-lg); background: var(--md-default-bg-color); transition: border-color var(--transition-speed) ease, box-shadow var(--transition-speed) ease, transform var(--transition-speed) ease; } +/* Make the whole card clickable: stretch the title link over the card. */ +.md-typeset .grid > div h4 a::after { + content: ""; + position: absolute; + inset: 0; + z-index: 1; +} .grid > div:hover { border-color: var(--pg-accent); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); @@ -615,15 +627,14 @@ table { margin: 0 0 0.5rem 0; font-size: 0.85rem; } -.grid > div h4 a { - color: var(--pg-accent); +.md-typeset .grid > div h4 a { text-decoration: none; font-weight: 650; } .grid > div p { margin: 0; font-size: 0.78rem; - color: var(--pg-muted); + color: var(--pg-text); line-height: 1.55; } From 80cc9c67ac3726e447497dedc07186877f207d97 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Sun, 28 Jun 2026 22:11:21 -0700 Subject: [PATCH 14/14] fix search --- docs/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/style.css b/docs/style.css index 2e2b2be8..708828ac 100644 --- a/docs/style.css +++ b/docs/style.css @@ -201,7 +201,7 @@ color: var(--pg-text); } .md-search__input::placeholder { - color: var(--pg-faint); + color: var(--pg-muted); } .md-search__icon { color: var(--pg-faint);