Hi @mikaelronstrom ,
I’m learning the RonDB internal architecture and reading RonDB source codes from github,
But from latest version , I can’t find Key-Value Store in RonDB.
Can you indicate this, please?
Hi @mikaelronstrom ,
I’m learning the RonDB internal architecture and reading RonDB source codes from github,
But from latest version , I can’t find Key-Value Store in RonDB.
Can you indicate this, please?
Not sure what exactly you are expecting as the Key-Value store in RonDB.
RonDB is a Key-value store with SQL capabilities.
I presume you are looking for the APIs that gives you access to Key-Value operations against
RonDB. There are 3 such APIs, the C++ NDB API, ClusterJ, a Java native API and Jones, a native NodeJS API towards RonDB. These are documented at docs.rondb.com.
The actual source code for the C++ NDB API resides in storage/ndb/src/ndbapi.
There is some example code in storage/ndb/ndbapi-examples.
The ClusterJ source code is found in storage/ndb/clusterj
The C++ NDB API has the ability to perform batches of Key-Value operations with
multiple transactions in the same batch. ClusterJ also has batching operation support.
Database Jones, the NodeJS API towards RonDB is located in its own github tree.
We are also working on a new REST API towards RonDB that will be easy to use in modern languages such as Go and so forth.
hi @mikaelronstrom ,
I mean that RonDB’s internal implementation , not frontend api interface.
I found DLHashTable, Is DLHashTable RonDB’s Key-Value Store data structure?
Ok,
The quickest introduction to the code is found in the documentation
at docs.rondb.com.
DLHashTable and so forth are hash tables used to handle internal records.
The hash table used by tables is implemented in storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp.
It is part of the Local Data Manager (LDM) where DBACC is the hash table, DBTUP handles the actual
row (tuple) storage, DBLQH is the controlling code for LDM plus REDO log handling and DBTUX contains the ordered index implementation (a T-Tree implementation). Other parts of LDM are PGMAN (disk columns page cache), LGMAN (disk columns UNDO log), TSMAN (disk columns tablespace manager), BACKUP (backup and checkpoints), RESTORE (restore a checkpoint).
In addition RonDB is a distributed key-value store, the distribution aspects is handled in the tc
threads which is implemented mostly in DBTC, but the actual data distribution is handled in
DBDIH with a shared data structure for this for all tc threads.
But again this is documented at a fairly detailed level at docs.rondb.com. Recently I added a
chapter on source code structure, recovery in RonDB and communication between threads
and nodes in RonDB.
OK, I research these documents.