Last decade has shown exponential growth in the data that is getting collected across various domains and sectors. All this data needs processing. Some applications are transaction-heavy, while others need a lot of analysis and computation and need to use OLAP technology.
As your data grows, it starts throwing up problems of scale. Sometimes only a set of tables grow at a very high rate as compared to others. In such cases, the indexes defined on these tables also start consuming more space. Searching through these tables becomes time-consuming. This is where you can benefit from database sharding.
SAP HANA is an in-memory RDBMS (Relational Database Management System) developed by SAP SE. Apart from being a database server, SAP HANA also provides quite a few other functionalities including advanced analytics and application server.
Graph Database is a database that uses graph structures. Ok, let me explain it more. A graph is made up of nodes, edges, and properties, which represent data. Nodes represent entities such as persons or businesses or any other object to be tracked. An edge is a relation between two nodes. Each node can have more than one relations. Property is a relevant information about the node. A database that makes use of such structures, is referred to as Graph Database.
So, what are the advantages of Graph Database?
It stores the data about nodes using edges and properties along with the record itself. This allows applications to retrieve the data much faster as compared to the relational database. It reduces the complexity of traditional “join” statements required in the relational database as data is already linked using edges and properties. Thus, it also improves the performance of the overall database and application as well.
You can find a good comparison of Graph Database and Relational Database here.
The underlying implementation of Graph Databases may vary. Some may use the relational engine and store the “graph” data in a separate table. Others may use Key-value store (like NoSQL) or document database for storage. As a result, to reap the benefits of the new structure a separate query language is required and one can’t use standard SQL for that. Some of the available query languages are Gremlin, SPARQL, and Cypher. Note that GraphQL is not the query language that is used for Graph Databases.
Graph Database is good for highly connected data such as social networks, or recommendations in e-commerce. E.g. A user of social networking site – represented by Node – can have a membership with various groups and can have several friends. Each one of those friends, in turn, would have similar connections – relationships – represented by Edges. There would be attributes like birthdates, college etc – represented by Properties.
NoSQL databases really mean No Relational Databases. These databases provide mechanism to store structure, semi-structured or unstructured data. However their key feature is not having the relation between different data the way it is maintained in relational databases. Many of these databases also support SQL like interface. And hence these databases sometimes are also referred as Not Only SQL.
Types of NoSQL Databases:
- Key-Value: In this type, data is stored in key value format. Every item to be stored in the db is stored as an attribute – referred as “key” and associated value.
- Graph – This type of database is useful for storing network like data such as social network.
- Document Database – Each document is stored as key and associated data in value. The associated data could be in XML, JSON etc and could also be nested.
- Wide-column stores
Advantages of NoSQL Databases:
- Dynamic Schemas – NoSQL databases are built to insert data without any predefined schema and hence this works very well with parallel development, agile methodology. Developers can define their own requirements for data storage and could be completely independent of other teams to store in the same DB.
- Auto-Sharding – NoSQL databases have built-in support to scale horizontally. Whereas relational databases usually scaled vertically.
- Replication – Most NoSQL databases have support for replication of data across the instances. And this is transparent to the application.
- Caching – Some of the NoSQL databases also provide caching which improves the performance even further.
Typical Use cases:
- Personalization – Application can start collecting data incrementally and store it in NoSQL DB seamlessly. This would not be easy with RDBMS.
- Real Time Big Data – NoSQL is optimized for distributed writes and hence serve as a good storage for real time big data.
- Internet Of Things (IOT) – Billions of devices across the globe would be collecting humongous data. Such data would demand all the characteristics of a NoSQL DB.