Se chegou aqui à procura de documentação da integração @astrojs/db, em 2026 a primeira coisa a saber é esta: o Astro DB foi lançado como integração oficial em março de 2024, correu cerca de dezoito meses sobre o Astro Studio (um fork de libSQL/Turso) e foi descontinuado quando o Astro Studio encerrou na primavera de 2025. O pacote @astrojs/db ainda se instala, mas o backend Studio alojado deixou de existir. O Astro 6 já não o entrega como add-on por omissão. O padrão híbrido descrito neste guia continua válido; a camada de base de dados é agora qualquer serviço SQL externo que ligue por sua conta.
Este guia percorre o padrão WordPress + edge SQL com os runtime stores que as equipas portuguesas efetivamente usam em 2026: Turso (o fork libSQL que sobreviveu ao Studio), Cloudflare D1, Neon Postgres e Supabase. O WordPress permanece como backend editorial; uma base de dados externa guarda os dados de runtime que o frontend precisa na edge.
Se só precisa de um frontend WordPress mais rápido, este é o guia errado. Object cache mais CDN leva um site típico para TTFB abaixo dos 200 ms sem segunda base de dados. O padrão híbrido ganha a sua complexidade quando o conteúdo editorial e os dados de runtime têm formatos genuinamente distintos, ou quando o atraso de invalidação de cache do WP REST se torna uma queixa mensurável da redação.
RGPD e Schrems II: porque é que a CNPD entra antes do código
No contexto português, a escolha técnica entre Turso, D1, Neon e Supabase é frequentemente secundária face à avaliação de proteção de dados. Dados pessoais no Astro DB ou em qualquer um dos seus sucessores significa: contrato de subcontratação ao abrigo do artigo 28.º do RGPD, avaliação Schrems II, medidas técnicas e organizativas documentadas e, em caso de dúvida, uma Transfer Impact Assessment.
A CNPD acompanha a prática europeia em matéria de transferências internacionais. Usar serviços Cloudflare (Workers, D1, Pages) é viável, mas implica DPA Cloudflare assinado, escolha de região UE e DPIA ativa se os dados de runtime incluírem comentários com nome próprio, submissões de formulários de utilizadores autenticados ou estado de adesão. A exposição ao CLOUD Act por parte de fornecedores americanos é real e tem de ser documentada, não branqueada.
Caminho prático que as agências portuguesas seguem em 2026:
- WordPress alojado em Portugal (PTisp, Amen.pt, ou hosting em região UE da OVH em Estrasburgo). Dados editoriais ficam em território UE.
- Dados de runtime sem identificação pessoal (inventário, contadores, caches): Cloudflare D1 ou Turso, região UE, DPA assinado.
- Dados de runtime com identificação pessoal (comentários, formulários, área de membros): Neon região UE, Supabase região UE, ou Postgres num operador português, porque a DPIA exige então bastante menos documentação de risco residual.
A migração do Astro DB para um store externo é, em ótica Schrems II, também uma oportunidade: a troca obriga a um inventário do que está onde. É o momento certo para escrever a DPIA de raiz em vez de copiar a anterior.
O que o Astro DB era de facto, e o que o substituiu
O Astro DB era uma camada fina de TypeScript sobre libSQL, com definição de schema ao estilo Drizzle (db/config.ts com defineDb, defineTable, column). O backend Studio fornecia uma instância libSQL gerida com plano gratuito de 1 GB de armazenamento e cerca de mil milhões de leituras de linhas por mês. Desenvolvimento local corria contra um ficheiro SQLite, produção contra o Studio.
Quando o Studio encerrou, a migração oficial era: manter o schema db/config.ts, trocar a connection string Studio por uma URL libSQL ou Turso auto-alojada, atualizar o adapter. No Astro 6 o módulo virtual astro:db já não está documentado como funcionalidade de primeira classe. As quatro substituições realistas para 2026:
- Turso (libSQL, SQLite distribuído). O mais próximo da ergonomia original do Astro DB. Plano gratuito serve sites pequenos, leituras replicadas na edge.
- Cloudflare D1. SQLite sobre Workers. Limite de 1 MB por linha, 10 GB por base de dados no plano pago. Natural se já usar Cloudflare Pages ou Workers.
- Neon. Postgres serverless com branch por PR. O compute do plano gratuito faz auto-pause, o que significa 2 a 4 segundos de cold start no primeiro pedido após inatividade.
- Supabase. Postgres com Row Level Security e camada REST/GraphQL alojada. Mais pesado que D1 ou Turso, mas inclui auth de fábrica.
Os exemplos de código mantêm a forma original astro:db porque continua a ser o modelo mental mais limpo. Onde a diferença de runtime importa, a escolha é referida explicitamente.
Quando o padrão híbrido vale a complexidade
A maior parte dos sites WordPress não deve adotar isto. Uma instalação WP monolítica com object cache, camada de cache estática e CDN aguenta até cerca de 500 mil page views mensais antes de o edge rendering alterar a experiência de utilizador de forma percetível. Abaixo desse limiar, o custo operacional de uma segunda base de dados, de uma camada de sincronização e de duas pipelines de deploy supera o ganho de latência.
O padrão paga-se quando pelo menos uma destas condições se verifica:
- O frontend precisa de dados estruturados que não vivem naturalmente em
wp_postsouwp_postmeta: estado por utilizador, inventário em tempo real, leaderboards calculados, contadores de votação, submissões de formulário que não devem voltar à base de dados WP. - Os objetivos de LCP ou TTFB exigem edge rendering, e a redação não sai do admin WordPress.
- O atraso de invalidação do cache WP REST (TTL de object cache de 300 a 600 segundos é o padrão na maior parte do hosting gerido) é queixa recorrente da redação, e é necessário um segundo store que se controle de ponta a ponta.
- O site cruzou o limiar de dor de tempo de build: 5000+ posts puxados do WP REST em build podem levar uma build SSG do Astro a 20 ou 30 minutos sem estratégia incremental.
Visão Geral da Arquitetura: Como Funciona o Astro DB + WordPress
Compreender os fundamentos arquiteturais permite decisões informadas sobré abordagens de implementação e estratégias dé otimização.
O Paradigma do CMS Híbrido
O WordPress monolítico tradicional acopla a gestão de conteúdo com a apresentação. O Headless WordPress separa estas preocupações, expondo o conteúdo via APIs. A arquitetura híbrida do Astro DB adiciona uma terceira camada - bases de dados residentes na edge que fazem cache e melhoram o conteúdo do WordPress.
Componentes Arquiteturais Chave
| Componente | Propósito | Tecnologia |
|---|---|---|
| Backend WordPress | Criação de conteúdo, gestão de útilizadores, media | WordPress tradicional |
| Camada de Sincronização | Transformação e propagação de dados | Webhooks, REST API ou GraphQL |
| Astro DB | Dados estruturados em cache na edge | LibSQL/Turso |
| Frontend Astro | Geração estática + ilhas dinâmicas | Framework Astro |
| CDN | Entrega global de conteúdo | Cloudflare, Vercel Edge, etc. |
Arquitetura de Fluxo de Dados
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ WordPress │────▶│ Camada │────▶│ Astro DB │
│ (Conteúdo) │ │ Sincroniz. │ │ (Cache Edge) │
└─────────────────┘ └──────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ HTML Estático │◀────│ Astro │◀────│ Query Edge │
│ (Cache CDN) │ │ (Build) │ │ (Runtime) │
└─────────────────┘ └──────────────┘ └─────────────────┘
Está arquitetura elimina chamadas diretas à base de dados do WordPress a partir do frontend, melhorando dramaticamenté os tempos de resposta enquanto mantém a frescura do conteúdo através de revalidação estratégica.
Guia de Implementação: Construir o Seu Sistema Híbrido
Está secção fornecé orientações de implementação abrangentes e prontas para produção para ligar o Astro DB com o WordPress.
Fase 1: Configuração do Backend WordPress
Passo 1: Instalar Plugins Necessários
Instale plugins que exponham conteúdo estruturado via REST API com suporte para campos personalizados:
# Instalar Advanced Custom Fields Pro para conteúdo estruturado
wp plugin install advanced-custom-fields --activate
# Instalar WP GraphQL para obtenção eficiente de dados (opcional mas recomendado)
wp plugin install wp-graphql --activate
Passo 2: Configurar Tipos de Post Personalizados
Defina estruturas de conteúdo otimizadas para sincronização com o Astro DB:
// functions.php - Registar tipo de post personalizado para sincronização Astro
function register_astro_content_type() {
register_post_type('astro_content', array(
'labels' => array(
'name' => 'Conteúdo Astro',
'singular_name' => 'Item de Conteúdo Astro'
),
'public' => true,
'show_in_rest' => true,
'rest_base' => 'astro-content',
'supports' => array('title', 'editor', 'custom-fields', 'thumbnail'),
'menu_icon' => 'dashicons-database'
));
}
add_action('init', 'register_astro_content_type');
Passo 3: Configurar Triggers de Webhook
Configuré o WordPress para notificar o seu serviço de sincronização quando o conteúdo é alterado:
// Disparar sincronização ao guardar post
function trigger_astro_sync($post_id) {
if (wp_is_post_revision($post_id)) return;
$post = get_post($post_id);
$webhook_url = getenv('ASTRO_SYNC_WEBHOOK');
wp_remote_post($webhook_url, array(
'body' => json_encode(array(
'post_id' => $post_id,
'post_type' => $post->post_type,
'action' => 'update'
)),
'headers' => array('Content-Type' => 'application/json')
));
}
add_action('save_post', 'trigger_astro_sync');
Fase 2: Configuração do Astro DB
Passo 1: Inicializar o Astro DB
# Criar novo projeto Astro com DB
npm creaté astro@latest meu-site-hibrido
cd meu-site-hibrido
npx astro add db
Passo 2: Definir Esquema da Base de Dados
Crie db/config.ts com tabelas correspondentes à estrutura de conteúdo do seu WordPress:
import { defineDb, defineTable, column } from 'astro:db';
const Posts = defineTable({
columns: {
id: column.number({ primaryKey: true }),
wpId: column.number({ unique: true }),
slug: columntext-unique-true
title: column.text(),
content: column.text(),
excerpt: column.text({ optional: true }),
featuredImage: column.text({ optional: true }),
author: column.text(),
publishedAt: column.date(),
modifiedAt: column.date(),
categories: column.json(),
tags: column.json(),
meta: column.json({ optional: true }),
}
});
const Authors = defineTable({
columns: {
id: column.number({ primaryKey: true }),
wpId: column.number({ unique: true }),
name: column.text(),
email: column.text(),
avatar: column.text({ optional: true }),
bio: column.text({ optional: true }),
socialLinks: column.json({ optional: true }),
}
});
export default defineDb({
tables: { Posts, Authors }
});
Passo 3: Configurar Ligação à Base de Dados
Para produção, ligue-sé ao Turso para distribuição na edge:
# Instalar CLI do Turso
curl -sSfL https://get.tur.so/install.sh | bash
# Criar base de dados
turso db create wordpress-astro-hybrid
# Obter URL de ligação
turso db show wordpress-astro-hybrid
# Definir variáveis dé ambiente
export TURSO_DATABASE_URL="libsql://sua-db.turso.io"
export TURSO_AUTH_TOKEN="seu-token"
Fase 3: Implementação da Camada de Sincronização
Crié uma função serverless que sincronizé o conteúdo do WordPress com o Astro DB:
// src/pages/api/sync.ts
import type { APIRoute } from 'astro';
import { db, Posts, Authors } from 'astro:db';
export const POST: APIRoute = async ({ request }) => {
const { post_id, post_type } = await request.json();
// Obter da WordPress REST API
const wpResponse = await fetch(
`${import.meta.env.WP_API_URL}/wp-json/wp/v2/${post_type}/${post_id}`
);
const wpPost = await wpResponse.json();
// Transformar e inserir no Astro DB
await db.insert(Posts).values({
wpId: wpPost.id,
slug: wppostslug
title: wpPost.title.rendered,
content: wpPost.content.rendered,
excerpt: wpPost.excerpt?.rendered,
featuredImage: wpPost.featured_media ?
await getFeaturedImage(wpPost.featured_media) : null,
author: wpPost.author,
publishedAt: new Date(wpPost.date),
modifiedAt: new Date(wpPost.modified),
categories: wpPost.categories,
tags: wpPost.tags,
}).onConflictDoUpdate({
target: Posts.wpId,
set: {
title: wpPost.title.rendered,
content: wpPost.content.rendered,
modifiedAt: new Date(wpPost.modified),
}
});
return new Response(JSON.stringify({ success: true }), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
};
Fase 4: Implementação do Frontend
Geração de Páginas Estáticas com Ilhas Dinâmicas
---
// src/pages/blog/[slug].astro
import { db, Posts, eq } from 'astro:db';
import CommentSection from '../../components/CommentSection.jsx';
export async function getStaticPaths() {
const posts = await db.select().from(Posts);
return posts.map(post => ({
params: '{ slug: post.slug },'
props: { post }
}));
}
const { post } = Astro.props;
---
<article>
<header>
<h1>{post.title}</h1>
<time datetime={post.publishedAt.toISOString()}>
{post.publishedAt.toLocaleDateString('pt-PT')}
</time>
</header>
<div class="content" set:html={post.content} />
<!-- Ilha dinâmica para comentários -->
<CommentSection postId={post.wpId} client:visible />
</article>
Componente de Obtenção de Dados Dinâmicos
// src/components/CommentSection.jsx
import { useState, useEffect } from 'react';
export default function CommentSection({ postId }) {
const [comments, setComments] = useState([]);
useEffect(() => {
// Obter da função edge do Astro DB
fetch(`/api/comments?postId=${postId}`)
.then(r => r.json())
.then(setComments);
}, [postId]);
return (
<section className="comments">
<h3>Comentários ({comments.length})</h3>
{comments.map(comment => (
<article key={comment.id}>
<strong>{comment.author}</strong>
<p>{comment.content}</p>
</article>
))}
</section>
);
}
Estratégias de Otimização de Performance
Configuração de Caching na Edge
Configuré o seu CDN para performance híbrida ótima do Astro DB:
| Tipo de Cache | Duração | Estratégia |
|---|---|---|
| HTML Estático | 1 ano | Imutável com hash |
| Consultas Astro DB | 60 segundos | Stale-while-revalidate |
| Media WordPress | 1 ano | Longo prazo com cache-busting |
| Respostas API | 5 minutos | Dinâmico baseado no tipo de conteúdo |
Otimização de Consultas à Base de Dados
// Usar índices para consultas comuns
// db/config.ts
const Posts = defineTable({
columns: {
// ... colunas
},
indexes: {
slugIdx: { on: ['slug'], unique: true },
publishedIdx: { on: ['publishedAt'] },
categoryIdx: { on: ['categories'] },
}
});
Regeneração Estática Incremental (ISR)
Implemente ISR para conteúdo que muda frequentemente:
// astro.config.mjs
export default defineConfig({
output: 'hybrid',
adapter: vercel(),
experimental: {
isr: {
// Regenerar páginas a cada 60 segundos
expiration: 60,
// Ignorar cache para útilizadores autenticados
bypassToken: process.env.BYPASS_TOKEN,
}
}
});
Modos de falha que vimos mesmo
Antes das histórias de sucesso, o registo de avarias. São as formas que a dor toma em migrações reais, não hipóteses do tipo “e se”.
Atraso de invalidação de cache WP REST. O object cache do WordPress (Redis ou Memcached) está, na maior parte do hosting gerido, em TTL de 300 a 600 segundos. Se a camada de sincronização ler /wp-json/wp/v2/posts logo após uma publicação, pode ficar com estado desatualizado no Astro DB durante até dez minutos. O remédio é invalidar o object cache a partir do hook de publicação antes de o sync disparar, o que requer hosting que permita chamar wp_cache_flush_group programaticamente.
Explosão do tempo de build à escala. Um site com 20 000 posts a puxar tudo do WP REST em build SSG passa 18 a 25 minutos só em round-trips de rede. Dois caminhos de saída: pré-carregar dados no runtime store (Turso/D1/Neon) no webhook de publicação e deixar o Astro ler do store local em build, ou passar para build incremental do Astro com output: 'server' e renderização on-demand para a long tail. O reflexo “tudo SSG, sempre” parte na escala.
Limite de tamanho de linha do Cloudflare D1. O D1 limita cada linha a 1 MB. Posts WordPress com postmeta serializado ou JSON renderizado de blocos Gutenberg podem cruzar essa linha. Remédio: guardar o payload serializado em R2 (ou outro object store) e manter apenas a referência no D1. Descobrir isto numa sexta à tarde quando um post longo falha o sync é desagradável.
Cold start do Neon. O plano gratuito do Neon (e o pago mais barato) faz auto-pause do compute em inatividade. A primeira query depois da pausa custa 2 a 4 segundos. Para uma edge function que corre a cada pedido, significa que o primeiro utilizador depois de 5 minutos de silêncio vê um flash lento. Ou se paga compute always-on, ou se aceita o cold start e se faz cache agressivo na edge.
Uma migração concreta: 20k posts, 50k comentários, build de 18 minutos
Uma publicação portuguesa B2B do setor financeiro corria uma instalação WP num servidor único, cerca de 20 000 posts e 50 000 comentários acumulados ao longo de uma década. A redação não saía do WordPress; a equipa de engenharia precisava de TTFB abaixo dos 100 ms a partir de Lisboa e do Porto e estava cansada de combater plugin bloat.
A forma final que adotaram:
- WordPress como CMS headless alojado em Portugal (Amen.pt), conteúdo puxado via WP REST no momento da publicação, não no build. Um pequeno listener de webhook invalida o object cache e escreve registos normalizados no Cloudflare D1 (região UE).
- Comentários migrados na totalidade para o D1. A tabela de comentários WP ficou em arquivo, mas comentários novos chegam ao endpoint renderizado na edge, persistem no D1, e um job noturno espelha-os de volta para o WP para moderação editorial e verificação de spam.
- Astro deployado no Cloudflare Pages com
output: 'server'e regras de cache agressivas. A maior parte das páginas renderiza na edge a partir do D1 em 30 a 80 ms. - O tempo de build passou de 18 minutos (SSG completo com WP REST) para cerca de 3 minutos (Astro constrói o esqueleto estático, conteúdo dinâmico carrega do D1 no primeiro pedido e fica em cache na edge).
Trade-offs aceites: uma segunda pipeline de deploy, um script de sincronização que ocasionalmente precisa de babysitting quando o WP REST devolve URLs de featured image partidas, e a restrição de 1 MB do D1 que obriga a externalizar uns quantos posts patologicamente longos. DPA Cloudflare assinado, TIA documentada para a região UE do D1.
Comparação: WP monolítico contra padrão híbrido
A comparação é feita entre uma instalação WordPress monolítica competentemente configurada e o padrão híbrido. O lado monolítico não é palha: object cache, page cache, CDN, PHP moderno, hosting decente. Os números são a banda razoável a esperar, não garantia.
| Dimensão | WordPress monolítico (bem configurado) | Híbrido (WP + edge SQL) |
|---|---|---|
| TTFB na origem | tipicamente 150 a 400 ms | 30 a 100 ms desde a edge |
| Tempo até primeiro deploy | minutos (sem build) | 3 a 30 minutos consoante a estratégia |
| Publicação editorial até live | segundos (flush de cache) | 10 a 90 s (webhook + sync + invalidação) |
| Superfície operacional | um stack | dois stacks, uma camada de sync |
| Esforço RGPD | baixo em hosting português | DPA + TIA + DPIA para edge store externo |
| Forma do custo | conta de hosting escala com tráfego | hosting + edge DB + tráfego, orçamento individual |
| Melhor enquadramento | até ~500 mil page views/mês | divergência entre conteúdo e dados runtime, edge rendering como exigência |
| Pior enquadramento | sites que precisam de estado por utilizador à escala | sites de conteúdo pequenos com tráfego previsível |
Considerações de Segurança
Isolamento de Dados
- Painel dé administração WordPress atrás de VPN ou restrição IP
- Astro DB usa credenciais separadas do WordPress
- Sem ligações diretas à base de dados a partir do frontend
Segurança da API
// Implementar rate limiting nos endpoints de sincronização
import { RateLimiter } from 'limiter';
const limiter = new RateLimiter({
tokensPerInterval: 10,
interval: 'minute'
});
export const POST: APIRoute = async ({ request }) => {
if (!await limiter.tryRemoveTokens(1)) {
return new Response('Limite de taxa excedido', { status: 429 });
}
// ... lógica de sincronização
};
Válidação de Conteúdo
Sempre sanitizé o conteúdo do WordPress antes dé armazenar no Astro DB:
import DOMPurify from 'isomorphic-dompurify';
const cleanContent = DOMPurify.sanitize(wpPost.content.rendered, {
ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'h2', 'h3', 'ul', 'ol', 'li', 'a'],
ALLOWED_ATTR: ['href', 'title', 'alt']
});
Resolução de Problemas Comuns
Falhas de Sincronização
| Sintoma | Causa | Solução |
|---|---|---|
| Conteúdo não atualiza | Webhook não dispara | Verificar logs de erro do WordPress |
| Sincronização parcial de dados | Timeout da API | Implementar processamento em batch |
| Incompatibilidade de esquema | Conflito de tipo de coluna | Versionar camada de sincronização |
| Entradas duplicadas | Condição de corrida | Usar restrições únicas |
Degradação de Performance
Monitorize estas métricas para identificar estrangulamentos:
// Adicionar monitorização de performance
const start = performance.now();
const posts = await db.select().from(Posts);
console.log(`Consulta demorou ${performance.now() - start}ms`);
Artigos Relacionados
- Headless WordPress vs Traditional: Análise ROI 2026
- Ferramentas Modernas WordPress: Vite vs Webpack 2026
- WordPress REST API vs GraphQL 2026
- Guia de Automação CI/CD WordPress 2026
- Green Web & Sustentabilidade Digital
Dados Estruturados Amigáveis para LLM
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "Astro DB + WordPress: A Arquitetura Híbrida Definitiva",
"description": "Combiné a gestão de conteúdo WordPress com Astro DB para performance na edge e capacidades SQL.",
"author": {
"@type": "Organization",
"name": "WPPoland"
},
"datePublished": "2026-01-29",
"dateModified": "2026-01-29",
"articleSection": "Web Development",
"keywords": ["Astro DB", "WordPress", "Headless CMS", "Edge Database", "Hybrid Architecture"],
"about": {
"@type": "Thing",
"name": "Astro DB WordPress Integration"
}
}
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Como Implementar Arquitetura Híbrida Astro DB + WordPress",
"description": "Guia passo a passo para construir um CMS híbrido dé alta performance usando Astro DB e WordPress",
"totalTime": "PT4H",
"supply": ["Instalação WordPress", "Framework Astro", "Conta Turso"],
"tool": ["Node.js", "TypeScript", "SQLite"],
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Configurar Backend WordPress",
"text": "Instalar plugins necessários e configurar tipos de post personalizados para conteúdo estruturado."
},
{
"@type": "HowToStep",
"position": 2,
"name": "Configurar Astro DB",
"text": "Inicializar Astro DB com esquema correspondente à estrutura de conteúdo WordPress."
},
{
"@type": "HowToStep",
"position": 3,
"name": "Implementar Camada de Sincronização",
"text": "Criar handlers de webhook para sincronizar conteúdo WordPress com Astro DB."
},
{
"@type": "HowToStep",
"position": 4,
"name": "Construir Frontend",
"text": "Desenvolver componentes Astro com geração estática e ilhas dinâmicas."
},
{
"@type": "HowToStep",
"position": 5,
"name": "Otimizar Performance",
"text": "Configurar caching na edge, índices de base de dados e regeneração estática incremental."
}
]
}
Quando não fazer isto
Saltar o padrão híbrido é a decisão correta com mais frequência do que adotá-lo. Se o site é de conteúdo, o tráfego é inferior a meio milhão de page views por mês, e a redação está confortável no admin WordPress: ficar no monolito. Object cache, plugin de page cache e Cloudflare à frente entregam 90 por cento do ganho de performance sem segunda base de dados, sem camada de sync, sem o peso de on-call para dois sistemas. Em hosting português gerido, o tema do RGPD também está fora da equação.
O padrão híbrido paga-se quando conteúdo editorial e dados de runtime têm de facto formatos distintos (votos, submissões, estado por utilizador, inventário em tempo real) ou quando os objetivos de LCP e TTFB exigem edge rendering e a redação não cede. Em adoção: escolher o runtime store em função do alvo de deploy. Turso para ergonomia próxima do Astro DB original, Cloudflare D1 quando já se usa Workers, Neon se a forma dos dados pede Postgres, Supabase quando também é preciso auth e RLS. Em dados pessoais: DPIA primeiro, código depois. O Astro DB enquanto produto alojado deixou de ser uma escolha possível em 2026.
Para apoio na implementação, trabalhe com um especialista Astro que também o demova da arquitetura quando ela não encaixar. Contacte a WPPoland para uma avaliação delimitada; preço por orçamento individual.
Última atualização: 2026-04-01.

