Overview
Data is a fundamental pillar of modern software engineering. This section covers database fundamentals and practical data access tools used in production applications.
What You'll Learn
- Databases - SQL fundamentals, PostgreSQL, and Datomic
- Data Tools - Database migration and data-access tools across languages (Liquibase, Flyway, Alembic, Goose, EF Core, Ecto, SQLx, and more)
- Analytics - Data analytics fundamentals through annotated examples
Available Content
Databases
SQL - Master the standard language for relational databases
- Query fundamentals (SELECT, WHERE, JOIN)
- Data manipulation (INSERT, UPDATE, DELETE)
- Schema design and table relationships
- Indexing and query optimization
- Transactions and constraints
PostgreSQL - Advanced open-source relational database
- PostgreSQL-specific features and extensions
- JSON and advanced data types
- Window functions and CTEs
- Performance tuning and optimization
- Backup, recovery, and replication
Datomic - Immutable, time-aware database with Datalog queries
- Immutable facts and point-in-time queries
- Datalog query model
- Separation of reads, writes, and storage
Data Tools
Data Tools - Schema migration and data-access libraries across languages
- Migration tools: Liquibase, Flyway, Alembic, Goose, Migratus, DbUp
- Data access & ORMs: Spring Data JPA, EF Core, Ecto, SQLx, Effect SQL
- Version your schema and access data idiomatically per language
Analytics
Analytics - Data analytics fundamentals through annotated, runnable examples
Learning Approach
Each topic provides By Example tutorials with practical, runnable code:
- Beginner - Core concepts and basic operations
- Intermediate - Production patterns and optimization
- Advanced - Complex queries and performance tuning
Start with SQL fundamentals, then explore database-specific features and ORM tools for your language stack.
Getting Started
- SQL Fundamentals - Start here to learn database querying
- PostgreSQL - Explore advanced features
- Pick a data tool: browse Data Tools for the migration or data-access library that fits your language stack
Last updated December 22, 2025