# Data: tools in this layer of The Stack

> Databases, migrations and the data lake. 9 tools, from Nicolas Dao's defaults to what he would never use (Cloudless Labs, Sydney).

- Web page: https://cloudlesslabs.com/stack/layers/data/

## My default

- [AWS Database Migration Service](https://cloudlesslabs.com/stack/aws-dms/index.md), Database migrations: The only migration tool I use. It works.
- [Neon (serverless Postgres)](https://cloudlesslabs.com/stack/neon/index.md), Default database: My go-to Postgres. Scales to zero, branches like git, and talks HTTP so Lambda needs no VPC or proxy.

## Use when it fits

- [Aurora PostgreSQL](https://cloudlesslabs.com/stack/aws-aurora/index.md), AWS-native Postgres: Peace of mind and scale, at a price. My choice when the client must stay all-AWS.
- [DuckDB](https://cloudlesslabs.com/stack/duckdb/index.md), Embedded analytics engine: SQL over Parquet that runs anywhere, from my laptop to a Lambda. Next to Athena, not instead of it.
- [S3 + Glue + Athena](https://cloudlesslabs.com/stack/aws-athena-data-lake/index.md), Data lake: The data lake that works. Not amazing. Pair it with DuckDB.

## Skip

- [Amazon OpenSearch](https://cloudlesslabs.com/stack/aws-opensearch/index.md), Search and log analytics engine: Overkill for most apps. Postgres full-text plus pgvector covers search. Instead: Postgres full-text search plus pgvector, next to the data you already have.
- [Cloudflare D1](https://cloudlesslabs.com/stack/cloudflare-d1/index.md), SQLite databases for Workers: The business case is thin, and there's no tooling to migrate thousands of databases. Durable Objects do per-tenant SQLite better. Instead: Durable Objects for per-tenant SQLite; Neon for a normal database.
- [Cloudflare Hyperdrive](https://cloudlesslabs.com/stack/cloudflare-hyperdrive/index.md), Database connection pool for Workers: A Postgres connection pool for Workers only. My business logic isn't on Workers, so I don't need it. Instead: Neon's HTTP driver, which works from Workers and Lambda alike.

## Never

- [Amazon DynamoDB](https://cloudlesslabs.com/stack/aws-dynamodb/index.md), Key-value and document database: I've never had a use case it fits better than Postgres with JSONB. Instead: Postgres on Neon, with JSONB for the document-shaped data.

## Related

- [An API for my app](https://cloudlesslabs.com/stack/use-cases/api/index.md): a job that picks or avoids tools from this layer
- [Something live that many people watch at once](https://cloudlesslabs.com/stack/use-cases/realtime/index.md): a job that picks or avoids tools from this layer
- [Device and IoT data](https://cloudlesslabs.com/stack/use-cases/iot/index.md): a job that picks or avoids tools from this layer
- [Semantic search and RAG](https://cloudlesslabs.com/stack/use-cases/search/index.md): a job that picks or avoids tools from this layer
- [A database](https://cloudlesslabs.com/stack/use-cases/database/index.md): a job that picks or avoids tools from this layer
- [A data lake](https://cloudlesslabs.com/stack/use-cases/data-lake/index.md): a job that picks or avoids tools from this layer
- [Logs without a shocking bill](https://cloudlesslabs.com/stack/use-cases/logging/index.md): a job that picks or avoids tools from this layer
- [Moving on-premises systems to AWS](https://cloudlesslabs.com/stack/use-cases/migration/index.md): a job that picks or avoids tools from this layer
- [Every layer, use case and tool in one file](https://cloudlesslabs.com/stack/brief.md)
- [Map of every Markdown file on cloudlesslabs.com, with what each one answers](https://ask.cloudlesslabs.com)
