We are almost done with flexibility, but there is one more thing to consider. We all fear it, yet we have all fallen for it: the infamous vendor lock-in. When choosing your next database solution, you need to be aware of the types of interfaces that are available. Are there proprietary or special languages used for it? Will you need to change everything around the database if you switch the database? Will you be able to get all your tools using it today and tomorrow, or might this be a challenge due to a nonstandard query language? SQL is your best choice, in this case, as it is a widely known standard that is supported everywhere, and no, “NoSQL” does not necessarily mean “no SQL.”
Functionality
The kind of functionality the database system offers is another question to consider. While most databases provide a similar set of functionalities, specific areas might require close attention.
You must consider what built-in functions the database offers in terms of aggregation and scalar functions depending on your use case. Using built-in database functions can significantly increase the performance of external systems and help optimize your data storage requirements.
When it comes to the functionality of a database, access to data must be considered, or, more precisely, how you can access the data. Is there a specific query language that is being used, a nonstandard API? It is important to consider what query interface you have available, what it offers, and whether it fits your needs.
Finally, there is functionality in terms of availability across a wide spectrum. When you are looking at a cloud offering, you need to consider SLAs as well as whether there is a single point of failure in the architecture, which also applies for other deployment methods. What high-availability options are available, how is the database handling failure on one node? Will it automatically re-balance, and is data lost in case of a node failure? Will high availability only be achieved with a copy, or will additional nodes add further performance? Backups and how to recover from an error are the last things in availability that need to be evaluated if everything fits your needs.
Usability and Performance
Usability and performance are additional areas that are linked together and have some considerations. Usability must be evaluated in terms of the method or query language that we also already covered. Is the API or query language that the database system offers appropriate for your desired use case? Are the tools and applications you plan to use appropriate with the chosen database system? Will you need to develop a custom solution, or is everything integrated in an effective way?
Of course, you also need to take operational usability into account and ask: Is the logging and auditing functionality offered sufficient for your use case? Can the database system be integrated into your current monitoring and operations tools?
Performance also plays a role in usability. If you do not get the right performance out of your new database system, it will not be usable. However, performance cannot be addressed simply; there are multiple angles to consider and that might have an impact on your choice of database. You must consider where you will need the best performance and what the database system offers in this area. For some uses, ingesting data must be the highest performing area, or it may be data retrieval that is most critical. Of course, if both are important, you must pay attention to both sides. So, consider whether you have large or very frequent queries, many records that need to be stored, or a combination of concerns. There can be significant differences in both cases between different database systems.
The other performance question is around the time frame between ingesting data and querying this data. Does your new database system deliver what you need in this case? Is it “real time” enough for you?
Finally, when it comes to performance, also consider your future requirements in these areas and what your new database system can offer you in terms of scalability in the future. How easily can new nodes be added, will additional nodes impact other nodes, and how will performance increase?
Security
Security must be a major consideration when choosing any new IT system, and a database system is no exception. Data breaches are very costly. Assessing the impact as well as what has been breached is a key consideration for any mitigations. The most important consideration is access control. What access control measures are available, how can you make sure you can restrict access to data to only what is needed, and how can you audit who accessed what data when? The same level of control should also be possible in terms of identifying where data is coming from, as false data can also cause a problem, and you need to be able to locate the source.
Besides these specific considerations, there are, of course, further considerations around security that need to be explored. How are connections to the database secured, and is data encryption possible? How can the database system be integrated into the overall IT security infrastructure?
Cost
Cost is always a huge factor and something to evaluate for your database system, but the cost goes beyond the obvious license costs, which need to be considered based on the value that is added.
Beyond license costs, other cost factors must be weighed. For instance, you need to evaluate how much infrastructure you need to buy to run the database system, or, if it is a cloud service, whether it adds enough value compared to an on-premise installation.
These fixed infrastructure costs, however, are not all. You also must consider staffing. Questions to answer include: How much operational overhead is added with the new database system? Do you have the skilled staff to handle these systems? Do you need to add additional staff or invest in further training? Cloud services can help with mitigating this but still need to be evaluated closely for all points.
Choosing the Right Database
Choosing a new database system is not an easy task, and there are many issues to consider. Flexibility for current and future uses, scalability, performance, security, and costs are the key areas to scrutinize. There are many options available for database systems, and it might be challenging to find the right solution for your current needs, but it is important to pick the best option available and not settle for the next-best thing. Cloud services offer flexibility and reduce operations and staffing but may not be suitable in all cases. Predicting the future is always tough and so making the right choice for future requirements will be difficult. Therefore, you should always opt for the most flexible and scalable option.