Open Source Databases: What's Next?

GB

Gourav Bais

Applied Machine Learning Engineer

Open Source Databases: What's Next?

In this article, you'll learn more about open-source databases, their benefits and what other options to keep in mind as you scale your business up.

open-source-databases-whats-nextOpen-Source Databases: What's Next?

In any live application, a major requirement that developers need to address is database technology. One of the first choices to make is whether to go for open-source software or a paid version.

Open-source databases are those whose code is available to view, download, modify and reuse by anyone based on their requirements. Open-source databases can usually be categorized into two groups: relational and non-relational.

Relational databases store data in key-value pairs and arrange them on a row and column basis. Storing data in key-value pairs means they are significantly faster. Non-relational (NoSQL) databases are used to store unstructured data like documents and images.

Some open-source databases widely used across organizations include:

postgre-sqlPostgreSQL

PostgreSQL, or simply Postgres, is a popular relational database that has a history reaching back to the 1980s. It's written in C and can be operated on any UNIX or Windows-based operating system. Postgres is well-known for its compatibility with almost all programming languages. It also has full-grown server-side programming usefulness and support for JSON licenses.

my-sqlMySQL

MySQL is another well-known relational database. Maintained by Oracle, it tends to be faster than Oracle and Microsoft SQL Server. It's written in C and C++. It's supported by almost all kinds of operating systems and can work with any programming language. MySQL is very powerful in that it can handle a large set of functionalities across database packages. Up to fifty million rows or more can be found in a table when using MySQL for huge databases. A table's default file size cap is 4 GB, but it can be increased to a limit of 8 million terabytes (TB).

mongo-dbMongoDB

MongoDB is a NoSQL document database that provides support for JSON documents. It features a flexible database mode that enables users to store unstructured data while providing full index support.

maria-dbMariaDB

MariaDB can be considered as an evolved version of MySQL as it's similar but has some additional features. MariaDB was originally written in C, C++, Bash and Perl. A modified version of the standard inquiry language is used in the framework. It has support for almost all major programming languages and offers special help for PHP.

To give you an idea of how immensely useful open source-databases are, for each paid database service, there's usually at least one open-source option available that has similar or even additional features. What's more, if you encounter a bug, there's no need to wait for the provider to fix it; you have the flexibility to do it yourself.

Most importantly, open-source databases allow you to use and tweak them for free, without restrictions, safe in the knowledge that they're keeping your data just as secure as the paid options.

In this article, you'll learn more about open-source databases, their benefits and what other options to keep in mind as you scale your business up. As scaling is one of the major challenges faced by open-source databases, you'll also learn how you can resolve this issue by connecting an open source solution (MySQL) to a paid platform (SingleStoreDB).

benefits-of-open-source-databasesBenefits of Open-Source Databases

Open-source databases are undoubtedly a popular starting point for engineers and developers. Let's look more closely at some of their major benefits.

speed-of-implementationSpeed of Implementation

Open-source databases enable organizations to quickly identify if a community version of a database is suitable for their use case, get started and deliver the use case.

The process is usually a lot faster than choosing a paid database service where you need to identify different requirements like size, the number of people that would be accessing it at the same time and so on.

cost-effectivenessCost-Effectiveness

Proprietary databases tend to be based on a pay-as-you-go model — that is, the more storage you use, the more you pay. If you're working on data-exhaustive tasks, you need to store a lot of data, which can quickly rack up the cost.

This is one of the major advantages of open source databases, which are free and therefore more cost-efficient by design.

ability-to-start-smallAbility to Start Small

When you start working on any project or a proof of concept, you need a tool that can help you get started quickly. The same goes for the databases: community versions of the databases can help you get started quickly and easily on any project that is limited in terms of funding and might not need scaling up in the future.

If there's no scaling required for the project, open-source versions might work well for you, and if you need to scale your project to a whole other level, the option to switch to a commercial version is always there.

flexibility-and-agilityFlexibility and Agility

Flexibility and agility are two of the major requirements that organizations want in any software, whether it's open source or paid. Using agile tools to build your product or service reduces the chances that your competitors work faster and leave you behind.

In terms of flexibility, commercial databases rely on their vendors to introduce additional features. With open-source databases, if you're familiar enough with the software, you could develop those features on your own.

In short, open-source databases are a great choice to start small on any kind of project. Problems may arise, however, if your projects grow and you need to scale, which is where a commercial solution might be preferable. The timing of this decision is important too as it's tough to switch databases mid-development.

That said, if you're already halfway or even fully done with development using a popular database like MySQL or SQL Developer and find yourself stuck, you haven't run out of options.

You can keep working on your open-source solution and simply integrate a platform that has the extra functionality you need in order to scale with ease. One great option to help you scale your database is SingleStoreDB, which we'll explore a bit later. To give you a deeper understanding of how this can be done, you'll learn how to scale your MySQL database with SingleStoreDB.

what-is-single-store-dbWhat Is SingleStoreDB?

SingleStoreDB is a cloud-native, distributed SQL database that's well suited for real-time applications and analytics. For example, it can run complex queries in ten to one hundred milliseconds.

It streamlines the creation of quick, contemporary real-time enterprise applications by combining transactions and analytics into a single engine that enables low-latency access to big databases. Uber and Pinterest are amongst the large tech firms that have adopted the platform to help them grow.

benefits-of-single-store-dbBenefits of SingleStoreDB

Let's get to know SingleStoreDB in more detail by discussing some of its main benefits.

Fast Query Results

SingleStoreDB is a highly scalable distributed system that's designed for high throughput in concurrent nodes. The workshop scaling capacity and faster query execution are provided by adding additional nodes to a workspace.

SingleStoreDB compiles queries to machine code that enables high performance — especially when accessing the in-memory row store tables. Moreover, it compiles the results, unlike other databases that interpret the results, resulting in high performance during execution.

High Availability

SingleStoreDB ensures high availability of data by storing the data redundantly into a set of nodes called availability groups. Two availability groups are supported: every partition in the system is represented by a copy in each availability group, some of which are master copies and others clones. To safeguard your data from single-node failure, SingleStoreDB contains two copies of your data stored in the system.

Ability to Load Data from Multiple Data Sources

SingleStoreDB provides data ingestion from multiple distributed data sources, such as Apache Kafka, Apache Spark, Amazon S3 buckets, Microsoft Azure Blob Storage, Google Cloud Storage, HDFS or files on disk. It also supports formats such as JSON, Parquet, Avro and CSV.

Due to its distribution capability, different data sources can be used together to ingest data into SingleStoreDB, something that can also be done in real time.

Ability to Integrate with Tableau for Data Visualization

Storing data is not the only thing that SingleStoreDB provides; you can integrate data exploration and visualization tools such as Tableau with the Singlestore Helios workspace. Data sitting in the database is of no use until it's deployed for analytics or visualization purposes that can improve your business.

Tableau is a tool that's widely used across industries for analyzing data, and SingleStoreDB does a fantastic job in making use of it.

connecting-single-store-db-with-my-sqlConnecting SingleStoreDB with MySQL

Now that you've learned about the benefits of SingleStoreDB, you'll be pleased to hear that SingleStoreDB can be connected with a variety of database platforms to scale them up when needed. These platforms include DBeaver, JetBrains DataGrip, SQL Developer, Sequel Pro and MySQL. Here, you'll see how to connect SingleStoreDB with the last option mentioned — MySQL.

Connecting is super easy as SingleStore is compliant with the MySQL wire protocol. There are two ways to connect SingleStore and MySQL: using the command line or using TLS/SSL.

For the command line, you just need to verify the -u user, -h host and -P port flags to ensure you're connecting to SingleStore properly. For TLS/SSL, you just need to ensure a secure connection between SingleStore and MySQL.

Note: You must first add a database user to log in to a Singlestore Helios database while using a third-party SQL client or development tool.

connect-with-single-store-db-from-the-command-lineConnect with SingleStoreDB from the Command Line

To connect MySQL with SingleStoreDB using the command line, you first need to visit the SingleStoreDB Customer Portal, sign in to the portal and create a workspace and a database. Finally, you need to get the endpoint from the workspace, and then you can open your MySQL command prompt (CLI) and use the following command:

mysql -u admin -h svc-9be5e8a1-8a5f-4aa7-b75d-a395570828f2-ddl.aws-oregon-1.svc.singlestore.com -P 3306 --default-auth=mysql_native_password -p

Here, -u admin specifies that you're trying to log in, -h svc-[...] notifies the endpoint that you're looking to connect to the Singlestore Helios workspace and -p 3306 connects on port 3306 (the default port setting). The --default-auth=mysql_native_password is necessary to set the proper authentication.

If you want an interactive session, you can make use of the --prompt parameter. It helps you in distinguishing SingleStoreDB from MySQL:

mysql -u admin -h svc-[...].svc.singlestore.com -P 3306 --default-auth=mysql_native_password -p --prompt="singlestore> "

Once you've connected SingleStoreDB with MySQL, you can go ahead and try different commands to create and manipulate the database.

connect-single-store-db-using-tls-sslConnect SingleStoreDB Using TLS/SSL

To establish a secure connection between SingleStoreDB and MySQL, you must ensure that the MySQL client is properly configured. Otherwise, even if TLS/SSL is enabled on the workspace, the SQL client won't use TLS/SSL connections to Singlestore Helios.

If it's not configured properly and SSL is turned off, a potential attacker can pretend to be a server and establish a secure connection using an unauthorized server certificate. This can compromise security and expose your database to a man-in-the-middle attack.

To configure the MySQL client to connect to SingleStoreDB, you need to perform the following steps:

  1. Download the singlestore_bundle.pem certificate file and save it to your MySQL client machine.
  2. Next, make sure to include the following when making the connection:
  • Host, which can be found under the endpoint of your workspace in the Customer Portal
  • Port 3306
  • The --default-auth=mysql_native_password option
  • The --ssl-ca option. Also include the path to the singlestore_bundle.pem file. You can do it by setting the appropriate option in the configuration files for the MySQL command-line client or via the command-line option, as in --ssl-ca=/path/singlestore_bundle.pem. If you're using an older version of MySQL, then you need to set --ssl-mode=REQUIRED.
  • Finally, the --ssl-mode=VERIFY_CA option to verify the certificate

3. To make a connection to SingleStoreDB, you need to run the following command:

mysql -u admin -p -h <endpoint-host> -P 3306 \
--default-auth=mysql_native_password \
--ssl-ca=./singlestore_bundle.pem \
--ssl-mode=VERIFY_CA

If the secure connection is established, you should be able to run the database commands; otherwise, you'll get an error that might be because of wrong configurations.

4. You can verify a secure connection to SingleStoreDB via the status command.

That's it! You've made a successful connection between SingleStoreDB and MySQL. Now you can work on any use case that uses the MySQL database with ease, without having to worry about scaling. SingleStoreDB documentation on connecting with MySQL is also available to help you learn more.

conclusionConclusion

In this article, you've learned about open-source databases and their benefits. You've also seen different open-source databases that are widely used across the industry.

Open-source databases can save you a lot of development costs while providing almost all the features and functionalities that paid database services provide. But they have their limitations when it comes to scaling your solution.

SingleStoreDB can help you scale your open-source database with ease. Earlier in this article, you were introduced to SingleStoreDB and its benefits. As an example, you have also seen how you can connect SingleStoreDB with MySQL, which can help to easily scale your entire solution. To find out more, check out the SingleStoreDB documentation and try SingleStoreDB for free.


Share