AWESOME System Design
If you appreciate the content 📖, support projects visibility, give 👍| ⭐| 👏
About
A curated list of awesome System Designing articles, videos and resources for distributed computing, AKA Big Data.
Disclaimer: Stars on github does not reflect usage or popularity for every item here listed.
Inspired By Awesome-BigData
Contents
-
Relational Database Management System
-
NoSQL
Articles
Introduction / Interviews
-
System Design Primer [109k ⭐] - Awesome compilation of resources, including Anki flashcard decks.
-
System Design Interview Questions - Concepts you should know - A curated list of topics to introduce you to system design.
-
Grokking the System Design Interview (PAID) - Grokking System Design preparation is one of the most talked about course. The best thing about it is the design of applications it suggests rather than explanations of what each tool is supposed to do.
-
System Design in Software Development - Basic article on the topics of system design and architecture.
-
Everything you need to know about Design System - Another introductory article written in a friendly way.
-
System Design - Introductory interview preparation resources
-
Design Pattern for Distributed Systems - Article talking about some patterns as well as some technologies to be considered.
Advanced
-
Distributed Computing - Wikipedia article broadening the view of distributed system design.
-
Fallacies of Distributed Computing - Wikipedia article introducing the topic of fallacies of distributed computing and its effects.
-
Fallacies of Distributed Computing Explained - In depth explanation of the fallacies mentioned above.
-
CAP Theorem - IBM Article about CAP Theorem, Microservices and NoSQL DBs.
-
Pattern: Microservice Architecture - Good article talking about Microservice architecture as well as its drawbacks.
-
Taxonomy of Distributed Systems - 11 Page lecture classifying distributed systems and specifically why we need them.
-
Top 10 Secure Coding Practices - Brief article talking about good practices for code securities.
-
Scalable Web Architecture and Distributed Systems - Good article about distributed systems as well as some of the potential tools.
Books
-
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services [Paid 💵] - Book that talks about disitributed systems as well as lightly demonstrating some code of what it looks like.
-
Designing Data Intensive Applications [Paid 💵] - Goes in depth to explain various resources we use when working with distributed systems, as well as how it came to be and what problems it aims to solve.
-
Building Microservices [Free 👍] - Awesome book that talks about designing sytem architecture with microservices in depth, includes most relevant topics in this regard.
-
Monolith to Microservices [Free 👍] - Written by the same author as the one above, this book will cover the migration from Monolith to Microservices, it's recommended you start by the previous book.
Videos
Introduction / Interviews
-
Gaurav Sen - System Design Series - Good resource for people who want to learn more about system design, introduces the topic in a very easy to understand way.
-
Tech Dummies - System Design Series - Another introduction to system design.
-
Mock System Design Interview at Google - Overview of what an interview on system design would look like from the perspective of a flawed but close fulfilling of the requirements. Key thing here is how the interaction with the interviewer goes.
-
Google Preparation Guide - A quick video explaining how they interview.
Advanced
- The evolution of Reddit Architecture - Overview of how Reddit system design scaled.
Big Data
Relational Database Management System
Experimental listing. Arrows indicate trending, r/ reddit community size and SO indicates questions asked on StackOverflow.
-
↗️ MariaDB - [r/ 1.2k 🗣] [SO 8.8k 📚] - MariaDB is a fork of MySQL server.
-
↘️ MySQL - [r/ 22k 🗣] [SO 603k 📚] - Widely used relational database.
-
↗️ PostgresSQL - [r/ 14.8k 🗣] [SO 120k 📚] - Relational database that has been gaining popularity.
-
↘️ SQLite - [r/ 1.2k 🗣] [SO 83k 📚] - Another widely used database that is built into all mobile phones and most computers.
NoSQL
Cache (Key-Value)
-
Apache Ignite [3.3k ⭐] - In memory caching with ACID properties.
-
Couchbase - Inspired by memcached, adding features such as replication and persistance.
-
Oracle Coherence [126 ⭐] - High scaling, low latency in-memory caching.
-
Memcached [10.2k ⭐] - One of the first in-memory caching database, high performing and multi-threaded.
-
Redis [44k ⭐] - Widely used in-memory caching database with many added features such as persistent storage and supporting strings, lists, sets, hashses, streams, bitmaps, etc.
Store (Key-Value)
- Apple FoundationDB [10k ⭐] - Multi-model (many data types in a single database), ACID key-value store. Easily scalable and fault tolerant.
Document Store
-
CouchDB [4.6k ⭐] - ACID compliant NoSQL document-store DB, provides a RESTful HTTP API for reading and updating database documents.
-
MongoDB - One of the most popular 'NoSQL' database for general purpose.
-
RethinkDB [23.8k ⭐] - Document-store DB.
-
ElasticSearch [49.9k ⭐] - Widely popular 'NoSQL' database for fast and scalable search engines.
Wide Column Store
-
Amazon DynamoDB - Key-Value and Document database, highly performant, scalable and secure.
-
Google Bigtable - Scalable and performant 'NoSQL' database for large analytical and operational workload.
-
Cassandra - Facebook-born project very fast, easily scalable, with option to include consistency with each operation.
-
Scylla [4.9k ⭐] - 'NoSQL' data store using seastar framework, compatible with Cassandra.
-
HBASE [3.6k ⭐] - Modeled after Google's Bigtable and written in Java. Developed as a part of Apache Hadoop project and runs on top of HDFS or Alluxio.
Graph
-
Amazon Neptune - Fast, reliable and fully managed graph database service.
-
ArangoDB [10k ⭐] - Flexible database for documents, key-value, graphs. Uses its own query language, AQL.
-
Neo4j [7.9k ⭐] - Good support for a graph db, ACID compliant and flexible.
Distributed File Systems
-
HDFS - Hadoop File System is a a widely popular choice among its big data competitors, providing high throughput access.
-
Lustre - File system for computer clusters.
-
CephFS - Unified, distributed storage system.
-
GlusterFS - Scale-out NAS file system.
-
MooseFS - POSIX-compliant distributed file system.
-
XtreemFS - Fault tolerant file system.