The advent of NoSQL databases has lead many application developers, designers, and architects to apply the most appropriate means of data storage to each specific aspect of their systems, and this may involve implementing multiple types of database and integrating them into a single solution. The result is a polyglot solution.
Designing and implementing a polyglot system is not a straightforward task and there are a number of questions that need to be addressed including:
- How can you implement a uniform data access strategy that is independent of the different databases? The business logic of an application should not be dependent on the physical structure of the data that it processes as this can introduce dependencies between the business logic and the databases. This issue is especially important of your data is spread across different types of database, where a single business method might retrieve data from a variety of data stores.
- How can you make the best use of different databases to match the business requirements of your applications? This is the driving force behind building polyglot solutions.
- If your applications need to store and retrieve structured data very quickly you might consider using a document database
- If you need to perform more complex analyses on the same data then a column-family database might be more appropriate
- If you need to track and manage complex relationships between business objects, then a graph database could provide the features that you require
- Some of the challenges to address are:
- Maintaining consistency across different databases
- Increased application complexity
- Increased deployment complexity
- Training for developers and operational staff
Check out Why OrientDB is a good choice as a multi model NOSQL data store