Replication And Sharding
Visit this page here also
Sharding
Splitting up databases in bunch of different databases are known as SHARDING.
Split up your tables store some rows in one shard and certain rows in other shard.
Example Any payment coming from USA is going shard 1 and any payment coming from India goes to shard 2.
Hotspots
Some shard get more data than other. In order to solve the problem we should use consistent hashing. If DB go down then you need Replica you can not use consistent hashing
How to run
Running Database Servers for Shard 1
Open new powershell in admin mode from the root of this project. And run below script:
- Run
$env:PORT="3000"; $env:DATA_DIR="aedb_data_0"; node aedb.mjs

Running Database Servers for Shard 1
Open new powershell in admin mode from the root of this project. And run below script.
- Run
$env:PORT="3001"; $env:DATA_DIR="aedb_data_1"; node aedb.mjs

Running reverse proxy server
Open new powershell in admin mode from the root of this project. And run below script:
- Run
node aedb_proxy.mjs

Running client
Posting Data to Shard running at port 3001
Use fiddler or postman to make Http Post to ` http://localhost:8000/a` address and using below JSON.
{
"data":"Rupesh how are you?"
}


Getting Data from Shard running at port 3001
Use fiddler or postman to make Http Get to ` http://localhost:8000/a` address.

#### Posting Data to Shard running at port 3000
Use fiddler or postman to make Http Post to ` http://localhost:8000/b` address and using below JSON.
{
"data":"Hello data in shard 0?"
}

Getting Data from Shard running at port 3000
Use fiddler or postman to make Http Get to ` http://localhost:8000/b` address.
