Skip to content

Database Storage Engine variants merged into one.

Notifications You must be signed in to change notification settings

owolabioromidayo/yugodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YugoDB

YugoDB architecture diagram

融合(Yūgō) -> Fusion

The database engine to fuse them all. Relational/Document and Row/Column oriented storage at your fingertips, with support for cross-type joins.

Features

  • Custom Query Language and Interpreter
  • Vector materialization model for query execution
  • Multi-file paging system and cache
  • Ser/deser of relational and document row DBs
  • Thousand row insertion
  • DBMS operations through query string ( CreateDB, CreateTable, Insert)
  • Insert document and specify relational schemas using json strings in query
  • 1k entries test

In Progress

  • B+ Tree range queries and ser/deser V+ Tree into pages
  • Million row challenge and culling hotpaths
  • Batched operations
  • More extensive testing and refactor
  • Hook up client to new changes, test and optimize concurrency features
  • Database state serialization and WAL
  • Index Loop Joins

Future Plans

  • Optimization model, might require rewrite

Example Usage

        // Setup db and tables
        dbs.create_db('test_db');
        dbs.create_table('test_db' ,'test_table', 'DOCUMENT', 'ROW');

        dbs.create_table('test_db' ,'test_rtable', 'RELATIONAL', 'ROW', '{
            'name': 'string(50)',
            'balance': ['numeric', true],
            'pob': 'string',
            'active': 'boolean'
        }');

        //insert values
        dbs.insert('test_db', 'test_table', '{ 
                'name': 'John Doe',
                'age': 30.0,
                'city': 'New York',
                'address': {
                    'street': '123 Main St',
                    'zip': '10001'
                },
                'phone_numbers': [
                    '123-456-7890',
                    '987-654-3210'
                ]
        }');

        dbs.insert('test_db', 'test_table', '{
            'name': 'Jane Smith',
            'age': 25.0,
            'city': 'London',
            'address': {
                'street': '456 High St',
                'zip': 'SW1A 1AA'
            },
            'phone_numbers': [
                '020-1234-5678'
            ],
            'employment': {
                'company': 'Acme Inc.',
                'position': 'Software Engineer',
                'start_date': {
                'year': 2022.0,
                'month': 1.0
                }
            }
            }');

            dbs.insert('test_db', 'test_rtable', '{
                'name': 'Jane Smith',
                'balance': '2502034304.2332',
                'pob': 'London',
                'active': true
            }');

            dbs.insert('test_db', 'test_rtable', '{
                'name': 'John Doe',
                'balance': '450.2332',
                'pob': 'New York',
                'active': false
            }');
       
        //actual dataflow
        let x = dbs.test_db.test_table.offset(0);  
        let y = dbs.test_db.test_rtable.offset(0);  
        let z  = x LJOIN y ON name=name;
        z.limit(10);

More documentation will be provided on the execution model and internals soon!

About

Database Storage Engine variants merged into one.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages