Skip to content

Introduction to OstrichDB

OstrichDB is an open-source hierarchical NoSQL database system designed for efficient data organization and retrieval. This implementation provides the core database engine functionality with a RESTful API server, written entirely in the Odin programming language.

Open-Ostrich is the open-source version of OstrichDB, a hierarchical NoSQL database that organizes data in a structured, nested format. Unlike traditional relational databases, OstrichDB uses a hierarchical approach that makes it ideal for organizing complex, nested data structures.

OstrichDB organizes data in a natural hierarchy:

  • Projects contain Collections
  • Collections contain Clusters
  • Clusters contain Records

This structure provides intuitive data organization and efficient querying capabilities.

Support for a wide variety of data types including:

  • Basic types (strings, integers, floats, booleans)
  • Date and time types
  • Arrays of all basic types
  • UUIDs and encrypted credentials
  • End-to-end encryption with user-specific master keys
  • JWT-based authentication
  • User isolation with multi-tenant architecture
  • Secure operations with automatic encrypt/decrypt cycles

Complete REST API with comprehensive endpoints for all database operations, including advanced filtering and search capabilities.

OstrichDB is built with a modular architecture:

  • Engine: Core database engine and data processing logic
  • Server: HTTP server with RESTful API endpoints
  • Data Layer: Handles Collections, Clusters, and Records
  • Security: Encryption, decryption, and key management
  • Configuration: Dynamic configuration management
  • Projects: User isolation and project lifecycle management

OstrichDB is ideal for applications that need:

  • Hierarchical data organization
  • Multi-tenant data isolation
  • Strong security and encryption
  • Flexible querying capabilities
  • RESTful API access
  • Rich data type support

Ready to start using OstrichDB? Continue to the Installation guide to set up your development environment.