[DMDB] Finish first version of summary

This commit is contained in:
2026-07-25 13:51:42 +02:00
parent 5b167a9e39
commit 45b3f178a7
8 changed files with 111 additions and 1 deletions
Binary file not shown.
+3
View File
@@ -1,7 +1,10 @@
\newacronym{sql}{SQL}{Structured Query Language} \newacronym{sql}{SQL}{Structured Query Language}
\newacronym{nosql}{NoSQL}{SQL-less database (commonly a Key-Value Store, see Section~\ref{sec:key-value-store})}
\newacronym{dbms}{DBMS}{Database Management System} \newacronym{dbms}{DBMS}{Database Management System}
\newacronym{simd}{SIMD}{Single Instruction Multiple Data} \newacronym{simd}{SIMD}{Single Instruction Multiple Data}
\newacronym{avxa}{AVX}{Advanced Vector Extensions, also see \gls{avx}} \newacronym{avxa}{AVX}{Advanced Vector Extensions, also see \gls{avx}}
\newacronym{ra}{RA}{Relational Algebra, see Section~\ref{sec:relational-algebra}} \newacronym{ra}{RA}{Relational Algebra, see Section~\ref{sec:relational-algebra}}
\newacronym{ann}{ANN}{Approximate Nearest Neighbour Search} \newacronym{ann}{ANN}{Approximate Nearest Neighbour Search}
\newacronym{knn}{KNN}{$K$-Nearest Neighbour Search} \newacronym{knn}{KNN}{$K$-Nearest Neighbour Search}
\newacronym{acid}{ACID}{Atomicitty, Consistency, Isolation, Durability}
\newacronym{base}{BASE}{Basically Available, Soft State, Eventually Consistent}
+7
View File
@@ -2,3 +2,10 @@
name={superkey}, name={superkey},
description={See Section \ref{sec:functional-dependency}} description={See Section \ref{sec:functional-dependency}}
} }
\newglossaryentry{quorum}{
name={quorum},
description={
See \href{https://en.wikipedia.org/wiki/Quorum_(distributed_computing)}{this Wikipedia article}.
TL;DR: It is a synchronization system for distributed computing.
}
}
@@ -2,7 +2,7 @@
The benefit of supporting vector search in DBMS is that this makes it easy to use for the end user and can be optimized for large datasets. The benefit of supporting vector search in DBMS is that this makes it easy to use for the end user and can be optimized for large datasets.
\subsection{Filtered Vector Search (FVS)} \subsection{Filtered Vector Search (FVS)}
This allows us to query both structured and unstructured data. In concept, this is SQL + Vectors, sometimes plus joins, subquery expressions, This allows us to query both structured and unstructured data. In concept, this is \acrshort{sql} + Vectors, sometimes plus joins, subquery expressions,
multiple vector searches (on both sides of the join). Sometimes, the dataset isn't even a vector + tag stored in main memory. multiple vector searches (on both sides of the join). Sometimes, the dataset isn't even a vector + tag stored in main memory.
Indices are typically built on unfiltered data. Thus, we need to think about the proper execution method. Suppose we are to retrieve $K$ rows with filtering: Indices are typically built on unfiltered data. Thus, we need to think about the proper execution method. Suppose we are to retrieve $K$ rows with filtering:
@@ -0,0 +1,77 @@
\subsection{Key Value Store}
\label{sec:key-value-store}
The rise of the internet has shown that there is the need for a system that can more quickly retrieve data than the older implementations using blocks, files and objects.
The goal is to be able to access a chunk of data that does not need to be parsed (unlike objects), but can be of various sizes (unlike blocks)
and needs no system-supported names (like file systems).
The solution to this problem is called a \textit{Key Value Store} (KVS).
Most \acrshort{sql} databases follow the \acrshort{acid} concept to maintain consitency, etc.
The \acrshort{acid} concept gives very strong guarantees, thus the work is done by the database engine as opposed to the application.
However, it is expensive, both in throughput and latency and does not scale well.
Key-Value stores get rid of EVERYTHING.
They are schema-less, \acrshort{nosql}, no \acrshort{acid}, (typically) \acrshort{base} based stores.
The most well known examples of \acrshort{nosql} DBs are \texttt{Redis} and \texttt{MongoDB},
with \texttt{Redis} being a true Key-Value Store (however usually referred to as a Key-Value Cache).
\subsubsection{Architecture}
\begin{itemize}
\item Data is stored as a key-value pair. The key is used to locate and retrieve the data. The value is a binary object of arbitrary size
\item The data is organized as a distributed hash table. We hash the key to get the location for the value
\item KV pairs stored in several places for availability
\item Access is \gls{quorum}-based for consistency
\item Typically eventual consistency
\item The physical storage uses already reserved buckets of different sizes and objects are located in the corresponding buckets.
\item This can be run in main memory for very fast access, with larger blobs stored in storage.
\end{itemize}
\subsubsection{Advantages and Disadvantages}
\begin{multicols}{2}
\bi{Advantages}
\begin{itemize}
\item Very fast lookups (due to hashing)
\item Easy to scale to many machines (simply add more copies / machines). This is great for the cloud's elasticity
\item Can be implemented in main memory of machines (giving even faster lookups)
\item Useful in many applications (looking up user profiles, retrieving user's web pages and info)
\item Scalable and easy to get going (no schema needed)
\end{itemize}
\bi{Disadvantages}
\begin{itemize}
\item No easy support for queries beyond simple key requests
\item this means that there are no joins, no ranges, no queries on attributes, etc (because there are none)
\item Depending on implementation, data can be inconsistent
\item Maintaining consistency is up to the application
\item Used in large scale deployments (worldwide), so keeping data in sync can be challenging
\end{itemize}
\end{multicols}
As mentioned above, one major drawback of \acrshort{nosql} DBs is that they move the complexity to the application.
This means that some operations are very costly to implement (range queries, joins, etc), as they require reading all data from the DB.
\subsubsection{Uses of KVS}
As a result of the above disadvantages, KVS are typically used as a cache or specialized system and not as a replacement for \acrshort{sql} databases.
They are often used as a main memory cache to avoid having to access the cloud storage, resulting in higher throughput and lower latency.
This is especially useful for commonly run queries, such as loading all videos of a commonly accessed YouTube Channel.
In that case especially it is easy to invalidate the cache line and updating it, as updates are very rare and they can trigger a cache invalidation for that channel.
\subsubsection{Distributed KVS}
How do we distribute a KVS across multiple systems?
A simple strategy would be to assign data to machines using modulo $n$ for $n$ machines on the hash.
In theory that is not a bad idea, but what if we remove one machine? Or if we add one? Then we have to move ALL of the data.
If one machine fails, in the worst case, all data could possibly need to be re-hashed, possibly moving ALL of the data to different machines.
A better solution is to use horizontal partitioning of the data using hashing.
Each machine deals with the data points in the clockwise direction before the next machine.
In other words, each machine deals with the data in a certain range of hashes, the next machine deals with the subsequent ones, etc.
Thus, on fail, or exit in any other way, only the machine after the failed / exited machine needs to modify the data.
When adding nodes, the next machine hands some of the responsibilities over to the newly inserted machine.
To account for possible failure of machines, we need to keep multiple copies over multiple machines (ahead in counter-clockwise orientation)
to prevent data loss.
@@ -0,0 +1,10 @@
\subsection{Cloud-Native Databases}
Many of the traditional database engines may run into overhead due to heavy I/O traffic, especially when mirroring.
As a result, many companies have improved implementations of SQL databases to make them suitable to cloud infrastructure.
Some of the improvements include caching. Micro-partitions in the Snowflake system is a system to facilitate query processing.
Each one of these partitions has sizes between 50 and 500 megabytes, and has metadata describing what is inside, which can also be read without reading the entire partition.
Furthermore, Amazon S3, the storage platform, does not support in-place updates, files are replaced in their entirety.
This means that old data can easily be recovered.
@@ -0,0 +1,10 @@
\subsection{The Future}
``The IT industry is, above all, an industry''. This is very much true and trends and developments are driven by demand and market.
For hardware, the investment is very high for new developments and only pay off at large sale volumes.
Hardware moves slowly, software even slower.
Furthermore, the number of foundries has gone down significantly since 2002 (130nm architecture),
where today, there are only three bleeding edge foundries left, of which one has over 50\% market share in bleeding edge semiconductor manufacturing, TSMC.
Samsung and Intel both have lost out on major deals due to a number of issues (Nvidia Ampere was the last major GPU series manufactured by Samsung).
CPUs are low latency (very fast), but low throughput in terms of parallelism, whereas GPUs are the exact opposite.
+3
View File
@@ -6,5 +6,8 @@
\subsection{Cloud systems} \subsection{Cloud systems}
\input{parts/06_data/01_cloud-systems/00_intro.tex} \input{parts/06_data/01_cloud-systems/00_intro.tex}
\input{parts/06_data/01_cloud-systems/01_key-value-store.tex}
\input{parts/06_data/01_cloud-systems/02_cloud-native-databases.tex}
\input{parts/06_data/01_cloud-systems/03_future.tex}
% \input{parts/06_data/01_cloud-systems/} % \input{parts/06_data/01_cloud-systems/}
% \input{parts/06_data/} % \input{parts/06_data/}