Skip to content

Frequently Asked Questions

FerrisDB is an educational distributed database project built in Rust. It’s inspired by FoundationDB and implements a real LSM-tree based storage engine, WAL for durability, and eventually will include distributed consensus. The key difference? We’re building it completely in public, documenting every decision, mistake, and learning moment.

Current Progress: Day 4 of development with 11,306 lines of Rust code, 217 passing tests, and 10 blog posts.

We’re not trying to compete with PostgreSQL, MySQL, or any production database. FerrisDB exists to:

  • Demystify how databases actually work
  • Show that complex systems can be understood by anyone
  • Demonstrate effective human-AI collaboration
  • Provide the most transparent database development process ever attempted

Complete transparency

Every line of code, every decision, every mistake is documented

Human-AI collaboration

Built by a CRUD developer and Claude working together

Educational focus

Optimized for understanding, not just performance

Real implementation

Not toy examples, but actual working database code

FerrisDB is being built by:

  • The Human: A CRUD developer who spent years using databases without understanding them
  • Claude: An AI assistant providing knowledge, implementation help, and pattern recognition
  • The Community: Contributors who help improve code, documentation, and learning materials

Claude serves multiple roles:

  • Knowledge base: Explains complex database concepts in understandable terms
  • Implementation partner: Helps write actual Rust code and debug issues
  • Pattern recognizer: Identifies common mistakes and learning opportunities
  • Documentation assistant: Helps create clear, comprehensive documentation
  • Teaching assistant: Breaks down complex topics for the blog and database concepts articles

Absolutely not! This project proves the opposite. The human provides:

  • Creative vision and project direction
  • Domain context and real-world experience
  • Decision-making about what to build
  • Quality control and code review
  • The “why” behind features

Claude amplifies human capabilities but can’t replace human judgment, creativity, or domain expertise.

We’re meticulous about attribution:

  • Both blogs document who contributed what
  • Git commits include collaboration commentary tracking our process
  • We never swap credit for dramatic effect
  • Accurate attribution helps study effective collaboration patterns
  • All commits include 🤖 emoji to mark AI collaboration

FerrisDB is perfect for:

  • CRUD developers curious about database internals
  • Rust learners who want real-world examples
  • Students studying database systems
  • Anyone who’s wondered “but how does it actually work?”

Not necessarily! We offer multiple learning paths:

Database Concepts

Focus on database concepts (language-agnostic)

Rust by Example

Learn Rust through database code with comparisons to JavaScript, Python, Java, and Go

Development Blog

Follow our collaboration journey from both human and AI perspectives

  1. Start with Database Concepts if you want to understand database concepts
  2. Try Rust by Example if you want to learn Rust through practical code
  3. Follow the blogs to understand the development process:
  4. Run the code locally to experiment and learn by doing
  5. Contribute to really solidify your understanding

Database concepts:

  • How LSM-trees provide fast writes
  • Why Write-Ahead Logs ensure durability
  • How SSTables organize data on disk
  • Lock-free data structures for concurrency
  • MVCC for transaction isolation
  • Distributed consensus (coming soon)

Rust concepts:

  • Ownership and borrowing in practice
  • Safe concurrency patterns
  • Error handling without exceptions
  • Zero-cost abstractions
  • Systems programming techniques

Rust is perfect for databases because:

  • Memory safety without garbage collection
  • Concurrency without data races
  • Performance comparable to C/C++
  • Modern tooling and ecosystem
  • Learning opportunity for the human developer

Starting from scratch means:

  • Every line of code is understood and documented
  • No legacy decisions to work around
  • Clear learning progression from simple to complex
  • Better teaching opportunity

FerrisDB follows a layered architecture inspired by FoundationDB:

  • Storage Engine: LSM-tree with MemTable (Skip List) and SSTables ✅
  • Write-Ahead Log: Crash recovery and durability ✅
  • Transaction Layer: MVCC for isolation (planned)
  • Distribution Layer: Consensus and sharding (planned)
  • Client Library: Simple key-value API (planned)
Terminal window
# Clone the repository
git clone https://github.com/ferrisdb/ferrisdb
cd ferrisdb
# Run tests
cargo test --all
# Run benchmarks
cargo bench
# Build the project
cargo build --release

See our documentation for detailed instructions.

Yes! We welcome contributions:

  • Code improvements: Performance, safety, clarity
  • Documentation: Explanations, examples, corrections
  • Bug reports: Help us improve
  • Feature ideas: What should we build next?
  • Learning materials: Tutorials, exercises, examples
  1. Read our Contributing Guidelines
  2. Check existing issues or create new ones
  3. Fork, branch, implement, test
  4. Submit a PR with clear description
  5. Iterate based on feedback
  • GitHub Issues: For bugs and feature requests
  • GitHub Discussions: For questions and community chat
  • Blog comments: For specific article discussions

Yes! Check our Roadmap for the current status. We update it regularly as we progress.

Based on our roadmap, immediate priorities:

  1. Basic Operations: Get/Put/Delete operations, batch writes, range queries
  2. Storage Optimization: Compaction, bloom filters, block cache, compression
  3. ACID Transactions: MVCC foundation, snapshot isolation, optimistic concurrency
  4. Distribution Layer: Consensus protocols, replication, sharding
  5. Production Features: Monitoring, backup/restore, client libraries

That’s not the goal. FerrisDB succeeds if:

  • People understand databases better
  • Developers feel empowered to tackle complex projects
  • Human-AI collaboration patterns improve
  • The community learns together

As long as there’s something valuable to learn and teach! We’re documenting not just building a database, but the entire journey of learning systems programming.


If your question isn’t answered here, please:

  1. Check our documentation
  2. Read the database concepts articles
  3. Open an issue on GitHub