This is a great topic for the first Jappware's blog post. Choosing the right database is not a trivial task, even more - it is a very important, hassle and sensitive decision that directly affects your software health in the future!
How many database types to you know? Five? More?
There are at least 6 main types:
- Column family
- Document oriented
- Time Series
- etc. ?
Right, there are many types and characteristics, and each of the databases was designed to solve an exact list of needs. And the main problem of the people who choose a database is to "blindly" follow by open information on the internet, trends or applying popular solutions promoted by big and famous companies.
Choosing the right database type
The main criteria of database type choosing should be your (or your client's) data. And in this scope we need to understand and deeply investigate the next common points:
Data types and structure
Flow, sequence, transactions and approximate capacity
How data will appear in the database
How data will be queried
Order and distribution
Choosing the right database implementation
When you are done with database type the next question is database implementation. In this scope, we also have a few common principles that need to take into an account and investigate to select an exact solution:
CAP theorem according to business needs
Cluster type and general database eco-system
Replication and partitioning strategies
Read and Write operations consistency and robustness
Flexibility to re-configuration in runtime
Of course, it is much easier to say or write than done. That's why we trying to share our common approaches and principles, but each of these points requires deep investigation, learning, and comparisons. As a result, you have to build a table where you clearly can present the advantages and disadvantages of each type and implementation. This will be a great solution to present your final decision!
And the main advice in database selection - listen and learn your or your clients' business. This is the right place to find answers to all possible questions and apply these answers to each database's documentation, public information, and use-cases to understand how it applies to your needs.
We hope that our recommendations and principles will help you in the future to choose the right database type and implementation and bring the right decisions in your solution.
Author: Andriy Rymar (twitter: @AndriyRymar)