Skip to content
/ elenadb Public

Database Management System written in Go, extremely fast, compatible with B+ tree.

Notifications You must be signed in to change notification settings

fisirc/elenadb

Repository files navigation

elenadborasi

🚂 Try elena

go mod tidy
go run ./cmd/elenadb mydb.elena

elena>

ElenaDB architecture

ElenaDB internal workflow (spanish)

The modules

  • The Elena CLI:

    See docs/cli.md for the Elena CLI specification.

    go run ./cmd/elena mydb.elena

    The REPL communicates directly with the Execution Engine, starting from the parsing stage. Currently only parsing is supported.

  • The Elena Query Language:

    See docs/queries.md for the complete Language specification.

    • SQL-like syntax heavily inspired by the peruvian lexicon.

    • Easy to understand and know what's happening.

    • Compound queries were never so easy to read!

      let pedro = dame { id } de usuario donde (nombre=="pedro") pe
      
      mete {
          id_user: pedro.id,
          document_type: 'DNI',
          document_number: '72016572',
      } en doctor pe
      
  • Storage Engine

    We'll build a disk-oriented storage manager for the Elena DBMS. The primary storage location of the database is on disk. The BufferPool in the storage manager allows the DBMS to handle databases larger than the available system memory by transparently managing page requests.

    Key Components:

    1. LRU-K Replacement Policy Objective: Track page usage and implement an eviction policy based on backward k-distance.
    2. Disk Scheduler Objective: Schedule read and write operations on the disk. Make sure it is thread-safe!
    3. Buffer Pool Manager Objective: Manage fetching and storing of database pages between disk and memory.

Algorithms used

Data structures used

About

Database Management System written in Go, extremely fast, compatible with B+ tree.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published