What is polyglot persistence?
Today we have a varied list of databases built for solving specific problem in a much better way than our traditional relational databases. These databases are categorised into NoSQL e.g. document databases, graphs databases, search databases, cache and more. All of these databases are great at doing few things well and not others. For example: ElasticSearch is great for full-text search on large volumes of data which cannot be done well in MongoDB.
Polyglot Persistence is the way to shard (divide) your dataset into multiple databases and leverage the power of multiple databases together. So, If you have a piece of data on which search has to be performed, you need to store that data into ElasticSearch or Solr, whereas if you have product catalogue dataset you would prefer a schemaless MongoDB or CouchBase.
Types of databases you can use
Document Databases: Document databases are used to store whole unit of your data in form of JSON documents and you can query with relevant fields. Document databases are usually bad at doing joins between collections / tables and doing a full-text search. MongoDB is one such popular document database.
Graph Databases: Graph databases are used for storing relations between entities with nodes being entities and edges being relationships. For example: If you’re building a social network and if Person A follows Person B. Then Person A and Person B can be nodes and “follows” can be the edge between them. Graphs are excellent in doing multi-level joins and are good for features that need “shortest-path algorithm” between A and B. Neo4j is one such popular graph database.
Cache/Key-Val Store: Cache are used when you need to access to your data super-fast. For example, if you’re building an ecommerce application. You have product categories which kind of loads on every page load. Instead of hitting the database for every read operation (for every page load) which is expensive, you can store it in cache which is crazy fast for reads. Only con of using cache is it is in-memory and is not persistent. Memcache, Redis are popular cache databses.
Search Databases: If you want to do a full text search on your data (for ex: Products in an e-commerce app) then you need a search database like ElasticSearch or Solr, which can help you perform search over huge volumes of data.
There are advantages of using multiple databases in a application – Faster response if you use specific database for specific purpose, easy to scale your application or some part of your application which need more attention, rich experience when you harness the power of multiple databases are the sometime. For ex: If you want to search on Products in an e-commerce app, then you use ElasticSearch which returns the results back by relevance which MongoDB cannot do.
The biggest dis-advantage with using polyglot persistence is management becomes nightmare. Think about managing 4 different stack of database servers for you, more experts, more resources, more headache. But now with CloudBoost’s polyglot persistence as a service, you can leverage all these benefits make your application fly.
Founded in 2014, cloudboost.io gives you one simple API to store and query your data and it uses AI to automatically store your data into the database where it should naturally belong. It also does provides auto-scaling, replication, backups functionality. In a nutshell cloudboost.io automates polyglot persistence.
If you want to build an app that does a bunch of things – from search, to updates in realtime, to caching for faster data-access and more then you should definitely try out cloudboost.io simple SDK which offers –
Build realtime apps, effortlessly
When data changes, apps built with CloudBoost update instantly across every device — web or mobile.
Implement search-engine in your apps on your data with CloudSearch
Implementing a search engine in your app can never be much easier. CloudBoost index your data for search and let your users use CloudSearch feature to get most accurate and relevant data as possible.
Rock solid data store
CloudBoost uses a rock-solid data-store to store all your data. It can be used as you would use any database – querying, aggregations, insert ,save, update still work as expected.
Cloud Cache to make things crazy fast
CloudBoost move your most requested data to a cache, so accessing it is blazing fast, making your app more responsive with a much more enhanced experience.
AI Engine understands how you query your data
CloudBoost automatically replicate your data into cache, to search engines, and to a storage which better understands your data and make querying for data much faster.
You can do a whole bunch of stuff like implementing a search feaure, realtime texting, files storage, aggregations, and more.
With so many advantages and ease of use I would suggest you to give it a try. Follow their quick starter guide to get started with integrating your app with CloudBoost’s services and you can do that for free since their pricing model is quite flexible –
Does your application needs polyglot persistence? Are you going to try out cloudboost’s database service? Tell us in comment.
Stay tuned for more technology reviews from fossBytes.