<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Samuel Sorial&apos;s Blog</title><description>Personal technical notes about back-end engineering and system design.</description><link>https://samuelsorial.com/</link><item><title>Design of Fault-Tolerant Virtual Machines</title><link>https://samuelsorial.com/design-of-fault-tolerant-virtual-machines/</link><guid isPermaLink="true">https://samuelsorial.com/design-of-fault-tolerant-virtual-machines/</guid><description>In some situations where failure is caused by a hardware failure, it&apos;s useful to have replication in hand. There are other types of failures that can&apos;t be resolved with replication, such as software bugs or network issues. In this article, we deal wi…</description><pubDate>Wed, 21 Jun 2023 12:14:36 GMT</pubDate></item><item><title>The Google File System - Case Study</title><link>https://samuelsorial.com/the-google-file-system-case-study/</link><guid isPermaLink="true">https://samuelsorial.com/the-google-file-system-case-study/</guid><description>Introduction
The Google file system&apos;s main goal is to support their applications&apos; workload. Which affected their design decisions, they implemented what they actually need, rather than the de-facto distributed file system.
There are 4 main different …</description><pubDate>Fri, 12 May 2023 02:30:51 GMT</pubDate></item><item><title>Pessimistic Concurrency Control - 2PL</title><link>https://samuelsorial.com/pessimistic-concurrency-control-2pl/</link><guid isPermaLink="true">https://samuelsorial.com/pessimistic-concurrency-control-2pl/</guid><description>Introduction
In today&apos;s high-traffic database management systems (DBMS), leveraging the full potential of hardware is essential. With the advent of modern CPUs, the opportunity for parallel processing has increased significantly. However, executing m…</description><pubDate>Wed, 08 Feb 2023 13:22:51 GMT</pubDate></item><item><title>Query Optimization</title><link>https://samuelsorial.com/query-optimization/</link><guid isPermaLink="true">https://samuelsorial.com/query-optimization/</guid><description>Introduction
SQL is a declarative language, which means that when you request a query, you specify the data you want, but not how to get it. The database management system (DBMS) is responsible for determining the most efficient way to retrieve the r…</description><pubDate>Mon, 16 Jan 2023 15:12:56 GMT</pubDate></item><item><title>Query Execution - Joins</title><link>https://samuelsorial.com/query-execution-joins/</link><guid isPermaLink="true">https://samuelsorial.com/query-execution-joins/</guid><description>Introduction
Joins are used to combine data from multiple tables in a database and retrieve the combined data as a single result set. This allows us to effectively retrieve data that is spread across multiple tables and can be especially useful when …</description><pubDate>Thu, 29 Dec 2022 14:29:50 GMT</pubDate></item><item><title>Query Execution -  Aggregations</title><link>https://samuelsorial.com/query-execution-aggregations/</link><guid isPermaLink="true">https://samuelsorial.com/query-execution-aggregations/</guid><description>Introduction
Once the query planner has determined the optimal plan for executing a query, it&apos;s time to implement that plan. But before we can do that, it&apos;s important to understand the algorithms used to execute the various operations in the plan.
In…</description><pubDate>Mon, 26 Dec 2022 19:25:06 GMT</pubDate></item><item><title>Understanding hash indexes</title><link>https://samuelsorial.com/understanding-hash-indexes/</link><guid isPermaLink="true">https://samuelsorial.com/understanding-hash-indexes/</guid><description>Why database indexes?
When it comes to querying databases, one of the most time-consuming and performance-intensive operations is to do a linear scan of the entire table. This requires the database management system (DBMS) to retrieve all of the page…</description><pubDate>Sun, 11 Dec 2022 18:37:28 GMT</pubDate></item><item><title>Database Buffer Pool - Part 2</title><link>https://samuelsorial.com/database-buffer-pool-part-2/</link><guid isPermaLink="true">https://samuelsorial.com/database-buffer-pool-part-2/</guid><description>Introduction
As explained in Database Buffer Pool - Part 1, a buffer pool is a limited chunk of memory, which means that whenever we bring something from the disk, we need to evict something from the buffer pool and replace it. Buffer replacement is …</description><pubDate>Thu, 27 Oct 2022 21:00:42 GMT</pubDate></item><item><title>Database Buffer Pool - Part 1</title><link>https://samuelsorial.com/database-buffer-pool-part-1/</link><guid isPermaLink="true">https://samuelsorial.com/database-buffer-pool-part-1/</guid><description>Introduction
In order to allow the database execution engine to perform its operations, it needs the pages containing the table records to be brought from disk to memory. However, we want to optimize I/O operations, so there is a subsystem of the dat…</description><pubDate>Tue, 25 Oct 2022 00:15:11 GMT</pubDate></item><item><title>Compression In Databases</title><link>https://samuelsorial.com/compression-in-databases/</link><guid isPermaLink="true">https://samuelsorial.com/compression-in-databases/</guid><description>Introduction
It&apos;s well-known that the database&apos;s main bottleneck lies in I/O. That&apos;s what makes database designers aim toward reducing it in any possible way, one of them is to look carefully at the workload and choose the suitable storage model (for…</description><pubDate>Mon, 17 Oct 2022 20:21:24 GMT</pubDate></item><item><title>Storage Models for Databases</title><link>https://samuelsorial.com/storage-models-for-databases/</link><guid isPermaLink="true">https://samuelsorial.com/storage-models-for-databases/</guid><description>Introduction
Different applications have different requirements, as discussed in What the heck is OLTP, OLAP?, it depends on business rules to define the workload of our database. Therefore, we need different storage models for the database in order …</description><pubDate>Sun, 16 Oct 2022 00:00:32 GMT</pubDate></item><item><title>What the heck is OLTP, OLAP?</title><link>https://samuelsorial.com/what-the-heck-is-oltp-olap/</link><guid isPermaLink="true">https://samuelsorial.com/what-the-heck-is-oltp-olap/</guid><description>What&apos;s OLTP?
OLTP stands for Online Transaction Processing, in which a database is used to execute huge amounts of transactions. Transaction means to change data, either by inserting, updating, or deleting small amounts of data. It&apos;s usually used at …</description><pubDate>Thu, 14 Jul 2022 22:45:13 GMT</pubDate></item><item><title>Quorum Consensus</title><link>https://samuelsorial.com/quorum-consensus/</link><guid isPermaLink="true">https://samuelsorial.com/quorum-consensus/</guid><description>The Problem
According to the CAP theorem, you can not achieve consistency, availability, and partition tolerance all at once. However, achieving strong consistency is desirable in many systems, but this strong consistency has a price that should be p…</description><pubDate>Sat, 06 Mar 2021 15:00:26 GMT</pubDate></item><item><title>Deadlock prevention &amp; necessary conditions to occur</title><link>https://samuelsorial.com/deadlock-prevention-and-necessary-conditions-to-occur/</link><guid isPermaLink="true">https://samuelsorial.com/deadlock-prevention-and-necessary-conditions-to-occur/</guid><description>Deadlock is a state when a set of threads is waiting for an event that can only be raised by a thread(s) from the same set. There are many situations that developers think that it&apos;s a deadlock, and it is not. Sometimes it&apos;s a  livelock  or it&apos;s just …</description><pubDate>Mon, 25 Jan 2021 04:34:24 GMT</pubDate></item><item><title>Mesa VS Hoare semantics</title><link>https://samuelsorial.com/mesa-vs-hoare-semantics/</link><guid isPermaLink="true">https://samuelsorial.com/mesa-vs-hoare-semantics/</guid><description>Introduction
While designing multithreaded programs, we need to keep sure that our shared objects are synchronized between all of the running threads. Monitors are used to ensuring this synchronization. A monitor provides the programmer with the abil…</description><pubDate>Wed, 13 Jan 2021 01:04:05 GMT</pubDate></item><item><title>An introduction to OAuth 2.0</title><link>https://samuelsorial.com/an-introduction-to-oauth-20/</link><guid isPermaLink="true">https://samuelsorial.com/an-introduction-to-oauth-20/</guid><description>First of all, why does it exist?
OAuth 2.0 was created to make a standard way - protocol - for making users delegate access to their resources in a specific application to another application. This is widely used today, whenever you login into an app…</description><pubDate>Mon, 04 Jan 2021 03:25:29 GMT</pubDate></item><item><title>Thread Implementation &amp; Modeling</title><link>https://samuelsorial.com/thread-implementation-and-modeling/</link><guid isPermaLink="true">https://samuelsorial.com/thread-implementation-and-modeling/</guid><description>Threads Implementation

Kernel Threads
Kernel threads are the simplest type of threads. They are implemented in the operating system kernel itself. It&apos;s used to execute the kernel code concurrently.


Single-threaded processes with multiple kernel th…</description><pubDate>Thu, 31 Dec 2020 01:41:40 GMT</pubDate></item><item><title>Thread Abstraction</title><link>https://samuelsorial.com/thread-abstraction/</link><guid isPermaLink="true">https://samuelsorial.com/thread-abstraction/</guid><description>Introduction
Our real-world run concurrently, which means that there are many things that happen at the same time. For example, you are reading this blog post while your friend is driving, or maybe he is just sleeping! The fact that you are doing som…</description><pubDate>Wed, 30 Dec 2020 01:48:25 GMT</pubDate></item></channel></rss>