NoSQL databases are quite different from the Relational Database Management Systems. NoSQL are non tabular, and store data differently than relational tables. Based on their data model NoSQL databases come in a variety of types. The main ones include document, key-value, wide-column, and graph. One beautiful feature about them is that they provide flexible schemas and scale easily with large amounts of data and high user loads.
World Class RavenDB Document Database is one of these databases that looks for better ways to process information to power a robust 21st century application. Before we embark on getting RavenDB installed, let us have a look at its features in a nutshell:
- Cluster-wide ACID Transactions
- Pull Replication: Pull Replication makes it easy to keep even the remotest edge units updated.
- Graph API: Look into the future and become predictive with your data.
- Distributed Counters: RavenDB’s distributed counters let multiple servers handle aggregated load.
- Revert Revisions – The database time machine: Fix a database-scope mistake with ease.
- Multi-model Architecture
- High Availability
- Advanced Query Engine
- Database Management Studio
- Integrated with RDBMS
- Ease of Use
RavenDB is written in .NET Core so it requires the same set of prerequisites as .NET Core.
It is time now that we start installing RavenDB.
Step 1: Update server and Install .NET Core Runtime
We will start the installation of RavenDB by getting all the requirements catered for. Since it requires .NET Core, let us go ahead and install it on our Ubuntu 20.04 real quick.
Add the Microsoft package signing key to your list of trusted keys and add the package repository. Open a terminal and run the following commands:
sudo apt update && sudo apt upgrade wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
Install the runtime
The .NET Core Runtime allows you to run apps that were made with .NET Core and didn’t include the runtime. The commands below install the ASP.NET Core Runtime.
sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y aspnetcore-runtime-3.1
Step 2: Download and Install RavenDB on Ubuntu 20.04
Download RavenDB’s latest stable using wget or the you can head over to RavenDB Download page and grab the Linux version from the list of platforms. We will use wget in this guide as shown below
cd ~ wget -O ravendb.tar.bz2 https://hibernatingrhinos.com/downloads/RavenDB%20for%20Linux%20x64/latest
Extract the Archive
Run the tar command below to extract the compressed file
tar xvjf ravendb.tar.bz2
Extracting the file above creates a folder (RavenDB) that contains the setup files. At this point, you can start the Setup Wizard by running the run.ps1 (or run.sh) script
$ cd ~/RavenDB $ ./run.sh Use Ctrl + c to Exit it
Step 3: Configure RavenDB on Ubuntu 20.04
Let’s edit the settings.json file so that we can perform the setup remotely using the browser. Notice that when we run the server for the first time, settings.json is created from settings.default.json. So if settings.json doesn’t exist, edit settings.default.json instead.
Set ServerUrl including the port you would wich RavenDB to listen from as well as Security.UnsecuredAccessAllowed to either PrivateNetwork, PublicNetwork or LocalNetwork to allow Unsecured Access without SSL.
sudo vim ~/RavenDB/Server/settings.json "ServerUrl": "http://172.21.83.113:8080", "Setup.Mode": "Initial", "DataDir": "RavenData", "Security.UnsecuredAccessAllowed": "PrivateNetwork"
In case your server is on Public cloud such as AWS,GCP or Azure, add more lines to the configuration so that you can be able to access your RavenDB remotely from a browser. An example is shown below:
"ServerUrl": "http://172.21.83.113:443", "Setup.Mode": "Initial", "DataDir": "RavenData", "PublicServerUrl": "
", "Security.UnsecuredAccessAllowed": "PrivateNetwork"
We set the Security.UnsecuredAccessAllowed field to PublicNetwork which will allow you to connect remotely. In order to use RavenDB on port 443, run the command below to allow RavenDB to use port 443 (non-root process):
sudo setcap CAP_NET_BIND_SERVICE=+eip ./RavenDB/Server/Raven.Server
Set directory permissions
RavenDB requires write permissions to the following locations:
- The folder where RavenDB server is running
- The data folder
- The logs folder
Modify firewall to allow the new RavenDB port
If you have a firewall running, consider adding the port that you configred RavenDB to be listening from.
sudo ufw allow 8080
Step 4: Configure RavenDB as a service on Ubuntu 20.04
Now we will setup and start the RavenDB service.
Open a terminal and create the file /etc/systemd/system/ravendb.service, using super user permissions with the contents below:
sudo vim /etc/systemd/system/ravendb.service [Unit] Description=RavenDB v4.0 After=network.target [Service] LimitCORE=infinity LimitNOFILE=65536 LimitRSS=infinity LimitAS=infinity User=root ##<==Add the user you would wish to run the service Restart=on-failure Type=simple ExecStart=/path/to/RavenDB/run.sh ##<==Enter the path where your run.sh is found here [Install] WantedBy=multi-user.target
After adding the new file, reload the daemon, start and enable ravendb service like so:
sudo systemctl daemon-reload sudo systemctl enable ravendb.service sudo systemctl start ravendb.service
Check its status:
$ systemctl status ravendb.service ● ravendb.service - RavenDB v4.0 Loaded: loaded (/etc/systemd/system/ravendb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-07-19 20:31:36 EAT; 5min ago Main PID: 43408 (run.sh) Tasks: 23 (limit: 1035) Memory: 39.7M CGroup: /system.slice/ravendb.service ├─43408 /bin/bash /home/tech/RavenDB/run.sh └─43435 ./Raven.Server --browser
Run the RavenDB Setup Wizard
By now, everything should be working fine and we are ready to run the RavenDB Setup Wizard. Point your browser to the URL you configured in Step 3. In this guide, we shall use http://172.21.83.113:8080. Follow the screenshots that follow to get RavenDB
RavenDB End-User License Agreement
Scroll through the license agreement to the end then click on “Accept“
RavenDB Setup Wizard
Here we have 3 options depending on our desired level of security. The first is setting up using LetsEncrypt certificate, the second is by providing our own certificate and the third is without any certificate. Since I have no certificates at the moment, we shall proceed with the Unsecured option. Note that in case you would wish to add a new node to create a cluster, there is a “Cluster Setup” option as well. Select the security option that best addresses your needs here.
Unsecured mode setup
Enter the ports you would wish to access Studio from as well as the IP address. Accept the risk then click “Next“
Configuration should be complete by now. Click on “Restart server“
Access the Studio
If everything went well you should be redirected to the studio. If you used your own certificates, your browser will ask you for them for authentication.
Step 5: Create a database
Once we are inside RavsnDB, we can easily create a sample database. Click on “Databases“
Then “New Database“
There is so much more that you can do whilst in RavenDB. Talk of creating documents, adding data, encryption, creating a cluster, and hooking it up with your APIs. RavenDBs documentation is a wonderful place to get all the details. They even provide sample data that you can use to test it with your applications. It is pretty cool and the interface is amazing as well.