const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
toString().padStart(width) : cell.padEnd(width); }).join(''))).join
}; const proportion = (max, val) => Math.round(val * 100 / max); co
calcProportion = table => { table.sort((row1, row2) => row2[DENSITY
row1[DENSITY_COL]); const maxDensity = table[0][DENSITY_COL]; table
forEach(row => { row.push(proportion(maxDensity, row[DENSITY_COL]))
return table; }; const getDataset = file => { const lines = fs.read
FileSync(file, 'utf8').toString().split('n'); lines.shift(); lines
return lines.map(line => line.split(',')); }; const main = compose
(getDataset, calcProportion, renderTable); const fs = require('fs'
compose = (...funcs) => x => funcs.reduce((x, fn) => fn(x), x); con
DENSITY_COL = 3; const renderTable = table => { const cellWidth = [
8, 8, 18, 6]; return table.map(row => (row.map((cell, i) => { const
= cellWidth[i]; return i ? cell.toString().padStart(width) : cell.p
(width); }).join(''))).join('n'); }; const proportion = (max, val)
Базы данных в 2020
(введение, история, состояние)
Timur Shemsedinov
github.com/HowProgrammingWorks
github.com/tshemsedinov
Chief Technology Architect at Metarhia
Lecturer at Kiev Polytechnic Institute
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Классификация
Навигационные (navigational)
Реляционные (relative, RDBMS)
SQL (structured query language)
Object-oriented databases (объектные)
ORM (Object-Relational Mapping)
NoSQL — СУБД нетрадиционной ориентации
Hybrid
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Понятия
БД, СУБД,
Таблица, Коллекция,
Запись, Поле, Колонка, Тип, Домен,
Ключ, Внешний ключ, Первичный ключ,
Индекс, Триггер,
Ограничения целостности,
Транзакция, Журналирование
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Классификация
Persistent — постоянное надежное хранение
In-memory — в оперативной памяти
Distributed — распределенные
Embedded — встраиваемые
Graph — графовые
Key-value — ключ-значение
Column — колоночные СУБД
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Языки
DDL — Data Definition Language
CRATE, ALTER, DROP
DML — Data Manipulation Language
INSERT, UPDATE, DELETE (CRUD)
DQL — Data Query Language (SELECT)
DCL — Data Control Language (GRANT)
TCL — Transaction Control Language (COMMIT)
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Масштабирование
Репликация — синхронизация копий.
Миграция — переход к новой структуре БД.
Партиционирование (секционирование) —
разделение БД на части с физически разным
хранением.
Шардинг — разделение БД между серверами.
Мультимастер — каждый сервер изменяет.
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
ACID
Atomicity (атомарность) — целостность
транзакций (последовательности изменений).
Consistency (консистентность) —
согласованность и непротиворечивость.
Isolation (изолированность) — независимое
исполнение транзакций.
Durability (стойкость) — надежность при сбоях.
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Типы систем
OLAP — (Online analytical processing)
агрегированные данные для задач аналитики.
OLTP — Online Transaction Processing
обработка транзакций в реальном времени.
const fs = require('fs'); const compose = (...funcs) => x => funcs.
reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab
table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma
=> (row.map((cell, i) => { const width = cellWidth[i]; return i ? c
Большие данные
Big data (большие данные): объем, прирост,
многообразие.
Data warehouse (хранилища) — данные только
для чтения, не транзакционные, для анализа.
Data lake (Озеро данных) — хранилище
большого объема неструктурированных
данных.

Базы данных в 2020

  • 1.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c toString().padStart(width) : cell.padEnd(width); }).join(''))).join }; const proportion = (max, val) => Math.round(val * 100 / max); co calcProportion = table => { table.sort((row1, row2) => row2[DENSITY row1[DENSITY_COL]); const maxDensity = table[0][DENSITY_COL]; table forEach(row => { row.push(proportion(maxDensity, row[DENSITY_COL])) return table; }; const getDataset = file => { const lines = fs.read FileSync(file, 'utf8').toString().split('n'); lines.shift(); lines return lines.map(line => line.split(',')); }; const main = compose (getDataset, calcProportion, renderTable); const fs = require('fs' compose = (...funcs) => x => funcs.reduce((x, fn) => fn(x), x); con DENSITY_COL = 3; const renderTable = table => { const cellWidth = [ 8, 8, 18, 6]; return table.map(row => (row.map((cell, i) => { const = cellWidth[i]; return i ? cell.toString().padStart(width) : cell.p (width); }).join(''))).join('n'); }; const proportion = (max, val) Базы данных в 2020 (введение, история, состояние) Timur Shemsedinov github.com/HowProgrammingWorks github.com/tshemsedinov Chief Technology Architect at Metarhia Lecturer at Kiev Polytechnic Institute
  • 2.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Классификация Навигационные (navigational) Реляционные (relative, RDBMS) SQL (structured query language) Object-oriented databases (объектные) ORM (Object-Relational Mapping) NoSQL — СУБД нетрадиционной ориентации Hybrid
  • 3.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Понятия БД, СУБД, Таблица, Коллекция, Запись, Поле, Колонка, Тип, Домен, Ключ, Внешний ключ, Первичный ключ, Индекс, Триггер, Ограничения целостности, Транзакция, Журналирование
  • 4.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Классификация Persistent — постоянное надежное хранение In-memory — в оперативной памяти Distributed — распределенные Embedded — встраиваемые Graph — графовые Key-value — ключ-значение Column — колоночные СУБД
  • 5.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Языки DDL — Data Definition Language CRATE, ALTER, DROP DML — Data Manipulation Language INSERT, UPDATE, DELETE (CRUD) DQL — Data Query Language (SELECT) DCL — Data Control Language (GRANT) TCL — Transaction Control Language (COMMIT)
  • 6.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Масштабирование Репликация — синхронизация копий. Миграция — переход к новой структуре БД. Партиционирование (секционирование) — разделение БД на части с физически разным хранением. Шардинг — разделение БД между серверами. Мультимастер — каждый сервер изменяет.
  • 7.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c ACID Atomicity (атомарность) — целостность транзакций (последовательности изменений). Consistency (консистентность) — согласованность и непротиворечивость. Isolation (изолированность) — независимое исполнение транзакций. Durability (стойкость) — надежность при сбоях.
  • 8.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Типы систем OLAP — (Online analytical processing) агрегированные данные для задач аналитики. OLTP — Online Transaction Processing обработка транзакций в реальном времени.
  • 9.
    const fs =require('fs'); const compose = (...funcs) => x => funcs. reduce((x, fn) => fn(x), x); const DENSITY_COL = 3; const renderTab table => { const cellWidth = [18, 10, 8, 8, 18, 6]; return table.ma => (row.map((cell, i) => { const width = cellWidth[i]; return i ? c Большие данные Big data (большие данные): объем, прирост, многообразие. Data warehouse (хранилища) — данные только для чтения, не транзакционные, для анализа. Data lake (Озеро данных) — хранилище большого объема неструктурированных данных.