Difference between PostgreSQL and MongoDB

The main difference between PostgreSQL and MongoDB is that PostgreSQL is a relational database management system that uses SQL, whereas MongoDB is a non-relational, document-oriented database that stores data in flexible, JSON-like documents.

Key Differences Between PostgreSQL and MongoDB

The Major differences between PostgreSQL and MongoDB are explained in the table below:

Feature PostgreSQL MongoDB

Built By

MongoDB was started in 2007 by 10Gen, which created the product based on the word humongous10Gen

PostgreSQL is an open-source project maintained by PostgreSQL Global Development Group and their prolific community

Database Type Relational Database Management System (RDBMS) Non-Relational, Document-Oriented Database
SQL Support Supports SQL Supports MongoDB Query Language (similar to JavaScript)

Built Using

PostgreSQL was written in C

MongoDB was written in C++

Schema Requires predefined schema Dynamic schemas allows documents to have different fields
Scalability Scales up vertically Scales out horizontally

ACID Compliance Supports full ACID compliance Recently added support for ACID transactions across multiple documents
Data Model Tables with predefined schemas Documents with dynamic schemas
Data Storage Stores data in tables Stores data in JSON-like documents
Query Performance Optimized for complex queries Optimized for fast data retrieval and insertion

Let’s understand more about these databases individually:

PostgreSQL (Object-Relational Database)

PostgreSQL is a powerful, open source object-relational database management system (ORDBMS) with an emphasis on extensibility and standards compliance that uses and extends the SQL language combined with many features that safely store and scale the most complicated data workloads.

PostgreSQL is ACID-compliant, transactional, that stores the data in the tabular format and uses constraints, triggers, roles, stored procedures and views as the core components. 

Why use PostgreSQL ?  

  • Free and open source.
  • Available in multiple languages.
  • Highly Extensible.
  • Protects data integrity.
  • Builds fault-tolerant environments.
  • Robust access-control system
  • Supports international characters.
  • Apple uses PostgreSQL!

Queries in PostgreSQL

Let’s look at some common operation queries in SQL

  • Creating students table  
 CREATE TABLE students (id INT, name VARCHAR (100)); 
  • Inserting a record into students table 
 INSERT INTO students VALUES (1, 'Beginner'); 
  • Reading records from the students table 
 SELECT * FROM students;   

  • Updating records in students table 
     
 UPDATE students SET name="w3wiki" WHERE id = 1;  

Deleting records from students table 

 DELETE FROM students WHERE id = 1; 

MongoDB (Cross-platform Document-Oriented Database)

MongoDB is a NoSQL database where each record is a document comprising of key-value pairs that are similar to JSON objects with schemas. MongoDB is flexible and allows its users to create schema, databases, tables, etc.

Documents that are identifiable by a primary key make up the basic unit of MongoDB. Once MongoDB is installed, users can make use of Mongo shell as well. Mongo shell provides a JavaScript interface through which the users can interact and carry out CRUD operations

In other words we can say that MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era licensed under the Server Side Public License. 

Why use MongoDB?  

  • Scalable and can serve several machines.
  • It is JavaScript Based which makes it easier to use.
  • Has Faster response because it is a document-oriented database.
  • Simpler Environment Setup
  • It uses JSON syntax which is very easy to use and has a wide range of browser compatibility.
  • Data is stored in the form of JSON whether it is Objects, Object Members, Arrays, Values and Strings.
  • Uber and Stack Companies uses MongoDB!

Writing queries in MongoDB

Let’s look at some common queries in MongoDB

  • Creating a student database  
 use student; 
  • Creating a students table  
 db.createCollection("students"); 
  • Inserting records into the students collection 
 db.students.insert 
(
{
"id" : 1,
"Name" : "Harry",
"Team": "Beginner For Beginner"
}
);
  • Reading from the students collection 
 db.students.find({Name : "Harry"}).forEach(printjson); 

PostgreSQL vs MongoDB : Which is best and why?

PostgreSQL is best when : You need Standard compliant, transactional and ACID (Atomicity, Consistency, Isolation and Durability) compliant out of the box which also has a wide support for NoSQL features. 

MongoDB is best when : You need Scalability and caching for real-time analytics but is not built for transactional data i.e., accounting systems.