MySQL, Postgres or Oracle all have HA and replication, backup and recovery but these are still a huge monolith of data stores spanning huge volumes of disks.
The traditional way of solving these would be the sharding of db ( db-federation ) ...segregating reads and write to different instances ( PS : https://www.brentozar.com/articles/sharding/)
Scale up : is to load a server instance with more resources (CPU, Memory ... )
Scale out : is to create more instance of server ( this needs sufficient network pipe ...)
Scale out solution with db sharding could be of 3 choices
1. Range Partitoning
2. List Partitioning
3. Consistent Hashing ( wow, i learned this in the context of load balancer )
Now, with all these traditional approaches.
How distributed systems could solve this elegantly ( how i got glued to cockroachDB )
Cloud spanner :
- is from google, its is a light weight distributed data store which can be SQL queried.
- Release in early 2017 , a quite internal customer inside google for many years
- Has libraries for go, java, nodes, python
CockroachDB :
- A on-prem solution is from cockroach labs https://github.com/cockroachdb/cockroach
- Light weight go-lang implementation uses confesses protocol in the backend , gossip and raft.
- Very easy to set up , can start as docker over the docker network bridge
- These guys are from google who did spanner implementation for google, lets hope for the best
Amazon Athena :
- Is a similar SQL based distributed data store , but it is server less.
- Metered only when query is fired on data sets.
- Cool editor to handle SQL queries , handed data from S3 buckets
How easy to get started with cockroach DB ?
1.Create a docker network "roachnet"
#docker network create -d bridge roachnet
#docker run -d --name=roach1 --hostname=roach1 --net=roachnet -p 26257:26257 -p 8080:8080 -v "${PWD}/cockroach-data/roach1:/cockroach/cockroach-data" cockroachdb/cockroach:beta-20170413 start --insecure
3. Start the second cockroach DB node
#docker run': docker run -d --name=roach2 --hostname=roach2 --net=roachnet -v "${PWD}/cockroach-data/roach2:/cockroach/cockroach-data" cockroachdb/cockroach:beta-20170413 start --insecure --join=roach1
4.Start the third cockroach DB node
#docker run': docker run -d --name=roach3 --hostname=roach3 --net=roachnet -v "${PWD}/cockroach-data/roach3:/cockroach/cockroach-data" cockroachdb/cockroach:beta-20170413 start --insecure --join=roach1
Voila , cockroachDB with 3 nodes are up and running
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1940aab526f cockroachdb/cockroach:beta-20170413 "/cockroach/cockro..." 46 hours ago Up 46 hours 8080/tcp, 26257/tcp roach3
93939da8b5f8 cockroachdb/cockroach:beta-20170413 "/cockroach/cockro..." 46 hours ago Up 46 hours 8080/tcp, 26257/tcp roach2
466fd24c9720 cockroachdb/cockroach:beta-20170413 "/cockroach/cockro..." 46 hours ago Up 46 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:26257->26257/tcp roach1
No comments:
Post a Comment