Relational and Non-relational Databases

From Gridkaschool
Revision as of 17:12, 14 July 2015 by Mlassnig (talk | contribs) (Created page with "= Overview = Author: Mario Lassnig, CERN PH-ADP-CO, [mailto:mario.lassnig@cern.ch] In this workshop, the students will learn how to use relational and non-relational database...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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