awesome-repositories.com
博客
awesome-repositories.com

通过 AI 驱动的搜索,发现最优秀的开源仓库。

探索精选搜索开源替代品自托管软件博客网站地图
项目关于排名机制媒体报道MCP 服务器
法律隐私政策服务条款
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
oceanbase avatar

oceanbase/miniob

0
View on GitHub↗
4,318 星标·1,567 分支·C++·mulanpsl-2.0·4 次浏览oceanbase.github.io/miniob↗

Miniob

MiniOB is an open-source educational relational database kernel designed for learning the internals of database systems. It implements a dual-engine storage architecture combining B+ Tree and LSM-Tree, supports SQL parsing and query execution, and provides transactional processing with multi-version concurrency control. The system communicates with clients using the MySQL wire protocol and includes a vector database extension for storing and querying high-dimensional vectors.

The project distinguishes itself through its comprehensive coverage of core database concepts in a single, learnable codebase. It features a volcano-style execution model with SIMD-accelerated batch processing, write-ahead logging with checkpoint-based crash recovery, and a frame-based buffer pool for disk page management. The system supports multiple transaction isolation levels, deadlock detection and resolution, and includes an IVF-Flat vector index for approximate nearest neighbor search.

The database includes a full SQL processing pipeline with query optimization techniques such as predicate pushdown, join reordering, and subquery flattening. It provides configurable thread pool models for client connection handling, supports custom SQL statement extensions, and includes monitoring tools for concurrency debugging and memory usage tracking. The project ships with a Docker-based development environment and an automated testing framework that can compare outputs against MySQL.

Features

  • Relational Data Storage - Manages on-disk relational data storage using pages, buffers, and file organization.
  • Educational Database Systems - An open-source relational database kernel designed for learning database internals.
  • Concurrent Read-Write Transactions - Coordinates concurrent read and write operations to maintain ACID properties.
  • Atomic Transaction Coordinators - Coordinates concurrent transactions with isolation and atomicity guarantees using a transactional storage layer.
  • Data Persistence and Storage - Manages persistent data storage and retrieval through a dedicated storage engine.
  • Record-Level Indexes - Build and maintain index structures to accelerate record retrieval by key values.
  • Transactional Row Storages - Persists rows to disk and reads them back while preserving atomicity and isolation for each operation.
  • Commit Order Dependencies - Coordinate transaction commit order by tracking which transactions must commit before others to prevent deadlocks.
  • Relational Database Metadata Inspectors - Stores and retrieves metadata about databases, tables, fields, and indexes for schema operations.
  • Page-Based Storage - Organizes index data into fixed-size pages stored in external files for B+ tree nodes.
  • Scan Method Selections - Pick between full table scan and index scan based on relation size, selectivity, and available indexes to minimize data access cost.
  • Grouped Aggregations - Group rows by specified columns and compute aggregate functions per group using a hash-based approach.
  • Hash Join Implementations - Combine rows from two tables by building a hash table on one table and probing it with rows from the other.
  • Join Operator Selection - Select the lowest-cost join algorithm by comparing estimated costs of Nested Loop Join and Hash Join.
  • Join Order Selections - Evaluate alternative join sequences using cost estimates or heuristic rules to select the most efficient plan.
  • Level-Based Compaction Strategies - Implements level-based compaction to merge overlapping sorted runs and bound read amplification.
  • Multi-Version Concurrency Control - Controls transaction commit, rollback, and isolation using multi-version concurrency control.
  • MySQL Wire Protocol Servers - Communicates with clients using the standard MySQL wire protocol.
  • Fixed-Size Page Organizations - Divides database files into fixed-size pages and tracks which pages store data, free space, and contents.
  • Buffer Pool Page Evictions - Manages disk page loading into a fixed-size memory pool with eviction for efficient access.
  • Predicate Pushdown - Move filter conditions from the WHERE clause closer to the table scan to reduce rows processed early.
  • Query Aggregates - Compute aggregate functions like sum over all rows without grouping and process data in chunks for efficiency.
  • Query Plan Optimizations - Rewrites query syntax trees using rules and statistics to produce faster execution plans.
  • Query Plan Execution Engines - Parse SQL statements into a query plan and run it through a custom execution engine to produce results.
  • Result Sorting - Order the result set by specified columns in ascending or descending order using the ORDER BY clause.
  • Identifier Semantic Resolution - Translate table and field names in the syntax tree into pointers that point to actual in-memory metadata objects.
  • Arithmetic Expression Parsers - Parse arithmetic expressions with operator precedence, parentheses, and unary negation from SQL text into an abstract syntax tree.
  • SQL Query Optimizations - Rewrite and adjust the query syntax tree using rules and statistics to improve execution efficiency.
  • SQL Statement Parsing - Parse SQL statements into an internal representation for further processing and execution.
  • Per-Table File Group Storages - Persists each table as a set of files for metadata, data records, and indexes inside a database folder.
  • B+ Tree Indexing - Implements B+ tree index entry insertion with node splitting and upward propagation.
  • B+ Tree Index Entry Deletions - Removes key-value pairs from a B+ tree and borrows from or merges with sibling nodes when underfull.
  • Dual Storage Engines - Stores relational data using either a balanced B+ Tree for indexed lookups or a log-structured merge-tree for write-optimized batch operations.
  • Node Locking Mechanisms - Acquire read or write locks on tree nodes during traversal and release parent locks when child nodes are safe.
  • Range Scans - Walks leaf nodes of a B+ tree to retrieve all records whose keys fall within a specified interval.
  • Dual-Engine Storage Systems - Implements a dual-engine storage architecture combining B+ Tree and LSM-Tree.
  • LSM-Tree Key-Value Stores - A write-optimized storage engine organizing data in sorted runs with leveled compaction.
  • Subquery Flattenings - Rewrite nested subqueries as equivalent multi-table join operations to eliminate repeated execution and enable better access paths.
  • Isolation Level Management - Supports serializable, repeatable read, snapshot isolation, and read committed levels for transaction visibility.
  • Checkpoint-Based Recovery Logs - Creates periodic checkpoints to bound the log range needed for crash recovery.
  • Vector Storage - Stores high-dimensional vectors as a native column type with configurable dimensionality.
  • Write-Ahead Logging - Records before and after images of modifications to a log before flushing data pages to disk.
  • Checkpoint-Based Recovery Systems - Combines write-ahead logging with periodic checkpoints for crash recovery.
  • Interactive Command Line Interfaces - Read commands from standard input, send them to the server, and display the returned results.
  • Database Crash Recovery - Restores database consistency after failure using write-ahead logging and checkpoints.
  • Text SQL Executions - Accept plain-text SQL statements from authenticated clients and return results as OK, error, or result-set packets.
  • Relational Database Tutorials - A hands-on project for learning relational database internals by building a SQL engine.
  • Operation Logs - Records operation logs to support database recovery and durability.
  • Database Connection Acceptances - Accept TCP or Unix socket connections and dispatch requests to a thread model for processing.
  • Database Page Caching - Keep frequently accessed disk pages in a memory region using a page table with dirty flags and reference counts.
  • Slotted Page Storage Layouts - Arranges variable-length records inside pages using a slot array that grows from the front while data grows from the back.
  • Expression Type Hierarchies - Model SQL expressions as a class hierarchy covering fields, constants, comparisons, functions, and subqueries.
  • Concurrency Locking - Implements shared and exclusive locks on data items to coordinate concurrent transaction access.
  • Transaction Deadlock Resolution - Detects circular wait conditions in transaction lock graphs and aborts transactions to resolve deadlocks.
  • Volcano Query Processors - Processes SQL queries by pulling tuples one at a time through a tree of physical operators, enabling modular plan execution.
  • Buffer Pool Frame Managers - Manages disk page loading into memory frames with pin counting and lock tracking.
  • Database Test Case Executors - Execute a suite of SQL test cases against the database kernel and report pass or fail results for each case.
  • Corrupted Page Recovery Mechanisms - Restores partially written database pages from saved copies during crash recovery.
  • Database Internals - Shares internal technical notes and paper reviews to help developers understand database internals.
  • Fixed-Length Record Storage - Structures fixed-length records within pages using bitmaps for slot tracking.
  • Shared Table Scans - Attach multiple queries to a single table scan cursor so they reuse data already read from disk.
  • Static Hashing - Maps keys to buckets via hash functions for record retrieval from pages.
  • Heap Storage Engines - Stores records in unordered page collections with linked lists or page directories.
  • In-Memory Block Caches - Store frequently accessed data blocks in memory to accelerate lookups from sorted string table files.
  • Top-K Vector Similarity Retrievals - Retrieve the top-K most similar vectors by combining a distance function with ORDER BY and LIMIT clauses.
  • Output Comparison Validators - Run the same SQL statements on both MiniOB and MySQL and compare their outputs to detect discrepancies.
  • PAX Storage Layouts - Implements PAX hybrid storage layout that partitions attributes vertically within each database page.
  • Page Prefetching - Load pages into the buffer pool ahead of query execution to reduce wait time during sequential scans.
  • Aggregate Push-Ups - Move aggregate computation from a subquery into the outer query so the aggregation is calculated only once.
  • IVF-Flat Indexes - Accelerates nearest-neighbor search by clustering high-dimensional vectors and probing only the most relevant clusters during query time.
  • Custom SQL Statement Extensions - Adds new SQL statement types by defining lexer tokens, parser rules, AST nodes, and execution operators.
  • Concurrent Tree Mutations - Run multi-threaded insert, delete, query, and scan workloads under Google Benchmark to verify concurrency correctness.
  • Subquery Merging Optimizations - Combine several semantically equivalent subqueries into a single one to reduce redundant table scans and join operations.
  • Vector Database Extensions - Extends the relational database with vector storage, distance functions, and nearest neighbor search.
  • Vector Arithmetic - Supports element-wise vector addition, subtraction, and multiplication in SQL queries.
  • SIMD-Accelerated Arithmetic - Uses single-instruction-multiple-data instructions to speed up arithmetic, aggregation, and hash-table operations on vectorized data chunks.
  • Batch Processing Accelerators - Use single-instruction-multiple-data instructions to speed up arithmetic, aggregation, and hash-table lookups on vectorized data.
  • Relational Algebra Rewritings - Transform a relational algebra expression into an equivalent form that reduces intermediate result sizes and improves efficiency.
  • SQL Vector Distance Functions - Calculate L2, cosine, or inner-product distance between two vectors using built-in SQL functions.
  • Sequential Scan Buffer Pool Bypasses - Read large sequential page runs directly into local query memory instead of the shared buffer pool.
  • Dedicated Connection Threads - Assign each client connection its own thread that listens for messages, processes SQL, and sends responses.
  • Server Thread Pools - Selects between one-thread-per-connection and a shared thread pool at startup via a command-line argument.
  • Shared Connection Thread Pools - Route all client connections through a single thread pool that listens for messages and dispatches tasks to worker threads.
  • Custom - Define new test scenarios by writing Python code that groups DDL, DML, and DQL instructions with dependency ordering.
  • Databases and Analytics - Compact database for learning database internals.
  • C Plus Plus - Listed in the “C Plus Plus” section of the Awesome For Beginners awesome list.

Star 历史

oceanbase/miniob 的 Star 历史图表oceanbase/miniob 的 Star 历史图表

AI 搜索

探索更多 awesome 仓库

用简单的语言描述您的需求 —— AI 将根据相关性为您从数千个精选开源项目中进行排序。

Start searching with AI

Miniob 的开源替代方案

相似的开源项目,按与 Miniob 的功能重合度排序。
  • cmu-db/bustubcmu-db 的头像

    cmu-db/bustub

    4,861在 GitHub 上查看↗

    This is an educational relational database engine used in Carnegie Mellon University's database systems course. Students learn internals by implementing core components of a working database, including storage, indexing, concurrency control, and crash recovery. The system covers key database architecture: a B+ tree index for fast key-based lookups and range scans, a disk-oriented buffer pool that caches pages from disk, an iterator-based query execution model that composes physical operators, page-based storage for records, two-phase locking for coordinating concurrent transactions, and write

    C++databasedbms
    在 GitHub 上查看↗4,861
  • h2database/h2databaseh2database 的头像

    h2database/h2database

    4,607在 GitHub 上查看↗

    H2 is a JDBC-compliant relational database management system written in Java. It functions as an embeddable SQL database that can run directly within an application process to remove network latency, or as an in-memory database for high-performance volatile storage. It also includes a web-based console for executing SQL commands and administering schemas. The system is characterized by its flexible deployment modes, including a standalone server mode for remote TCP/IP access and a mixed mode for simultaneous local and remote connectivity. It features a dialect emulation layer and compatibilit

    Javadatabasejavajdbc
    在 GitHub 上查看↗4,607
  • skyzh/mini-lsmskyzh 的头像

    skyzh/mini-lsm

    4,034在 GitHub 上查看↗

    Mini-LSM is an educational storage engine and key-value database library designed to demonstrate the implementation of log-structured merge-tree architecture. It serves as a pedagogical resource for understanding how to build high-performance storage systems from the ground up, focusing on the mechanics of persistent data structures and disk-based storage. The project provides a functional framework for managing data through memory-to-disk flushing and multi-version concurrency control. It distinguishes itself by implementing snapshot-based isolation, which allows for consistent views of the

    Rustdatabasekey-value-storekv-store
    在 GitHub 上查看↗4,034
  • cberner/redbcberner 的头像

    cberner/redb

    4,248在 GitHub 上查看↗

    redb is an embedded key-value store and ACID-compliant storage engine. It functions as a persistent storage system for saving and retrieving data as key-value pairs within a tree structure. The engine is built as an MVCC transactional database, utilizing multi-version concurrency control to manage simultaneous reads and writes without blocking. It employs a single-writer multi-reader model to ensure data consistency while allowing multiple threads to access the store. The system provides persistent state management and atomic transaction management to prevent data corruption during crashes.

    Rustrust
    在 GitHub 上查看↗4,248
查看 Miniob 的所有 30 个替代方案→

常见问题解答

oceanbase/miniob 是做什么的?

MiniOB is an open-source educational relational database kernel designed for learning the internals of database systems. It implements a dual-engine storage architecture combining B+ Tree and LSM-Tree, supports SQL parsing and query execution, and provides transactional processing with multi-version concurrency control. The system communicates with clients using the MySQL wire protocol and includes a vector database extension for storing and querying high-dimensional vectors.

oceanbase/miniob 的主要功能有哪些?

oceanbase/miniob 的主要功能包括:Relational Data Storage, Educational Database Systems, Concurrent Read-Write Transactions, Atomic Transaction Coordinators, Data Persistence and Storage, Record-Level Indexes, Transactional Row Storages, Commit Order Dependencies。

oceanbase/miniob 有哪些开源替代品?

oceanbase/miniob 的开源替代品包括: cmu-db/bustub — This is an educational relational database engine used in Carnegie Mellon University's database systems course.… h2database/h2database — H2 is a JDBC-compliant relational database management system written in Java. It functions as an embeddable SQL… skyzh/mini-lsm — Mini-LSM is an educational storage engine and key-value database library designed to demonstrate the implementation of… cberner/redb — redb is an embedded key-value store and ACID-compliant storage engine. It functions as a persistent storage system for… cockroachdb/pebble — Pebble is an embedded key-value storage engine written in Go, designed as a library that provides durable,… spacejam/sled — Sled is an embedded key-value store and ACID-compliant database designed for high-performance data persistence. It…