Overview
Databases are specialized systems for storing, organizing, and retrieving data efficiently. This section covers relational databases (SQL, PostgreSQL) and immutable databases (Datomic).
What You’ll Learn
- SQL - The standard language for relational database querying and manipulation
- PostgreSQL - Advanced open-source relational database with powerful features
- Datomic - Immutable database with time-travel queries and datalog
- Database Design - Schema design, normalization, and indexing strategies
- Query Optimization - Performance tuning and query analysis
- Transactions - ACID properties, isolation levels, and concurrency control
Available Databases
SQL - Universal Database Language
SQL provides the foundation for working with relational databases:
- Query Fundamentals - SELECT, WHERE, JOIN for data retrieval
- Data Manipulation - INSERT, UPDATE, DELETE operations
- Schema Definition - CREATE TABLE, indexes, constraints
- Aggregation - GROUP BY, HAVING, aggregate functions
- Advanced Queries - Subqueries, window functions, CTEs
- Transactions - BEGIN, COMMIT, ROLLBACK
PostgreSQL - Production Database System
PostgreSQL extends SQL with advanced features:
- Advanced Data Types - JSON, arrays, ranges, custom types
- Performance Features - Parallel queries, partitioning, materialized views
- Full-Text Search - Built-in text search capabilities
- Extensions - PostGIS for geospatial, pg_trgm for fuzzy matching
- Replication - Streaming replication, logical replication
- Administration - Backup strategies, performance tuning, monitoring
Datomic - Immutable Database
Datomic provides immutable data storage with powerful temporal features:
- Immutability - Facts are never deleted, only accumulated over time
- Time-Travel Queries - Query database at any point in history with
as-of,since,history - Datalog Query Language - Declarative, composable queries based on logic programming
- ACID Transactions - Strong consistency with serializable isolation
- Flexible Schema - Schema evolves incrementally without migrations
- Audit Trail - Every fact timestamped and preserved forever
Learning Path
For Relational Databases
- Start with SQL fundamentals - Learn the universal language of relational databases
- Explore PostgreSQL - Apply SQL knowledge to a production database with advanced features
For Immutable Databases
- Start with Datomic - Learn immutable data storage, datalog queries, and time-travel
All databases provide By Example tutorials:
- Beginner - Core concepts and basic operations (0-40% coverage)
- Intermediate - Production patterns and optimization (40-75% coverage)
- Advanced - Expert techniques and administration (75-95% coverage)
Database Operations
Relational Databases (SQL, PostgreSQL)
- Schema Design - Normalization, relationships, constraints
- Query Optimization - Indexes, EXPLAIN plans, query tuning
- Transactions - ACID guarantees, isolation levels, deadlocks
- Backup & Recovery - pg_dump, WAL archiving, point-in-time recovery
- Security - User management, role-based access, SSL connections
- Monitoring - pg_stat views, performance metrics, logging
Immutable Databases (Datomic)
- Schema Evolution - Additive schema changes without migrations
- Datalog Queries - Pattern matching, joins, rules, aggregates
- Time Queries - as-of, since, history for temporal navigation
- Transaction Functions - Database functions executing inside transactions
- Audit Trails - Transaction metadata and change tracking
- Performance - Index selection, caching, query optimization
Getting Started
Relational Databases
Begin with SQL to build a strong foundation in relational database concepts. Then explore PostgreSQL to learn production database features and administration.
Immutable Databases
Start with Datomic to learn immutable data storage, datalog queries, and time-travel capabilities.
Choosing Your Database
- Use SQL/PostgreSQL for traditional CRUD applications, complex queries, mature ecosystem
- Use Datomic for audit trails, event sourcing, temporal queries, immutable data requirements
All paths include practical, annotated examples you can run immediately.
Last updated