Background

This project was created with two goals in mind.

  • Develop indexing capabilities starting with the b-tree algorithm.
  • Upskill on specific technologies: Linux development, modern C++, cross-platform development.
Index

The first goal was to learn about and develop a fast indexing capability. The project was initially developed as an API to access btree functionality. The primary force driving development is education and knowledge. That information may be applied to improve reasoning about similar systems.
The capabilities developed were chosen to help learn about specific aspects of how a production system may work. So while a feature exists, it may not be optimized or ready for general use. An example of this is implementation of a subset of datatypes, as the effort to provide coverage for commercial use cases has limited educational value.

Technology

The second goal was to leverage the project to :

  • gain a deeper understanding of Linux by developing a project on the platform.
  • update and modernize C++ skillset by using C++17 or later capabilities.
  • learn how a project can be developed with cross-platform support for Linux and Windows compilation.
Key Moments

The project started as an API to interface with a single btree index directly. With the addition of multi-index storage, metadata tables were added to provide an ability to self-describe the data stored. When the query capability was added, a lexical parser was chosen to output an RPN to provide an effective way to query an index. From there, the small step of generalizing the parser for all operations was taken. The API commands were switched out for a parser front-end. A similar replacement occurred for the metadata queries internally, where index operations were switched to parser driven commands.