The Dingo-Store project is a distributed KV storage system based on multiple Raft replication groups, which also provides storage layer computation offloading capability. The upper-layer service of this project is DingoDB based on SQL, and it can also provide high-frequency serving storage capability based on KV. The overall architecture of the project is as follows:

The storage cluster in DingoDB, Dingo-Store, contains the following roles:
The Coordinator serves as the central metadata management component for the entire DingoDB cluster, utilizing the raft consensus protocol. It maintains the metadata detailing data distribution and the overall topology of the DingoDB cluster. Often referred to as 'the brain' of the DingoDB system, the Coordinator not only holds the cluster's metadata but also oversees resource allocation. For robustness and high availability, the Coordinator operates with a minimum of three nodes. An odd number of Coordinator nodes is recommended for optimal deployment.
Dingo-Store offers a multi-replica mechanism based on the Raft protocol, ensuring data consistency. It also provides capabilities such as log replication, Leader election, Raft Group migration, snapshot installation, and automatic splitting based on data size. Moreover, Dingo-Store maps all business data models to a Key-Value data model, delivering seamless high-frequency Key-Value read-write capabilities. For instance, it transforms table models and index models entirely into KV representations.
Dingo-Index is a specialized version of Dingo-Store. It not only offers distributed data storage capabilities but also ensures real-time construction of high-dimensional vector data and its indexing. It provides extensive search capabilities in high-dimensional spaces. The system supports vector index formats such as HNSW and IVF.
Welcome to visit DingoDB. The documentation of DingoDB is located on the website: https://dingodb.readthedocs.io. The main projects about DingoDB are as follows:
Dingo-Store is a hybrid project of C++ and Java, where C++ provides distributed storage and computing capabilities, while the Java layer provides basic API interfaces.
git submodule sync --recursive
git submodule update --init --recursive
mkdir build && cd build
# Release
cmake -DCMAKE_BUILD_TYPE=Release -DTHIRD_PARTY_BUILD_TYPE=Release -DDINGO_BUILD_STATIC=ON -DBUILD_UNIT_TESTS=OFF ..
# Debug
cmake -DCMAKE_BUILD_TYPE=Debug -DTHIRD_PARTY_BUILD_TYPE=Debug -DDINGO_BUILD_STATIC=ON -DBUILD_UNIT_TESTS=ON ..
# RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTHIRD_PARTY_BUILD_TYPE=RelWithDebInfo -DDINGO_BUILD_STATIC=ON -DBUILD_UNIT_TESTS=ON ..
makecd java && mvn clean package -DskipTestsFor more detailed information, please refer to: Guide of Contribution
Dingo-Store is an open-source project licensed in Apache License Version 2.0, welcome any feedback from the community. For any support or suggestion, please contact us.
