This repository contains a variety of projects that focus on system design, services, and utilities. Below is an organized summary of each project, providing insight into their functionality and goals. 🌟🌟🌟
- Software Design and Architecture Projects and Experiments
- Table of Contents
- Connection Pool
- DB Sharding
- Server Sent Events: Streaming Logs
- Message Brokers
- MySQL Read Replica Setup
- Mock EC2 Status Check
- Airline Check-in System
- SQL Locking
- RDB Based KV Store
- Load Balancer
- Remote Lock
- Distributed ID Generator
- Comparative Analysis of UUID and Auto-Increment ID Insertion Performance
- MySQL LIMIT OFFSET vs Cursor-Based Pagination
- MySQL ON DUPLICATE KEY UPDATE vs REPLACE INTO Performance Analysis
- Hashtag Service
- Table of Contents
Connection pooling is an essential design pattern for efficient database management. It minimizes the cost of creating and closing connections by maintaining a pool of reusable connections, which significantly enhances performance and optimizes resource use. 🎯🎯🎯
Database sharding divides a large database into smaller, more manageable segments called shards. Each shard operates as an independent database containing a portion of the data. Sharding is crucial for improving scalability and performance by distributing data across multiple servers. ⚡⚡⚡
This project demonstrates a log streaming service implemented using FastAPI. Users can initiate deployments and view real-time logs through Server-Sent Events (SSE), enabling continuous updates without requiring the client to repeatedly poll the server. 📝📝📝
This project contains examples and implementations of message brokers, including RabbitMQ and Kafka. These tools are explored for their roles in facilitating asynchronous communication and task management between services. 🛠️🛠️🛠️
A detailed guide to configuring a MySQL read replica with Docker. This project explains the process of setting up primary and replica MySQL containers, configuring replication, and verifying synchronization between the databases. 📚📚📚
This project replicates an EC2 instance status check service using short and long polling. It provides a practical demonstration of polling mechanisms, showcasing how clients can retrieve instance statuses effectively through either method. 🔍🔍🔍
This system manages seat allocation for multiple airlines and flights, addressing concurrency challenges during booking. Various approaches to seat assignment, such as sequential and parallel strategies with and without locking mechanisms, are evaluated for efficiency.
This project investigates SQL locking mechanisms, focusing on how they maintain data consistency during concurrent access. Understanding these techniques allows developers to design systems that are both reliable and high-performing under concurrent workloads. 🔒🔒🔒
A relational database is used to implement a Key-Value (KV) store with functionalities like adding key-value pairs with expiration times, retrieving values, and clearing expired keys. The application is built in Go and highlights efficient use of an RDBMS for KV store operations. 🔑🔑🔑
This project develops a load balancer that distributes requests across backend servers, ensuring high availability and efficient resource utilization. It focuses on L4 (Transport Layer) load balancing, which directs traffic based on network and transport layer information. ⚖️⚖️⚖️
This project demonstrates the implementation of remote locking mechanisms using Redis and Go. It includes both single-instance and quorum-based distributed locks, offering solutions for synchronization in distributed systems. 🔗🔗🔗
This project explores methods for generating unique identifiers in distributed systems. Various strategies are compared for their scalability, reliability, and performance under different conditions. 🆔🆔🆔
A performance comparison between UUIDs and auto-increment IDs for database insertion operations. The analysis evaluates their suitability for scalability and efficiency in systems requiring high throughput. 📊📊📊
This experiment contrasts two pagination methods, LIMIT OFFSET and Cursor-Based Pagination, using a dataset with millions of rows. Results highlight the advantages of cursor-based pagination for efficient data retrieval at scale. 📖📖📖
This analysis examines two MySQL conflict-resolution statements, ON DUPLICATE KEY UPDATE and REPLACE INTO, focusing on their performance in high-concurrency environments and evaluating their trade-offs in specific use cases. 🔄🔄🔄
The Hashtag Service offers tools for managing hashtags in posts, including generating posts with hashtags, extracting and counting hashtag occurrences, and storing the data in MongoDB. The system is designed to handle high-volume hashtag processing efficiently. 🏷️🏷️🏷️