32-bit vs 64-bit
    Annotations vs Decorators
    BigQuery vs Bigtable
    Block Storage vs File Storage vs Object Storage
    C vs C++
    Canvas vs SVG
    Constructor vs Init() vs Factory
    Containers vs Virtual Machines (VMs)
    DOM vs Virtual DOM vs Shadow DOM
    DQL vs DDL vs DCL vs DML
    Dagger vs Guice
    Data Mining vs Machine Learning vs Artificial Intelligence vs Data Science
    Flux vs Redux
    GCP API Gateway vs Cloud Endpoint
    GCP Cloud Run vs Cloud Functions vs App Engine
    GCP DataFlow vs Dataproc
    Google Analytics 4 vs Universal Analytics
    Google Internal vs Open Source
    HEIC vs HEIF vs HEVC vs JPEG
    Java vs C++
    Jetty vs Netty
    Kotlin vs Java
    LLVM vs JVM
    Linux vs BSD
    Microcontroller vs Microprocessor vs Computer
    Node.js vs Erlang
    POSIX vs SUS vs LSB
    Pass-by-value vs Pass-by-reference
    Proto2 vs Proto3
    PubSub vs Message Queue
    REST vs SOAP
    React vs Flutter vs Angular
    Rust vs C++
    SLI vs SLO vs SLA
    SRAM vs DRAM
    SSD vs HDD
    Software Engineer vs Site Reliability Engineer
    Spanner vs Bigtable
    Stack based VM vs Register based VM
    Stateless vs Stateful
    Static Site Generation vs Server-side Rendering vs Client-side Rendering
    Strong Consistency vs Eventual Consistency
    Subroutines vs Coroutines vs Generators
    Symlinks vs Hard Links
    TCP vs UDP
    Tensorflow vs PyTorch
    Terminal vs Shell
    Vi vs Vim vs gVim vs Neovim
    WAL vs rollback journal
    gtag vs Tag Manager
    stubs vs mocks vs fakes

Block Storage vs File Storage vs Object Storage

Updated: 2021-12-07

The are different levels of abstractions. From low to high:

  • Block storage:
    • the traditional storage type. Lowest level, no file systems.
    • data is arbitrarily organized, evenly sized.
    • mountable: can be attached or detached from virtual machines. (think of USB drives)
    • usually deployed in storage-area network (SAN) environments and must be tied to a functioning server.
    • can either be HDD or SSD.
    • high latency comparing to databases; but faster comparing to File storage due to the lack of file hierarchy. Good for storing rich media.
    • comparable to SAN
  • File storage:
    • data is organized as a hierarchy of files in folders
    • on top of a file system; easier to use and navigate
    • comparable to NAS
  • Object storage:
    • get and put any file you want via a REST API
    • high level web services provided by cloud providers (most notably AWS S3)
    • not mountable, a storage service, not a device

In the Cloud

Major cloud providers have solutions for different data storage usecases:

Amazon Google Cloud Azure
Object Storage S3 Google Cloud Storage Azure Blob Storage
File Storage EFS Google Cloud Filestore Azure Files
Block Storage EBS Persistent Disk Azure Disk Storage
  • DAS: direct-attached storage.
  • NAS: network-attached storage. At file-level as opposed to block-level storage.
  • SAN: storage area network.

Key differences:

  • DAS vs NAS: DAS is simply an extension to an existing server and is not necessarily networked. NAS is networked, typically provides access to files using network file sharing protocols such as NFS, SMB, or AFP.
  • NAS vs SAN: NAS provides both storage and a file system. SAN only provides block-based storage. For the client OS:
    • NAS appears to be a file server
    • SAN appears to be a disk: visible in disk and volume management utilities along with local disks, and available to be formatted with a file system and mounted.