Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size .
The system consists of 3 major components :
- Master Server
- Tablet Servers
- Clients
- Balance data between connected tablet servers .
- Construct metadata and send it to the clients.
- Re-balance data .
- Manage logs of the whole system .
- Each tablet server manages number of tablets .
- Provide API for clients .
- Handle read requests without locking .
- Handle update/delete requests (mutex-lock) .
- Contain lazy deleted , updated , created vectors .
- Send their logs to master immediately .
- Send requests to tablet servers .
- Choose right tablet server according to available metadata .
any number of tablet servers can be added and each tablet server can manage any number of tablets .
# install dependencies
$ npm i
# run master server
$ npm run master
# run tablet servers
$ npm run tabletserver1
$ npm run tabletserver2
# run clients
$ npm run client1
$ npm run client2