MiniOB is an introductory database learning project developed by the OceanBase team based on the database course prototype of Huazhong University of Science and Technology and jointly with many universities, and is specially designed for students with zero foundation. Our goal is to provide a friendly database learning program for school students, database practitioners, enthusiasts, or people interested in basic technologies.
The overall code of MiniOB is concise and easy to use. It has designed a series of questions from easy to deep to help students get started from scratch, quickly understand the database and learn the database core in depth. MiniOB simplifies many modules, such as not considering concurrent operations, security features and complex transaction management functions, in order to better learn database implementation principles. We hope that through the training of MiniOB, students will be able to master the functions and synergy relationships of the database kernel module, and have certain engineering coding capabilities, such as memory management, network communication and disk I/O processing, etc., which will help students in Stand out in future interviews and jobs.
Code supporting documentation and related code comments have been generated and published through GitHub Pages. You can visit directly: MiniOB GitHub Pages.
In order to help developers get started and learn MiniOB better, it is recommended to read the following content:
In order to help everyone better learn the basics of databases, the OceanBase community provides a series of tutorials. For more documentation, please refer to MiniOB GitHub Pages. Recommended learning:
The overall architecture of MiniOB is shown in the figure below:
in:
Network module: responsible for interacting with the client, sending and receiving client requests and responses;
SQL parsing: parses the SQL statement entered by the user into a syntax tree;
Execution plan caching: The execution plan caching module will cache the execution plan generated for the first time by the SQL in memory. Subsequent executions can repeatedly execute this plan, avoiding repeated query optimization processes (not implemented).
Semantic parsing module: convert the generated syntax tree into the internal data structure of the database (partially implemented);
Query caching: caches the executed query results in memory, and can return them directly the next time you query (not implemented);
Query optimization: Adjust/rewrite the syntax tree according to certain rules and statistical data. (partially implemented);
Plan execution: execute and generate results according to the syntax tree description;
Session management: manage user connections and adjust parameters of a certain connection;
Metadata management: record current database, table, field and index metadata information;
Client: As a testing tool, it receives user requests and initiates requests to the server.
The 2022 OceanBase Database Competition is a database in-line verification competition guided by the Database Professional Committee of the China Computer Federation (CCF) and jointly organized by OceanBase and the academic cooperation team of the Ant Technology Research Institute. This competition is mainly open to university students across the country who love databases. With the purpose of "competition, communication, and growth", it builds a technical exchange platform based on the event, promotes innovative talent training mechanisms in universities, and not only helps students systematically learn database theoretical knowledge from scratch , improve students' database practical ability, help students gain experience in enterprises, promote the development of domestic database talents, and create sparks of innovation.
The OceanBase preliminary competition is based on MiniOB, a database training platform suitable for beginners to practice. It has a small amount of code and is easy to learn. It contains various key modules of the database and is a systematic database learning platform. Based on this platform, a series of questions from easy to deep are set up to help students get started with a "zero" foundation.
The 2023 OceanBase Database Competition is in full swing. For more details, please refer to the OceanBase Competition.
Contest introductory tutorial
Introduction to competition questions
After completing the questions and passing the self-test, you can submit the code for testing on the MiniOB training camp.
Before submitting, please refer to and study the training camp instructions.
Competition FAQ
This warehouse establishes a rapid online development platform based on Gitpod. Click the button below to experience it with one click (Chrome browser is recommended).
You need to install some dependencies when entering Gitpod for the first time. After the installation is completed, the terminal interface will display "Dependency installed successfully". Run the bash build.sh --make -j4
command to compile MiniOB.
The OceanBase community warmly welcomes every developer who loves database technology and looks forward to starting a journey of collision of ideas with you. Whether it is document format adjustment or text correction, bug fixing or adding new features, it is one of the ways to participate in and contribute to the OceanBase community. Make your first contribution now! For more details, please refer to Community Contributions.
MiniOB adopts the Mulan Permissive License, version 2. You can freely copy and use the source code. When modifying or distributing it, please comply with the Mulan Permissive License, version 2.