rembrant777 / db-engine Goto Github PK
View Code? Open in Web Editor NEWtoy objected database engine implementation based on c & c++
License: GNU Affero General Public License v3.0
toy objected database engine implementation based on c & c++
License: GNU Affero General Public License v3.0
add pthread's useful api's unit test case with name of pthread_test.cpp includes
phtread_t, pthread_attr_t, pthread_mutex_t, pthread_cond_t;
pthread_create
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
pthread_mutext_unlock
pthread_cond_init
pthread_cond_destroy
pthread_cond_signal
pthread_cond_broadcast
pthread_join
pthread_exit
emeralddb is originally designed and implemednted based on the hash map.
what we need to enhance and explore is design uniform api that can shielding underlying details supports
multiple structure like:
B tree, B+ tree Bw and lsm (not sure for now just add a todo) and so on, uniform api deisgn also provides convenience to benchmark testing cases' execution .
Support actions to compile project source and execute unit test cases.
add bson as 3rd library to current project and implement CMakeLists.txt to support bson compile by cmake
try to support tree lsm structures to replace original hash table structure this is the first step
and in second step try to implement those structures based on rdma devices and based on the operations like wqe that rdma device support
Recently we got a failure in GitHub merge workflow after enabling in cmake file automatically quietly install gtest.
failure link address: https://github.com/Rembrant777/db-engine/actions/runs/4275539172
It is not maintainable to set gtest installation logic in cmake's CMakeLists.txt, cuz local env already have gtest installed, everytime execute local cmake will duplicate download. And in github workflow download not stable and difficult to maintain.
Move the gtest download && installation as a step same as boost's package download, compile and installation.
in this issue we add codes for client module, all codes locate in client/
branch name: issue_client
todo:
we also need add a system memory leaking tools in the github workflow for detecting whether each push codes may cause memory issues.
install protobuf
in github work flow stepAdd gtest framework as 3rd library to support method and module unit test
for now, we support boost and gtest install automatically in github workflow everytime user executes pull request or push operations.
it is ok for gtest install and linking time, however, boost's package download, compile and install takes a too long time.
there are two ways can solve this time-consuming step in the workflow which are worth investigating:
in previous db-engine project compiling and packaging all depend on multiple complex steps which often met linux system problems(or even cannot support mac local compiling).
like if we need to compile a project often follow those steps
autoscan
# autoscan will generte a intermidiate file with the name of configure.scan
# we need to rename the file from configure.scan to configure.ac
aclocal
autoconf
autoheader
automake --add-missing # this steps often need meet lots of errors
./configure CXXFLAGS= CFLAGS=
# after we execute the configure we often got a Makefile
# finally execute make operaiton
make
in order to reduce those kind of issues happen and improve coding efficienty. I would like to choose cmake/CMakeLists.txt this compiling tool to liberate me from previous autoscan, automake
those complex tools. In this way what I care about is how to write CMakeLists.txt
and how to organize the parameters/flags that need to passing to the project.
Add a todo list:
branch: us_action
instead of sending data that stored in a buffer pointed by the char*
we need to design the message body(struct) that contains message self detail metadata, message header and message body. also message type should be varied from different transporting scenarios.
add class to encapsulate thread pool basic operations
todo:
we also need to add a step or a new job for checking memory-leaking issues with the help of google sanitizers.
here is a demo for google sanitizer usage sample
Support network principle communication module(socket) and corresponding test cases.
branch: us_network
Add more logs support info, debug, error and trace
design docs are required(test cases. and modules)
for now we already support gtest ut cases automatically executed every time we pull a request, what's more we also require an extra step that gonna generate test case coverage report and memory leak analyzing report just after unit test execution step.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.