What is NoSQL and How is it Utilized?

Reading Time: 5 minutes

What is NoSQL?

A NoSQL or a NoSQL Database is a term used when referring to a “non SQL” or “not only SQL” database. NoSQL databases store data in a different format than a traditional relational database management systems. This is why NoSQL is often associated with the term “non-relational” database. Simply put, NoSQL databases are modern databases with high flexibility, blazing performance, and built for scalability. These databases are used when you require low latency and high extensibility while working with large data structures. The versatility of NoSQL is due to the nature of as being unrestricted in comparison to relational databases models such as MySQL or DB2. 

SQL vs. NoSQL Comparison

There are multiple differences between SQL and NoSQL database types. In the table below, we will compare some of the most critical variations. 

SQL  NoSQL
Relational data structure databases Non-relational data structure databases
Better for multi-row transactions  Better for documents and JSON files
Databases based on tables Databases are documents, key-value, graph or wide-column stores
SQL databases are vertically scalable  NoSQL databases are horizontally scalable 
Uses predefined schema Uses dynamic schema
Structured Query Language (SQL) No query language

NoSQL Databases Types

There are four main types of NoSQL databases. 

  • Key-Value data stores
  • Document stores
  • Wide-Column stores
  • Graph stores 

We will review each of these types and explain what they are used for. 

Key-Value Data Stores

These types of databases are using key-value as a method to store data within the database. Each key-value is unique and serves as an identifier when a query is performed. The primary key is separated into a partition key and sort key. For example, the partition key would have product ID stored, and the sort key would have product types stored.

Stored values in these databases can be anything from the simplest binary objects such as JSON documents to videos or other massive complex items. Our application will have complete control over these values, and that is why Key-Value Data Stores are considered the most flexible NoSQL model. It is essential to mention that key-values often do not support transactions because data that is stored in them is partitioned and used across whole clusters.

Document Stores

As the name implies, a NoSQL database is a non-relational schema-free database that stores and queries data in a document similar to a JSON file. Unlike conventional MySQL tables, document store databases collect all the data from a given entity into a document. All data associated with that entity is stored in that single document as well.

So on one side, you have relational databases storing data of the commodity into tables, and that data is spread across several tables. On the other hand, you have a document store non-relational database which stores all the data into a single file. 

Wide-Column Stores

The second name for these databases is Extensible Record Stores. Like document stores, these wide-column databases are also schema-free databases. This database uses tables, rows, and columns, like a relational database.

But there is one difference! None of the columns or record keys are fixed, which means that name and format can vary. That is why wide-column databases are often seen as two-dimensional key-value stores.

Graph Stores

Graph Stores databases are constructed around a simple data structure:

Node — Relationship — Node

These databases have three types of data fields. These fields are called vertices and are composed of nodes, edges, and properties. These fields are used to store and represent the data within the Graph stores. 

Graph stores work by collecting data within a node, and edges store the relationship between each node. Each edge has four components: a start node, an end node, a type, and a direction. This structure is needed because one node can have an unlimited number of relationships. 

The final type of data field, properties, stores features, and additional information related to edges and relationships. One example of a property is called “Weight of an Edge.”This property can save a cost, distance, range, length, or any other measure of a relationship between two nodes.

NoSQL System Examples

Now that we know which types of NoSQL databases we have, we will review some of the most used database management systems for each of these types.

Database type Most used management system
Key-Value Data Stores Redis, is by far the most used NoSQL management system in general. Redis can be used for other operations such as caching, but database management is its primary function. 

 

 

Document Stores MongoDB is advertised as the “Most popular database for modern applications”. MongoDB is actually quite a bit more than just a database management system. It’s a whole data platform with many tools for developers and data scientists to use. 

 

 

Wide-Column Stores Apache Cassandra is used by Activision, Hulu, Uber, Walmart and dozens of other high-profile companies. According to the official page, 40% of Fortune’s Top 100 companies are using Cassandra in their day-to-day operations. The reason for this is simple. Cassandra is the best choice when you need a management system for a wide-column store that offers the best scalability and availability without compromising performance. 

 

 

Graph Stores Neo4j is a native graph database, built from the ground up to leverage nodes and relationships. Neo4j makes connections between data as it is stored, enabling queries types never imagined, at speeds rarely thought possible.

 

 

We now know the different types of NoSQL databases. We also know the basics behind them. Finally, let’s review what would be the best way to put each of these databases into practice. 

Best Use Cases for NoSQL Databases

  • Key-value store databases: These databases are best used for various shopping carts. This is simply because Key-Value databases can handle millions or billions of orders. Massive incoming data is processed without performance loss. These databases also have built-in redundancy so you won’t have to worry about data loss.
  • Document store databases: These databases are best used for various catalogs. This can again be connected to your e-commerce business, where you need to store thousands of different attributes about our products. Since data is stored in a single document, the management of products is fast and easy.
  • Wide-Column Stores: These databases are best used for geographic information, reporting systems, sensor logs, and such. We state this because Wide-Column stores use multi-dimensional mapping (row-value, column-value, and timestamp) in a tabular format meant for massive scalability. If you ever use a website or app to check the driving distance from A to B on a map, chances are pretty high that Wide-Column stores are in use on that website or application.
  • Graph store databases: These databases are best used for above-average fraud detection systems. Let’s say that we have a known fraud case on file for a specific email or credit card in question. If that person tries to log in and purchases something again with the information from that fraud case, someone would be notified by the system. That happens because of how the Graph store databases process relationships between nodes in real-time. 

Conclusion

We often encounter the use of NoSQL databases in our daily lives without realizing it. The data shows that the overall advantages of NoSQL and its effectiveness are incalculable. Hopefully, this article provides you with actionable information and how NoSQL can be implemented into your business methodology. In conclusion, we are glad that we could demonstrate how NoSQL can be beneficial to you.

How Can We Assist?

We pride ourselves on being The Most Helpful Humans In Hosting™! Our knowledgeable Solutions or Experienced Hosting advisors are always available to show you how you can take advantage of these techniques today!

We are available 24 hours a day, 7 days a week 365 days a year, via our ticketing systems at support@liquidweb.com, by phone (at 800-580-4986) or via a LiveChat or whatever method you prefer.

We work hard for you so you can relax.

What is the Difference Between Git and GitHub? 

Reading Time: 4 minutes

What is Git?

gitlogo

Git is a distributed version control system (or VCS), typically used to track files changes. It was developed in 2005 by Linus Torvalds, the creator of the Linux kernel. Git’s primary use is to keep track of changes within source code during the software development process. Source Code Management or SCM was the primary reason for its creation.

Git is not the only available VCS, but it certainly is the most popular ones. This is primarily due to it being a free, open-source, multi-platform, highly integrable, and relatively simple platform to use. In this article, we will learn a bit about version control systems and what Git and GitHub are. We will also review how they work together. At its core, a version control software allows us to keep track of code changes. This way, we can see and evaluate the differences between multiple iterations or revisions of files.

Here is a typical use case. Let’s say we created a website and it’s working fine, even after a few updates! One day, we make some small changes to the site, and suddenly, it breaks. Typically, we would have to remember all the changes we made in the previous update. Then, go back and revert them all manually. Git, on the other hand, shows us exactly what changes we made including which files. This makes it much easier to track down the problem. We could also directly reverse the earlier changes and revert any updates which may have caused the issue. To accomplish this, Git uses repositories. 

What is a Git Repository?

A Git Repository (or repo, for short) is essentially the folder where our project is located. It also includes a .git directory containing all of our project files’ revision history. There are two types of repos:

  • Local repository — This folder contains all the files on our local computer where we do our work.
  • Remote repository — This is an off-site repository. It is usually located on the server where our project lives. It may also reside on a repository hosting service like GitHub.

Using remote repositories is one of the critical functionalities of Git. It expands on its use as a VCS and turns it into a collaborative tool. Complex projects usually have multiple people working on them. A remote repository stores our shared project code in one location. Additionally, it also keeps track of who made what changes and when. 

git-github

Distribution

We mentioned earlier that Git is a distributed VCS. To explain this concept, we need to take a look at two other types of version control systems:

  • Local VCS: This is the earliest and most basic form of VCS. Usually, these are simply a database that keeps track of changes made to a set of files on a local computer. These do not work very well when multiple developers are working on a project.
  • Centralized VCS This is a step up from a local VCS. The project and its version database are kept in a single location, typically on a server. Collaborators can “check out” the files they need to work on. This is similar to checking out a book from the library. Assuming libraries allowed you to modify and update the contents of a book. 

However, should the central server become unavailable or fail, the whole project is halted or lost. Unless a backup system is in place, distributed VCS’s come into play. Using Git or another DVCS, each user’s local repository contains a full copy of all the project files. It also contains the entire revision history. Every user has a complete backup of the data. Should any critical failures occur, the project can be quickly restored. 

Branching

Another essential feature of VCS is branching. Branching is defined as separating work from the main project to modify project code without impacting the main (master) branch. This feature is especially useful when testing and implementing new features, or trying alternative solutions for a problem or task. If that branch is improved, it then will be applied to the master branch, and merged into it. The Git branching system is renowned for being lightweight and quick. In fact, branching and merging is encouraged as part of the workflow.

What is GitHub?

GitHub is a repository hosting service. While we haven’t covered specific git commands or workflows in this particular article, we should note a few critical points:

githubloogo
  • Git is a standalone software that needs to be installed. The installation will differ between different operating systems. It is best to check what needs to be done to get Git up and running on our specific system.
  • Git is often used via the CLI (Command Line Interface). Both built-in and third-party GUI (Graphical User Interface) tools are also available.
  • Another popular way of using Git is directly through a text editor or IDE. Many IDEs natively support Git. Others may require the installation a plugin or adding an extension. A few examples of this are:
    • Sublime
    • Atom
    • NetBeans
    • Eclipse
    • Microsoft Visual Studio
    • Visual Studio Code
    • Notepad++
    • VSCodium

Repositories

When working on a project independently, using Git and setting up a remote repository is always a good idea. It is better to have a revisioning system to use as a backup, then to waste time rebuilding lost data.

We should also keep in mind whether we want our project to be publicly available (open-source) or private. GitHub offers both options as a means to either share your code or keep it confidential

Conclusion

To answer our original question What is the difference between Git and GitHub?

The simple answer is that Git is a version control system which lets us manage and track the history of our source code. GitHub is the cloud-based storage medium which allows us to keep those changes in a remote repository. Using both Git and GitHub together is a sensible choice for maintaining the ongoing development of a code base.

Learn More

We pride ourselves on being The Most Helpful Humans In Hosting™!

Our Support Team is full of experienced Linux technicians and talented System administrators who have intimate knowledge of multiple web hosting technologies, especially those discussed in this article.

Should you have any questions regarding this information, we are always available to answer any inquiries with issues related to this article, 24 hours a day, 7 days a week 365 days a year.

If you are a Fully Managed VPS server, Cloud Dedicated, VMWare Private Cloud, Private Parent server, Managed Cloud Servers, or a Dedicated server owner and you are uncomfortable with performing any of the steps outlined, we can be reached via phone @800.580.4985, a chat or support ticket to assisting you with this process.

How To Protect Your Website From Remote Code Execution

Reading Time: 5 minutes

What is Remote Code Execution?

Remote code execution, also known as code injection, is one of the most common ways hackers compromise a website. This term encompasses multiple techniques which have one aspect in common. The attacker passes off their code as legitimate in the server’s eyes, using a data submission method typically reserved for regular users.

Continue reading “How To Protect Your Website From Remote Code Execution”

How to Install and Configure Kubectl: A Tutorial

Reading Time: 4 minutes

What is Kubectl?

Kubectl is a command-line tool for Kubernetes. It allows us to execute Kubernetes operations via the API. We can use Kubectl to deploy apps, check logs as well as manage all the other resources of the cluster.

Kubernetes uses an HTTP-based REST API which is the actual Kubernetes user interface employed to manage it. This means that every Kubernetes operation is represented as an API endpoint and can be carried out based on an HTTP-request sent to the endpoint. 

In this article, we will review Kubectl, and outline its installation, configuration, and use. 

What is Kubernetes?

The name Kubernetes has its origins from the original Greek term for helmsman or pilot. Kubernetes, or ‘k8s’ (pronounced “Kate’s”) is an open-source software tool that was created by Google and is used for scaling, deploying and coordinating containerized applications into easy to manage groups. It supports multiple containerization technologies as well as orchestrates hardware virtualization.

To manage a Kubernetes server cluster effectively, we utilize kubectl as the command-line tool of choice. Basically, kubectl communicates with the master Kubernetes node(s) which in turn submits commands to the worker nodes to manage the cluster. A Kubernetes cluster basically consists of two types of resources.

  • Master server – a master server organizes the cluster
  • Node server – Nodes are the workers that contain and run the applications

Each node contains a Kubelet, which is the agent for managing the node and communicating with the master. We can use kubectl to deploy, explore, review and remove Kubernetes objects (like nodes, images or containers).

Initially, Kubernetes was designed and developed by Google engineers to employ and utilize containers for its workload management. Google generates more than 2 billion containers deployments a week which was provided for by their internal platform code-named Borg (the predecessor to Kubernetes). During Borg’s development, the experience gained was one of the main factors that influenced a significant part of Kubernetes current technologies. Currently, Kubernetes is maintained by the Cloud Native Computing Foundation.

How to Install Kubectl? 

The easiest way to install kubectl is to use one of the default package managers for a Linux OS. 

Debian/Ubuntu

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update

sudo apt-get install -y kubectl

Redhat/CentOS

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubectl

Linux Source Installation

curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

Verify Kubectl Installation

To verify all install versions, we use the following command.

kubectl version --client

Kubectl Configuration Commands

To check the kubectl configuration (or to gain access to the cluster), a kubeconfig file is needed. This file is created automatically during the creation of the cluster via the kube-up.sh script. By default, the cluster configuration file is located in ~/.kube/config.

We use this command to check the state of the cluster and verify that kubectl is correctly configured.

$ kubectl cluster-info

When we see a URL-output, then kubectl is configured correctly to work with the cluster.

If the output contains the following error message, then kubectl is either misconfigured or cannot connect to the cluster.  

The connection to the server <server-name:port> was refused - did you specify the right host or port?

Otherwise, when kube cluster-info command returns URL output, but we still cannot connect to the cluster, we run the following command to check whether it is appropriately configured.

$ kubectl cluster-info dump

Autofill

The autofill configuration is one of the most important and convenient kubectl commands as it allows us to automatically fill in some parts of a command by simply pressing the Tab key. This feature works for subcommands, options, arguments, and more complicated entries, like resource names. This configuration works for shells like Bash and Zsh. A full tutorial on how to configure that can be found on the official web page

Plugins

Beginning with version 1.12, kubectl supports plugins which let us expand its functionality. Kubectl plugins are simply executable files using a naming convention which begins with kubectl-*. For example, a plugin called hello, is named kubectl-hello. To install a kubectl plugin, we move the file to any location with our PATH variable and make it executable.  

Kubectl Command Syntax

The syntax of a kubectl commands is as follows.

$ kubectl [command] [TYPE] [NAME] [flags]
  • command – defines the operation carried out on one or more resources, e.g., create, get, or delete.
  • TYPE – characterizes the type of resource. It is case-insensitive and used in a single, plural, or as an abbreviated manner.
  • name – denotes the identity of a resource and is case-sensitive.
  • flags – A flag sets options on a command. 

Basic Kubectl Commands

There are multiple commands that can be used, but we are going to look through some basic ones to have a general understanding and see some examples. We are going to use test.yaml file noted below.

kubectl exec POD_NAME -- bash -c "date && echo 1"

kubectl exec POD_NAME -- bash -c "date && \
      echo 1 && \
      echo 2"
  • $ kubectl create -f test.yamlcreates resource from the file or input.
  • $ kubectl run test.yaml start a deployment.
  • -f – can mention resources with a file or files, e.g., f file1 -f file2.
  • $ kubectl edit -f test.yamlchange the resource thanks to the test.yaml file.
  • $ kubectl describe -f test.yamldetailed description of the state of one or several resources. 
  • $ kubectl delete -f test.yaml delete resources from the file.
  • $ kubectl logs test.yaml print logs. 
  • $ kubectl optionsA list of global parameters of the command line, applied to all commands. 

Conclusion

In this article, we have learned what Kubernetes and kubectl are, how to install and configure kubectl, also we have provided a quick overview of some basic kubectl commands. Kubernetes is an excellent tool with many useful features.

Get Started Today!

Contact us today at 1.800.580.4985 to speak to a knowledgeable Solutions Provider who can get you the info you need, to make an informed decision right away.

Too busy to talk? Click HERE to open a quick chat with us to find out more. Would you like the information in an email you can review at your leisure? Email us today to get solid advice on which product in our lineup would best suit your business needs.

We look forward to hearing from you!

How to Install and Configure PyCharm on Windows

Reading Time: 4 minutes

What is PyCharm?

PyCharm is a widely used IDE or integrated development environment for Python, which can run on Windows, Linux, or macOS. This cross-platform, application, combined with its being open-source, has caused PyCharm to be one of the fastest-growing IDEs since its development in 2010. PyCharm comes in two flavors: community edition or professional. 

Continue reading “How to Install and Configure PyCharm on Windows”

How To Set Up A Python Virtual Environment On Windows 10

Reading Time: 4 minutes

A Virtual Environment or a “venv” is a Python module that creates a unique environment for each task or project. It installs the packages we need that are unique to that setting while keeping your projects neatly organized. Additionally, venv never actually modifies the system’s default Python versions or modules that are installed on the system. Using venv essentially allows for a unique working environment while avoiding any disruptions to other variants of Python that are used, but not related to our project.

Continue reading “How To Set Up A Python Virtual Environment On Windows 10”

How to Configure Windows Remote Desktop Users Group

Reading Time: 4 minutes

The most common way to remotely manage a Windows server is through Remote Desktop Protocol. By default, Liquid Web’s Windows servers only allow the members of the administrators’ group remote desktop access. However, the Remote Desktop Users group grants its members access to securely connect to the server through RDP (Remote Desktop Protocol) as well.

This article will go over the basics of the Remote Desktop Users group. By the end, you will be able to add users to the group, understand permissions, and basic user management.

Continue reading “How to Configure Windows Remote Desktop Users Group”

How To Install Apache Spark on Ubuntu

Reading Time: 5 minutes

What is Apache Spark?

Apache_Spark_logo

Apache Spark is a distributed open-source, general-purpose framework for clustered computing. It is designed with computational speed in mind, from machine learning to stream processing to complex SQL queries. It can easily process and distribute work on large datasets across multiple computers.

Continue reading “How To Install Apache Spark on Ubuntu”

“Password is Forbidden” PhpMyAdmin Login Error Solved

Reading Time: 2 minutes

Once in a while, perhaps on a Development server, MySQL will not be set up with a root password. The aforementioned configuration is generally thought of as against best practices, however, if it is what you’re dealing with, then it could also interfere with PhpMyAdmin.

This error relates to logging into phpMyAdmin, an open source tool used for the administration of MySQL.

Continue reading ““Password is Forbidden” PhpMyAdmin Login Error Solved”