Comparisons
System Design Comparisons
Side-by-side comparisons of common system design choices — ACID vs BASE, Cassandra vs MongoDB, Horizontal scaling vs Vertical scaling, Kafka vs RabbitMQ, L4 load balancing vs L7 load balancing, Latency vs Throughput and more — with key differences, when to use each, and a verdict.
ACID vs BASEACID describes strict transactional guarantees of relational databases; BASE describes the relaxed, availability-first model many NoSQL stores adopt.Cassandra vs MongoDBCassandra is a masterless, write-optimized wide-column store for huge scale and availability; MongoDB is a document database with flexible schemas and richer queries.Horizontal scaling vs Vertical scalingVertical scaling means a bigger machine; horizontal scaling means more machines. Vertical is simplest; horizontal is how you scale past one box and survive failures.Kafka vs RabbitMQKafka is a distributed, replayable commit log built for high-throughput event streams; RabbitMQ is a flexible message broker built for routing tasks to consumers.L4 load balancing vs L7 load balancingAn L4 load balancer routes by IP/port (transport layer); an L7 load balancer understands HTTP and can route by path, host, headers or cookies.Latency vs ThroughputLatency is how long one request takes; throughput is how many requests you handle per unit time. Optimizing one can hurt the other.Monolith vs MicroservicesA monolith is one deployable codebase; microservices split the system into many independently-deployed services. The trade is simplicity vs independent scaling and team autonomy.Optimistic locking vs Pessimistic lockingPessimistic locking blocks others while you hold a lock; optimistic locking lets everyone proceed and detects conflicts at write time via a version check.PostgreSQL vs MySQLTwo mature open-source relational databases. Postgres leans feature-rich and standards-correct; MySQL leans simple and fast for read-heavy web workloads.Process vs ThreadA process is an isolated program with its own memory; a thread is a lighter unit of execution that shares memory with other threads in the same process.Redis vs MemcachedBoth are in-memory key-value stores used as caches. Redis adds rich data structures, persistence and replication; Memcached is a leaner, multithreaded pure cache.REST vs GraphQLREST exposes resources at fixed endpoints; GraphQL exposes one endpoint where the client asks for exactly the fields it needs.Sharding vs ReplicationReplication copies the same data to multiple nodes; sharding splits different data across nodes. One scales reads and adds redundancy; the other scales writes and storage.SQL vs NoSQLSQL databases give you relations, joins and ACID transactions on a fixed schema; NoSQL trades some of that for flexible schemas and easier horizontal scale.Strong consistency vs Eventual consistencyStrong consistency means every read sees the latest write; eventual consistency means replicas converge over time. The trade is correctness vs availability and latency.TCP vs UDPTCP is a reliable, ordered, connection-based protocol; UDP is a lightweight, connectionless protocol that trades reliability for low latency.
Part of SystemLore — learn how real systems work, then build them in the game.