Sharding, Scaling, Data Storage Methodologies, and More: Insights on Big Data
OLTP: Refers to Online Transaction Processing
It’s a bunch of programs that used to help and manage transactions (insert, update, delete and get) oriented applications. Most of the OLTP applications are faster because the database is designed using 3NF. OLTP systems are vertically scalable.
The OLAP is used for Business Analytics, Data Warehousing kind of transactions. The data processing is pretty slow because it enables users to analyze multidimensional data interactively from multiple data sources. The database schema used in OLAP applications are STAR (Facts and Dimensions, normalization is given a pass, redundancy is the order of the day). OLAP systems are horizontally scaling.
OLTP vs. OLAP: There are some major difference between OLTP and OLAP.
Traditional way of database architecture implements vertical scaling that means splitting the table into number of columns and keeping them separately in physical or logically grouping (tree structure). This will lead into performance trouble when the data is growing. Need to increase the memory, CPU and disk space each and every time when we hit the performance problem.
To eliminate the above problem Data Sharding or Shared nothing concept is evolved, in which the database are scaled horizontally instead of vertically using the master/slave architecture by breaking the database into shards and spreading those into a number of vertically scalable servers.
The Data Sharding concept is discussed in detail in this link.
MPP (Massive Parallel Processing systems): Refers to the use of a large number of processors (or separate computers) to perform a set of coordinated computations in parallel.
MPP is also known as cluster computing or shared nothing architecture discussed above.
The examples for MPP are TeraData, GreenPlum.
Vertical and Horizontal Scaling:
Horizontal scaling means that you scale by adding more machines into your pool of resources where vertical scaling means that you scale by adding more power (CPU, RAM) to your existing machine.
In a database world horizontal-scaling is often based on partitioning of the data i.e. each node contains only part of the data, in vertical-scaling the data resides on a single node and scaling is done through multi-core i.e. spreading the load between the CPU and RAM resources of that machine.
With horizontal-scaling it is often easier to scale dynamically by adding more machines into the existing pool – Vertical-scaling is often limited to the capacity of a single machine.
Below are the differences between vertical and horizontal scaling.
CAP Theorem: The description for the CAP Theorem is discussed in this link.
Some insight on CAP: http://www.slideshare.net/ssachin7/scalability-design-principles-internal-session
Greenplum: Greenplum Database is a massively parallel processing (MPP) database server based on PostgreSQL open-source technology. MPP (also known as shared nothing architecture) refers to systems with two or more processors which cooperate to carry out an operation – each processor with its own memory, operating system and disks.
The high-level overview of GreenPlum is discussed in this link.
Some Interesting Links:
Hbase: HBase is the Hadoop database. It is distributed, scalable, big data storage. It is used to provide real-time read and write access to large database which uses cluster (master/slave) architecture to store/retrieve data.
- Hadoop is open source software developed by Apache to store large data.
- MapReduce is used for distributed processing of large data sets on clusters (master/slave). MapReduce takes care of scheduling tasks, monitoring them and re-executing any failed tasks. The primary objective of Map/Reduce is to split the input data set into independent chunks and send to the cluster. The MapReduce sorts the outputs of the maps, which are then input to the reduce tasks. Typically, both the input and the output of the job are stored in a file system.
- The Hadoop Distributed File System(HDFS) primary objective of HDFS is to store data consistently even in the presence of failures. HDFS uses a master/slave architecture in which one device (the master) controls one or more other devices (the slaves). The HDFS cluster consists of one or more slaves who actually contain the file system and a master server manages the file system namespace and regulates access to files.
Hbase documentation is provided in this link.
Some Interesting Links:
1. Do GreenPlum achieve MPP? Is GreenPlum uses Hadoop file system?
2. What are the different storage methodologies? Compare them.
Data Storage methodologies: There are three different methodologies, they are.
- Row based storage
- Column based storage
Some key points on different storage methodologies are,
|Storage Methodologies||Description||Common Use Case||Strength||Weakness||Size of DB||Key Players|
|Row-based||Data structured or stored in Rows.||Used in transaction processing, interactive transaction applications.||Robust, proven technology to capture intermediate transactions.||Scalability and query processing time for huge data.||Sybase, Oracle, My SQL, DB2||Sybase, Oracle, My SQL, DB2|
|Column-based||Data is vertically partitioned and stored in Columns.||Historical data analysis, data warehousing and business Intelligence.||Faster query (specially ad-hoc queries) on large data.||Not suitable for transaction, import export seep & heavy computing resource utilization.||Several GB to 50 TB.||Info Bright, Asterdata, Vertica, Sybase IQ, Paraccel|
|NoSQL-Key Value Stored||Data stored in memory with some persistent backup.||Used in cache for storing frequently requested data in applications.||Scalable, faster retrieval of data , supports Unstructured and partial structured data.||All data should fit to memory, does not support complex query.||Several GBs to several TBs.||Amazon S3, MemCached, Redis, Voldemort|
|NoSQL- Document Store||Persistent storage of unstructured or semi-structured data along with some SQL Querying functionality.||Web applications or any application which needs better performance and scalability without defining columns in RDBMS.||Persistent store with scalability and better query support than key-value store.||Lack of sophisticated query capabilities.||Several TBs to PBs.||MongoDB, CouchDB, SimpleDb|
|NoSQL- Column Store||Very large data store and supports Map-Reduce.||Real time data logging in Finance and web analytics.||Very high throughput for Big Data, Strong Partitioning Support, random read-write access.||Complex query, availability of APIs, response time.||Several TBs to PBs||HBase, Big Table, Cassandra|