Skip to Content
PortuguêsDocumentação JumentixAdaptadoresBancos de dadosAdapters de bancos de dados

Adapters de bancos de dados

Escolha o adapter de banco pelo modelo de dados, pelo perfil operacional e pelo smoke test que confirma o ciclo de vida de conexão.

Tabela de comparação dos bancos integrados

AdapterTecnologia integradaModelo de dadosMelhor usoSmoke test
InMemoryStore em memória local ao processoObjetos com chaveTestes unitários, demos e exemplos de contrato sem browser.bun run smoke:db:inmemory
PostgreSQLPostgreSQL pelo perfil de cliente SQLSQL relacionalSistemas transacionais com integridade relacional, índices e relatórios.bun run smoke:db:postgresql
MySQLMySQL pelo perfil de cliente SQLSQL relacionalWorkloads relacionais comuns, CRUD SaaS e times com experiência operacional em MySQL.bun run smoke:db:mysql
SQL ServerMicrosoft SQL Server pelo perfil de cliente SQLSQL relacionalAmbientes enterprise padronizados em plataformas de dados Microsoft.bun run smoke:db:mssql
OracleOracle Database pelo perfil de cliente SQLSQL relacionalSistemas enterprise já investidos em operação e governança Oracle.bun run smoke:db:oracle
SQLiteBanco SQL embarcado em arquivoSQL relacional embarcadoDesenvolvimento local, protótipos edge, testes e utilitários single-node.bun run smoke:db:sqlite
MongoDBMongoDB por wiring de repositório MongooseBanco de documentosDomínios centrados em documentos, schemas flexíveis e persistência no formato de agregados.bun run smoke:db:mongodb
DynamoDBBanco key-value e documento AWS DynamoDBKey-value/documentoServiços AWS-native que precisam de escala gerenciada e modelagem por padrão de acesso.bun run smoke:db:dynamodb
CassandraBanco wide-column Apache CassandraWide-columnVolume muito alto de escrita, distribuição multi-node e padrões de consulta conhecidos antes.bun run smoke:db:cassandra
FirebasePerfil de banco Firebase com suporte a emulatorDados de app documento/realtimeSuperfícies de produto rápidas que aproveitam tooling Firebase e validação local com emulator.bun run smoke:db:firebase
AuroraPerfil relacional compatível com Amazon AuroraSQL relacional gerenciadoWorkloads relacionais na AWS que precisam de operação gerenciada e caminhos de escala cloud.bun run smoke:db:aurora
RDSPerfil relacional compatível com Amazon RDSSQL relacional gerenciadoTimes AWS padronizando bancos relacionais gerenciados sem mudar código de domínio.bun run smoke:db:rds

Guia rápido

  • Use InMemory para testes, demos e exemplos.
  • Use bancos SQL quando o domínio pede relações, transações e relatórios.
  • Use SQLite para local, single-node e arquivo.
  • Use MongoDB quando agregados são documentos.
  • Use DynamoDB ou Cassandra quando padrões de acesso e escala de escrita são centrais.
  • Use Firebase quando o ecossistema Firebase e emulator ajudam o produto.

Exemplo completo de seleção

type DatabaseAdapterChoice = {
  driver: string;
  smokeTest: string;
  durable: boolean;
};

const databaseChoices: DatabaseAdapterChoice[] = [
  { driver: 'InMemory', smokeTest: 'bun run smoke:db:inmemory', durable: false },
  { driver: 'PostgreSQL', smokeTest: 'bun run smoke:db:postgresql', durable: true },
  { driver: 'Mongo', smokeTest: 'bun run smoke:db:mongodb', durable: true },
  { driver: 'DynamoDB', smokeTest: 'bun run smoke:db:dynamodb', durable: true },
  { driver: 'SQLite', smokeTest: 'bun run smoke:db:sqlite', durable: true }
];

export function selectDatabaseAdapter(driver: string): DatabaseAdapterChoice {
  const choice = databaseChoices.find((item) => item.driver === driver);

  if (!choice) {
    throw new Error('Unsupported database driver: ' + driver);
  }

  return choice;
}