Most of the systems we develop will be built on top of at least one database. A correctly designed database acts as a fast store of information and optionally includes guarantees on data integrity.
Current trends for online systems to become ever larger and support an ever increasing number of users, in recent years has meant that database technology has branched in to two distinct forms namely SQL Databases and NoSQL databases.
These are the classic types of database with their name coming from the Structured Query Language used to query them. This is the type of database you will find behind your bank account and most other business applications because it offers relatively easy guarantees of data integrity.
The data integrity guarantees supplied by a SQL database is provided by locking a set of records as the data is accessed. These database locks whilst guaranteeing data integrity can cause performance issues when the database has been designed poorly. It is much easier to get the design of the database right when the application is first commissioned as changing the database structure along with the calling application after deployment is a lot more complex and hence costly.
Inflecto has had a wealth of knowledge in designing and maintaining SQL database systems that deal with vast quantities of data. We have the expert knowledge needed to design massive SQL database systems that perform well. Over the years we have developed many techniques to overcome the limitations on SQL databases and managing databases in a challenging environment is part of our daily duties.
These are newer types of databases such as BigTable, MongoDB and Cassandra which became necessary to support large scale Internet services such as those offered by Google and Facebook.
There are many varieties of these databases which differ in both subtle and not so subtle ways but what ties them all together is that in general they trade off data consistency with the ability to scale. As such these databases can scale much easier by adding additional servers into the database cluster.
As yet we have found no system that requires this type of database system. We do however understand the scenarios where there usage can offer almost limitless scalability and can discuss them with any prospective clients. We also have good relationships with consultants that have used these systems in practise and can offer further technical knowledge in these systems should it be required.
Azure SQL Database
SQL Azure has also recently started offering an interesting service called “database federations”. Database federations offer an easy way to scale out databases using sharding. This technology allows you to get some of the scale out functionality of NoSQL database whilst keeping the easily achievable data integrity guarantees of a SQL database.
We find this technology interesting because it offers the possibility of utilising a proven tool in a new way that allows us to relatively easily scale a system if certain common criteria can be met. This would have been technically challenging without the technologies included in the Microsoft’s Azure cloud. For certain applications (where data is easily sharded) such as multi-tenanted systems or any other system where data can be grouped in to silos that can be dealt with mainly independently this technology offers excellent scalability whilst easily maintaining data integrity.
We are currently testing the functionality in Azure SQL Database and look forward to deploying clients into the system shortly.