Posts

SQL vs NoSQL

In the world of databases, there are two main types of solutions: SQL and NoSQL - or relational databases and non-relational databases. Both of them differ in the way they were built, the kind of information they store, and how they store it. Relational databases are structured and have predefined schemas, like phone books that store phone numbers and addresses. Non-relational databases are unstructured, distributed and have a dynamic schema, like file folders that hold everything from a person’s address and phone number to their Facebook ‘likes’ and online shopping preferences. SQL Relational databases store data in rows and columns. Each row contains all the information about one entity, and columns are all the separate data points. Some of the most popular relational databases are MySQL, Oracle, MS SQL Server, SQLite, Postgres, and MariaDB. NoSQL Following are the most common types of NoSQL: Key-Value Stores: Data is stored in an array of key-value pairs. The ‘key’ is a...

Understand Domain Name System (DNS)

Image
Domain Name System (DNS) What is the Domain Name System (DNS)? The  Domain Name System  ( DNS ) is a  hierarchical  and  decentralized  naming system for computers, services, or other resources connected to the  Internet  or a private network. It associates various information with  domain names  assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical  IP addresses  needed for locating and identifying computer services and devices with the underlying  network protocols . ( ref .)

Fundamentals of Software System Scaling and Its concepts

Understanding the fundamentals of scaling concepts Vertical scaling Horizontal scaling Caching Load balancing Database replication Database partitioning Using NoSQL instead of scaling a relational database Being asynchronous Database Sharding

Fundamentals of System Design

Image
Systems design  is the process of defining the architecture, modules, interfaces, and data for a  system  to satisfy specified requirements.  Systems design  could be seen as the application of  systems  theory to product development. System Design Basics Whenever we are designing a large system, we need to consider few things: What are different architectural pieces that can be used? How do these pieces work with each other? How can we best utilize these pieces, what are the right tradeoffs? Investing in scaling before it is needed is generally not a smart business proposition; however, some forethought into the design can save valuable time and resources in the future. In the following chapters, we will try to define some of the core building blocks of scalable systems. Familiarizing these concepts would greatly benefit in understanding distributed system concepts. In the next section, we will go through Consistent Hashing, CAP Theorem,...