Skip to content

Guide

Living database documentation

database documentation / schema changes / private databases

Living database documentation stays aligned with schema changes by scanning private databases and refreshing generated Markdown documentation.

Living database documentation is documentation that changes when the database changes. It is not a wiki page that depends on memory. It is not a static export sent after a project handover. It is a documentation layer generated from the schema, refreshed after scans, and enriched by the team.

That distinction matters because a database is not still. Tables are added, columns are renamed, indexes change, and views evolve with the product. If the documentation does not follow those changes, the team eventually stops trusting it.

Taavik treats documentation as part of the database observability workflow. The living database documentation is generated from schema metadata, updated after scans, and connected to schema change history. The scan flow starts from an on-premise agent, so private databases do not need public network exposure.

Why static documentation fails

Static database documentation usually fails for a simple reason: it has a separate maintenance process from the database itself.

A developer changes a column. The migration is reviewed. The application is deployed. The documentation update is optional, manual, and easy to postpone.

After enough postponed updates, the doc becomes risky to use. New engineers ask a teammate instead. Support reads the source code. Operations runs SQL directly to understand the current structure. The organization still has documentation, but nobody treats it as the truth.

Living documentation removes that split. The technical part is generated from the current schema. The human part remains editable, but the baseline stays current.

What should update automatically

The automatic layer should cover the facts that already exist in the database catalog:

  • schemas.
  • tables and views.
  • columns and data types.
  • nullability and defaults.
  • indexes.
  • foreign keys.
  • routines when supported by the provider.
  • recent object changes.

These details should not depend on a person copying metadata into a wiki. They should come from the database scan.

Manual notes still matter. The team should be able to explain what a table means, why a column exists, and which workflow depends on it. The key is separation: generated metadata updates automatically, while manual descriptions stay in place.

Why Markdown is a useful format

Markdown is plain, predictable, and easy to render. It gives the documentation a structure that can be searched, linked, and reviewed without forcing the team into a heavy documentation platform.

For database documentation, that structure is practical:

  • one page per database object.
  • consistent headings for tables, columns, indexes, and changes.
  • links between related objects.
  • short manual sections for context.
  • readable output for engineers and operations teams.

The goal is not decorative documentation. The goal is a reliable data dictionary that people can read during real work.

How change history helps

Documentation explains what exists now. Change history explains how it got there.

When the documentation shows that a column was added last week, a new engineer has a better starting point. When a table rename is captured as a rename instead of a drop plus an add, the audit trail is easier to understand. When a breaking change appears next to the affected object, the team can investigate without rebuilding the story from commits and chat messages.

That is why living documentation should be connected to schema diffs. The scan updates the current view, and the change history keeps recent context close to the object.

Where private databases need a different model

Many documentation tools expect direct access from a hosted service to the database. That can be unacceptable for private operational systems.

An agent-based model changes the boundary. The agent runs inside the private network, scans metadata from there, and sends the catalog needed to build documentation. The cloud control plane can render and organize the documentation without becoming a direct database client.

This is especially useful for teams that need a shared documentation workspace but cannot open production database access to the public internet.

What to document first

Start with the objects that create the most questions:

  • customer and account tables.
  • billing or subscription tables.
  • operational status fields.
  • integration staging tables.
  • views used by support and finance.
  • tables that recently changed.

The first pass does not need perfect prose. Let the scan generate the structure, then add short manual notes where the team has real confusion.

A practical operating rhythm

Living documentation works best when it is part of the normal scan rhythm. Run scans on a schedule, review changes after deployments, and use the documentation page as the starting point when someone asks what a table means.

Over time, the documentation becomes more valuable because the generated layer stays current and the manual layer accumulates the team's real decisions.

Generate documentation from the database you already have.