Introduction
RethinkDB is a NoSQL database that stores data as JSON documents. It has a super intuitive query language and has features commonly available in traditional RDBMS like “table joins” and “group by”. This tutorial will explain how to setup a RethinkDB cluster using 3 AKLWEB HOST VPS servers running Ubuntu 14.04.
Installation
Create a new AKLWEB HOST startup script using the following content as a template.
#!/usr/bin/env bash
echo ">>> Installing RethinkDB<<<"
# Add RethinkDB Repo to list of Repos
source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list
wget -qO- http://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -
# Update Apt Repo & Install RethinkDB
sudo apt-get update
sudo apt-get install -qq rethinkdb
Spin up a AKLWEB HOST VM instance by picking any Server Type, Location, and Server Size of your choice. For the choice of Operating System, make sure to select Ubuntu 14.04 x64 and check the Enable Private Network option. Also MAKE SURE to select the startup script created above before placing your order.
Connect To Your New VM Instance
Once your new VM instance is ready, connect to it from a terminal/command-prompt via SSH.
ssh root@[aklwebhost-ip-address]
When prompted for your password, use the initial password under “server info” tab from AKLWEB HOST admin.
You can update your password by typing passwd
and hitting the ENTER key. Ubuntu will prompt you for a new password (this way you can choose something that you easily remember).
Accessing Database
Start RethinkDB by running command below. Note that we’re “binding to all” so that we don’t run into issues when trying to access RethinkDB’s web admin interface.
rethinkdb --bind all
Once RethinkDB is started, you access it either by command-line or a web interface.
Web Access
To access via web, use port 8080 by typing http://[aklwebhost-ip-address]:8080
in the address bar of your web browser. You should see RethinkDB’s awesome web administration tool.
Command-Line Access
To access via command-line, start a new terminal/command-prompt session and connect to the server via SSH as explained previously. Then, issue the command rethinkdb admin join 127.0.0.1:29015
. Make sure to use port 29015.
Remove Test Database
We will be using the web interface going forward to manipulate the database. Access it by browsing to http://[aklwebhost-ip-address]:8080
and click on the “Tables” link. You will see that RethinkDB already installed a “test” database. Click on the “Data Explorer” link and run below command to delete the “test” database.
r.dbDrop('test')
Playing Around in Database
While still on the “Data Explorer” section of RethinkDB’s admin, create a new database named “tweetDB” by running the code below.
r.dbCreate('tweetDB')
Next, create a “tweets” table.
r.db('tweetDB').tableCreate('tweets')
Insert some records into the “tweets” table.
r.db('tweetDB').table('tweets').insert([
{
name: 'Lami',
twitterHandle: 'mrLami',
message: 'Best cloud hosting on the planet - aklwebhost'
},
{
name: 'AKLWEB HOST',
twitterHandle: '@aklwebhost',
message: '50% off on new instances - coupon - tgif'
}
])
Query “tweets” table to see results.
r.db('tweetDB').table('tweets')
You should see the following under tree view (with different id’s).
[
{
"id": "6afe436c-7db4-4c86-b4db-3279acb3265d" ,
"message": "50% off on new instances - coupon - tgif" ,
"name": "AKLWEB HOST" ,
"twitterHandle": "@aklwebhost"
} ,
{
"id": "fd328cd5-d9f4-40ee-8a32-880cd8cda15d" ,
"message": "Best cloud hosting on the planet - aklwebhost" ,
"name": "Lami" ,
"twitterHandle": "mrLami"
}
]
Setting Up Cluster
Spin up a second and third machine using instructions from the “Installation”, “Connect To Your New VM Instance” and “Accessing Database” sections of this guide. Make sure to delete the “test” database on each of the new instances, and DO NOT add any new databases to them.
After deleting the “test” database from second and third instances, go back to their command prompts and stop RethinkDB by issuing Ctrl + C (or Cmd + C on Mac). Now start RethinkDB again on these instances by using the below command (we’re basically telling new second and third instances to join the first).
$ rethinkdb --join [ip-of-first-aklwebhost-vm]:29015 --bind all
On the second and third instances, access web admin interfaces, and go to the “Data Explorer” section. Run the following query to get a list of tweets.
r.db('tweetDB').table('tweets')
You will see that they have already replicated from the master (first VM setup) instance.
Conclusion
Although RethinkDB is still in its infancy at the time of this writing, it holds a lot of promise and has a powerful web-based administration interface that makes arduous tasks usually involved with scaling a database (sharding, replication) easily accomplished with just a few clicks.
For further reading, visit the RethinkDB Docs. Also check out #rethinkdb IRC channel to learn more from the community.
Other Versions
Written by Lami Adabonyan