Relational and Non-relational Databases
From Gridkaschool
Overview
Author: Mario Lassnig, CERN PH-ADP-CO, [1]
In this workshop, the students will learn how to use relational and non-relational databases to build multi-threaded applications. The focus of the workshop is to teach efficient, safe, and fault-tolerant principles when dealing with high-volume and high-throughput database scenarios.
A basic understanding of the following things is required:
- A programming language (preferably Python or any C-like)
- Basic SQL (CREATE, DROP, SELECT, UPDATE, DELETE)
- Linux shell scripting (bash or zsh)
The course will cover the following three topics:
- When to use relational databases, and when not
- Relational primer
- Non-relational primer
- How to design the data model
- Using SQL for fun and profit
- Query plans and performance analysis
- Transactional safety in multi-threaded environments
- How to deal with large amounts of sparse metadata
- Competetive locking and selection strategies
- Building a fault-tolerant database application
- Distributed transactions across relational and non-relational databases
- SQL injection and forceful breakage
- Application-level mitigation for unexpected database issues