
Trate arquivos markdown como registros de um banco de dados
A proposta
O Markdown Database Pattern propõe tratar uma coleção de arquivos Markdown como registros de um banco de dados, em vez de vê-los apenas como documentos destinados à renderização. O objetivo é combinar texto rico e legível por pessoas com metadados estruturados e consultáveis, sem depender de uma plataforma proprietária nem abandonar a simplicidade dos arquivos locais.
A proposta parte de uma tensão entre dois modelos. CMSs oferecem campos, tipos e consultas, mas normalmente mantêm o conteúdo em bancos proprietários, ligados a uma interface administrativa e a uma plataforma. Arquivos Markdown, por outro lado, são textos simples que podem ser editados em qualquer ferramenta, versionados com Git e hospedados em qualquer lugar, mas não oferecem naturalmente filtros, ordenação ou agregações. Com frontmatter, os arquivos passam a carregar uma camada estruturada sem perder o conteúdo em texto livre.
Como o padrão funciona
Nesse modelo, cada arquivo Markdown corresponde a um registro; campos de frontmatter funcionam como colunas; diretórios podem representar agrupamentos ou tabelas; hashtags tornam-se relações de tags; wikilinks representam relações entre arquivos; e tarefas incorporadas ao texto formam relações de tarefas. Assim, uma coleção pode ser lida tanto como documentos quanto como dados.
Um diretório de notas sobre filmes, por exemplo, pode conter arquivos com ano, diretor, orçamento e tags no frontmatter, além do texto da nota. Uma ferramenta pode indexar essa pasta e disponibilizar tabelas como files e file_tags, permitindo consultas por ano, diretor ou tag. O texto ressalta que os exemplos de SQL não são executados na página: a afirmação é que as consultas se tornam possíveis depois que a pasta é indexada. O conteúdo continua legível, editável em qualquer editor e armazenável em Git.
Também é possível acessar a mesma estrutura sem escrever SQL. No Obsidian, uma Base pode transformar o frontmatter em uma tabela com filtros e ordenação. O padrão pode ser aplicado a blogs e artigos, bases de conhecimento pessoais, jardins digitais, wikis de equipes, documentação interna, notas de pesquisa, listas de leitura, receitas, registros de viagem e retrospectivas de projetos.
Benefícios e limites
Entre as vantagens estão a portabilidade dos arquivos simples, o versionamento, a independência de uma pilha específica e a capacidade de consultar a coleção. A fonte, porém, define o padrão como um banco de dados leve, não como substituto de um banco relacional: ele não é indicado para milhões de registros nem para dados relacionais complexos. Seu ponto ideal seria uma coleção de até aproximadamente dez mil arquivos; acima disso, a recomendação é recorrer a um banco de dados real.
Implementação
A implementação pode exigir pouco código: interpretar o frontmatter, percorrer a árvore de diretórios e gravar os resultados em SQLite. Como alternativa, o MarkdownDB indexa arquivos Markdown, extrai frontmatter, tags, links e tarefas, armazena a camada estruturada em SQLite e oferece uma API JavaScript para consultas.
A tese central, contudo, não depende de uma ferramenta específica. O padrão é apresentado como uma escolha de projeto anterior aos instrumentos que o implementam: arquivos Markdown já contêm uma camada estruturada que pode ser aproveitada. Dar um nome a essa abordagem torna explícita a possibilidade de usar texto simples como base portátil e consultável, reconhecendo tanto sua utilidade quanto seus limites.