Skip to content

Instantly share code, notes, and snippets.

View Tran-Duc-Hoa's full-sized avatar

Trần Đức Hòa Tran-Duc-Hoa

View GitHub Profile
Feature SQL (Relational) NoSQL (Non-relational)
Data Model Tables (Rows and Columns) Document, Key-Value, Graph, Wide-Column
Schema Fixed, Predefined (Rigid) Dynamic, Flexible (Schema-less)
Query Language SQL (Standardized) Varies (e.g., JSON queries, proprietary APIs)
Scalability Vertical (Scale up) Horizontal (Scale out)
ACID Transactions Strong (Guaranteed data integrity) Weak/Limited (Prioritizes Availability)
Best Use Case Transactional systems, Complex queries, Financials Big Data, Real-time analytics, Evolving data
Scenario Rationale
Rapid Growth & Massive Scale Applications that need to handle high volumes of traffic or petabytes of data and require horizontal scaling (e.g., social media feeds, large-scale IoT data ingestion).
Flexible or Evolving Data Your data structure is unpredictable, changes rapidly, or includes a variety of formats (e.g., user-generated content, product catalogs where different items have different attributes).
Unstructured/Semi-Structured Data Storing documents, sensor data, log data, large media files, or data that naturally fits a nested, hierarchical structure (like JSON objects).
High Availability & Speed Over Consistency Applications where downtime is critical and eventual consistency is acceptable (e.g., caching layers, real-time analytics, content delivery networks).
Scenario Rationale
Transactional Data & High Data Integrity Applications like e-commerce payment processing, financial systems, or inventory management where data consistency is non-negotiable and requires ACID compliance.
Complex Relationships & Queries Systems where you have highly related, normalized data and frequently need to execute complex "JOIN" or generate sophisticated reports (e.g., CRM systems, business intelligence platforms).
Structured and Stable Data Your data schema is well-defined from the start and is not expected to change frequently (e.g., traditional user authentication and profile data).
Moderate Scaling Needs Applications with predictable, manageable growth that can be handled by scaling a powerful single server (vertical scaling) or using well-established sharding patterns.
Con Description
Limited ACID Support Many NoSQL databases prioritize availability and partition tolerance over strict consistency (following the CAP theorem). Strong transactional integrity is often weaker or only available for single-document operations.
Complex Queries & "JOIN" Complex queries and multi-document joins are either non-existent or difficult/inefficient to perform, requiring more application-side logic.
Lack of Standardization Each type of NoSQL database has a different query language (or a proprietary API), meaning knowledge is less portable and the learning curve is steeper for new engineers.
Maturity & Tooling Compared to SQL, the NoSQL ecosystem is less mature, which can translate to fewer tools, less comprehensive community support, and a lack of established best practices for certain use cases.
Pro Description
Horizontal Scaling They are designed for horizontal scaling (distributing the data load across multiple servers or nodes). This provides the scalability for handling massive traffic and data volumes.
Flexible Schema NoSQL databases feature a dynamic schema or are schema-less. This allows for rapid iteration and development, as data structures can change quickly without downtime or complex migrations.
Handling Diverse Data Types They are excellent for storing structured, semi-structured, and unstructured data (e.g., JSON documents, logs, media files) in their native format.
High Performance (Reads/Writes) By often using denormalized data structures and avoiding complex "JOIN", NoSQL databases can offer superior read and write performance for specific, simple queries.
@Tran-Duc-Hoa
Tran-Duc-Hoa / cons-of-sql.md
Created October 7, 2025 10:04
Cons of SQL
Con Description
Vertical Scaling SQL databases typically scale vertically (adding more CPU/RAM to a single server). This is expensive and eventually hits a hardware ceiling.
Rigid Schema The need for a predefined, fixed schema means changing the data structure (e.g., adding a new column) can be complex, time-consuming, and potentially disruptive, especially on large datasets.
Handling Unstructured Data They are poorly suited for storing and querying unstructured data (like JSON documents or images) as all data must fit into the tabular format.
@Tran-Duc-Hoa
Tran-Duc-Hoa / pro-of-sql.md
Created October 6, 2025 12:49
Pros of SQL
Pro Description
Data Integrity (ACID) & Transactions Adherence to ACID (Atomicity, Consistency, Isolation, Durability) properties ensures reliable transactions and data integrity, making them ideal for financial or inventory systems.
Complex Queries SQL is highly optimized for complex joins across multiple tables and intricate analytical queries, allowing for robust reporting and data analysis.
Maturity & Community As a mature technology, SQL has a large community, extensive documentation, and a lot of established tools and support, making debugging easier.
Standardization SQL is a standardized query language, it becomes portable across different relational databases (e.g., PostgreSQL, MySQL, SQL Server).