Search⌘ K

Types of Storage Systems: Block, File, and Object Storage

Learn SQL, NoSQL, and NewSQL databases to build scalable, reliable, and high-performance systems.

Choosing a database is one of the most critical decisions in System Design.

This choice fundamentally shapes an application’s ability to scale, maintain data integrity, and perform under load. With many options out there, selecting the right one can feel daunting, but a wrong decision can lead to costly rewrites and performance bottlenecks.

In a System Design interview, success often depends on explaining why a specific database choice fits the system’s needs.

This lesson offers a practical guide to understanding databases. We will explore the core architectures, ranging from traditional SQL to modern NoSQL and NewSQL systems, which will help us understand their respective strengths, weaknesses, and ideal use cases.

Introduction to Database Systems

A database is an organized collection of data, structured to be easily accessed, managed, and updated.

In any application, the database serves as the central component that maintains state, stores information, and provides a single source of truth. The selection of a database technology is not just a technical detail; it’s a strategic decision that influences scalability, development speed, and operational complexity.

The primary goal is to match the database’s characteristics to the application’s specific requirements. We will cover the main categories:

  • SQL (relational): The standard for structured data and transactional integrity.

  • NoSQL (non-relational): A broad category built for scale and flexibility, including document, key-value, and graph models.

  • NewSQL: A hybrid category that combines SQL’s consistency with NoSQL’s scalability.

  • In-memory databases: Optimized for ultra-fast data access by keeping data in main memory instead of disk, often used for caching and real-time analytics.

  • Blob storage: Designed for large, unstructured binary data like images and videos (as discussed in the previous lesson).

Understanding these database categories lays the foundation for designing robust and scalable systems. With this overview in mind, we can now turn our attention to the oldest and most established approach, SQL databases, which continue to play a central role in software development.

SQL databases

Relational databases, which use Structured Query Language (SQL), have been the bedrock of software development for decades.

They organize data into tables, which are composed of rows and columns, similar to a spreadsheet. This structure is defined by a rigid schemaA blueprint that dictates the structure of the data, including table definitions, column data types, and the relationships between tables.. This predefined ...