database fundamental

112
Database Fundamental @dylanninin

Upload: gong-haibing

Post on 14-Apr-2017

212 views

Category:

Presentations & Public Speaking


0 download

TRANSCRIPT

Database Fundamental

@dylanninin

What is a Database?

an organized collection of data.

Database

What is a DBMS?

a software application.

DataBase Management System

History

Let’s talk about RDBMS

Database Models

Relational Model

Relational Model

Relational Relationships

SQL

• SQL: Structure Query Language

• The Language for RDBMS

• Define/Manipulate/Control data

Relational Algebra

• The Set-theoretic formulation of RDBMS

• The Theory/Mathematics of SQL

Relational Algebra

SQL

Twitter as an examplewith SQLite

DDL: Data Definition Language

DDL: CREATE

DDL: ALTER

DDL: TRUNCATE

• deletes all data from a table in a very fast way • deletes the data inside the table and not the table itself • usually implies a subsequent COMMIT operation, i.e. • cannot be rolled back

DDL: DROP

The Data Types

DDL: Data Manipulation Language

DML: SELECT

expr

DML: SELECT join

DML: SELECT Phases

DML: INSERT

DML: UPDATE

DML: DELETE

DML: MERGE

• is used to combine the data of multiple tables • combines the INSERT and UPDATE elements • is defined in the SQL:2003 standard • some databases provided similar functionality via different

syntax, sometimes called "upsert"

TCL: Transaction Control Language

TCL: Transaction

TCL: COMMIT

TCL: ROLLBACK

TCL: SAVEPOINT

DCL: Data Control Language

DCL: Control

• The operations for which privileges may be granted to or revoked from a user or role apply to both the DDL/DML

• may include CONNECT, SELECT, INSERT, UPDATE, DELETE, EXECUTE, and USAGE

• SQLite does not have any DCL commands as it does not have usernames or logins. Instead, SQLite depends on file system permissions to define who can open and access a database

DCL: GRANT

by Oracle

DCL: REVOKE

by Oracle

Functions

• definition: function_name(parameter) —> output

• usage: SELECT function_name(parameter);

Aggregrations

avg(X) returns the average value of all non-NULL X within a group

count(X) returns a count of the number of times that X is not NULL in a group

max(X) returns the maximum value of all values in the group

min(X) returns the minimum non-NULL value of all values in the group

sum(X) return sum of all non-NULL values in the group

Constraints

Constraints: Foreign Key

Constraints: Indexed Column

Indexing

Triggers

Views

Modeling

Entity Relation Diagram

ERD to Table

Normalization

Advanced Topics

Transaction

A balance: $ 1000

B balance: $ 1000

Transfer 100$ from A to B

Bank withdraw/deposit

Transactions guaranteed by ACID

ACID Properties

by locking + logging

by runtime checking

by locking

by logging + recovery

ACID Implements

Concurrency

A balance: $ 1000

B balance: $ 1000

1) A transfer $100 to B 2) C transfer $1 000 to A

C balance: $ 1 000 000

Transaction states

Two Phase Locking

Two Phase Locking

Dead Lock

Optimistic Concurrency Control

Multi Version Concurrency Control

Isolation Level

Data Structures + Algorithms

Common Data Structure Operations

Search: SELECT

Search: LIKE

Sort: ORDER BY

Algorithms: B+ Tree

B+ Tree

B+ Tree Example

B+ Tree Index Example

B+ Tree in Database

DBMS

a software application.

DataBase Management System

What are the “Kernel” of any DBMS?

“Kernel”

Client Manager

Query Manager

Data Manager

Cache Manager

Transaction Manager

Log Manager

Simplified ARIES logs

Simplified Log Writing Process

Tuning

SQL Tuning Hierarchy

SQL Phases

Scaling

Vertical/Horizontal Scaling

Scaling Out Cube

Partitioning

Master Slave

Replica Set

Distributed

CAP

Paxos Protocol

Raft Protocol

Reference

• https://en.wikipedia.org/wiki/SQL • https://en.wikipedia.org/wiki/Database • https://en.wikipedia.org/wiki/ACID • https://www.sqlite.org/lang.html • https://en.wikipedia.org/wiki/Join_(SQL) • http://coding-geek.com/how-databases-work/ • http://blog.dancrisan.com/a-tiny-intro-to-database-systems • http://berb.github.io/diploma-thesis/original/060_index.html • https://en.wikipedia.org/wiki/CAP_theorem • https://github.com/numetriclabz/awesome-db • https://github.com/rxin/db-readings • http://bigocheatsheet.com/ • https://en.wikipedia.org/wiki/BNF • https://dylanninin.com/blog/2013/10/26/oracle_dba.html