Distributed system for managing structured data that is designed to scale to a very large size.
The data this system manages consists of one BigTable that is sharded into
3 tablets divided by Row Key , Each tablet is assigned a key range of data .
The system consists of 3 major components :
- One Master Server
- Two Tablet Servers
- Many Clients
- Tablets Assignment
- Listens For Any Updates Requests And Checks For Balancing
- Balances Data between the 3 Tablets Whenever Necessary
- Updates Metadata And Resends It To The Clients
- Manages Logs For The Whole System In A local File System
- Each Tablet Server Manages One Or Two Tablets
- Provides API For Clients
- Handles Multiple Requests At A Time (Locking)
- Sends Updates Periodically To Master
- Sends Its Logs To Master Periodically
- Sends Requests To Tablet Servers Based On The Provided API
- Manages Sending Requests To The Right Tabler Server Based On The Provided MetaData
API Functions |
---|
Read Row/s |
Delete Row/s |
Update Row/s |
Delete Row/s Field/s |
Insert Row/s |
- Nodejs
- Vue
- Mongodb
- Socket.io
- Async-Mutex
# install
$ cd master
$ npm i
$ npm run install-tablets-client
# master-run
$ cd master
$ npm run start
# tablet server#1-run
$ cd tablet-server
$ npm run start
# tablet server#2-run
$ cd tablet-server2
$ npm run start
# client-run
$ cd client
$ npm run serve - Then Open http://localhost:8080/ -
# for Logs
$ cd master
$ npm run start-logs - Then Open master/systemLogs.log -
Nada Abdelmaboud | Menna Mahmoud | Hager Ismael | Nihal Mansour | Aya Adel |
This software is licensed under MIT License, See License