Різноманітя баз даних (додаток до доповіді)

Preview:

Citation preview

1

Різноманіття сучасних баз даних

Як зробити правильний вибір при проектуванні?

Підготувала Томахіна Ольга, до KIT.Share Knowledge Vol.7, 13.02.2015

2

Аспекти до розгляду

1. Історія2. Концепти для згадки3. Класифікації СКБД4. Задачі, що вирішуються різними БД5. NoSQL бази даних6. Моделювання схем баз даних7. Розповсюдженість8. Огляд представників баз даних9. Використання в світі10. Інше

3

Зрілість моделей даних• Більшість NOSQL: ~6 років (паралельно

потужному розвитку web)• Реляційні: 42 років• Графова теорія: 276 років

NOSQL RDBMS Graph Stores

1. Історія

4

Леонард Ейлер

• Винахідник графової теорії (1736)

• Швейцарский математик

• The original hipster

1. Історія

5

Эдгар Франк Кодд

• Винахідник реляційної теорії баз даних (1970) в IBM

• Британський математик

• Отримав премію Тьюринга у 1981

1. Історія

6

NoSQL розробники• Джек Ребіт в 2006 розпочав розробку JSR 170 та 283• Кабінет Токіо розробили QDBM (Mikio Hirabayashi) - 2006• Дослідницький документ щодо Amazon Dynamo - 2007.• MongoDB розпочато розробку в 2007 як частину коду в відкритим кодом в в стеку хмарних

обчислень та перший її реліз в 2009.• Facebooks відкриває вихідні коди Cassandra project в 2008• Проект Voldemort - розподілена БД key-value, що використовується LinkedIN (2008).• Dynomite - клон Dynamo написаний на Erlang.• Terrastore - масштабоване еластичне сховище документів – розпочато в 2009• Redis - журнальоване сховище ключ-значення - 2009• Riak - інша dynamo-inspired база даних - 2009.• HBase - клон BigTable для проекту Hadoop в той час як Hypertable - інший тип баз даних

типу BigTable - 2009.• Neo4j - графова база даних - 2007• Vertexdb - графова база даних - 2009• Ерік Еванс (Rackspace), розробника проекту Cassandra, запропонував термін “NoSQL”, що

використовується в сенсі “Not only SQL” для опису нового покоління проектів та продуктів

1. Історія

7

Розвиток інформаційних потоків в Інтернет(або чому швидко розвинулись NoSQL)

Зв’я

зніс

ть ін

фор

мац

ії

Text Documents

Hypertext

Feeds

Blogs

Wikis

UGC

Tagging

RDFa

Social networks

1. Історія

8

Концепти для згадки:Логічні моделі баз даних

• Ієрархічна модель• Мережева модель• Реляційна модель• Модель сутність-зв'язок• Покращена модель сутність-зв'язок• Об'єктна модель• Модель документу• Модель Сутність-атрибут-значення• Схема «зірка»

2. Концепти для згадки

9

Концепти для згадки:Фізичні моделі баз даних

• Плоский файл (на диску чи в пам’яті)• Індексний файл (на диску чи в пам’яті)Чому про це потрібно пам’ятати? Тому що яка б сучасна СКБД не була, все одно всі дані зберігаються у фізичній пам’яті у вигляді файлу і час-від-часу це також потрібно враховувати.

• Асоціативна модель• Багатовимірна модель• Модель масиву• Багатозначна модель• Семантична модель• Бази даних XML

2. Концепти для згадки

Інші моделі баз даних

10

Концепти для згадки:Види графів

2. Концепти для згадки

11

Концепти для згадки:Нормалізація

Нормалізація - покроковий процес розбиття одного відношення (на практиці: таблиці) відповідно до алгоритму нормалізації на декілька відношень на базі функціональних залежностей.

2. Концепти для згадки

12

Концепти для згадки:Транзакції, ACID, Аномалії, Ізоляція

ACID - це набір властивостей, що гарантують надійну роботу транзакцій бази даних: атомарність, узгодженість, ізольованість, довговічність (Atomicity, Consistency, Isolation, Durability)Аномалії в БД:• Фантоми• Втрачені зміни• Брудне читання• Неповторюване читання• Тупік, дедлокРівні ізоляцій транзакцій: • Serializable • Repeatable read• Read committed• Read uncommitted

2. Концепти для згадки

13

Концепти для згадки:CAP теорема

• CAP теорема (також відома як теорема Боювера) – це евристичне твердження про те, що в будь-якій реалізації розподілених обчислень можна забезпечити не більше двох з трьох властивостей:– Узгодженість даних (consistency) – всі вузли бачать

однакові дані– Доступність (availability) – можливість серверу

відповісти на запит– Стійкість к розділенню (partition tolerance) – можливість

системи працювати в разі якщо її частина втрачена або непрацює

2. Концепти для згадки

14

Класифікаціїсистем керування базами даних

• Ієрархічні/Мережеві/Реляційні СКБД/Об’єктно-орієнтовані• BigData databases• NoSQL СКБД (document-oriented, key-value, column,…)• Повнотекстові бази даних• Бази знань• OLTP/OLAP/Бази реального часу

• Настільні/Серверні/Розподілені/Хмарні бази даних/Онлайн бази даних(в пам’яті)

• Державні/приватні/публічніКласифікацію наведено за різними ознаками, на початок 2015 року не існує єдиної системи класифікації БД чи СКБД

3. Класифікації СКБД

15

Графік застосування БД до розмірів інформації та складності

Мас

шта

бова

ніст

ь р

озм

іру

Масштабованість складності

Реляційні БД

Сховища Ключ-значення (Key-Value)Масштабовані розподілені сховища (Column Family, Bigtable)

Документо-орієнтовані БД (document)

Графові БД (Graph DB)

4. Задачі, що вирішуються різними БД

(більйони вузлів та зв’язків)

16

Column Family

GraphDocument

Key-Value

NoSQL бази даних в іконках

5. NoSQL бази даних

17

Коротко про NoSQL

• Не реляційні• Not Only SQL – не тільки SQL• В більшості випадків - з відкритим вихідним

кодом open-source• Часто «cluster-friendly», з механізмами

реплікації та розподілення• З відсутньою схемою даних (schema less)• З’явились в 21 сторіччі у світі Web

5. NoSQL бази даних

18

Бази даних ключ-значення (Key-value)

• найпростішим сховищем даних, що використовують ключ для доступу до значення

• база даних:– використовуються для зберігання зображень,

створення спеціалізованих файлових систем, в якості кешу для об'єктів, а також в системах, спроектованих з орієнтацією на масштабованість

– є індексом сама по собі• Приклади таких сховищ: Berkeley DB,

MemcacheDB, Redis, Riak, Amazon DynamoDB

5. NoSQL бази даних

19

Бази даних колонок (column)

• дані зберігаються у вигляді розрідженої матриці, рядки і стовпці якої використовуються як ключі

• база даних:– використовуються для веб-індексування та для

задач, пов'язаних з великими даними, зі зниженими вимогами до узгодженості даних

– є індексом сама по собі• Прикладами СКБД даного типу є :. Apache HBase,

Apache Cassandra, Apache Accumulo, Hypertable5. NoSQL бази даних

20

Документо-орієнтовані бази даних

• для зберігання ієрархічних структур даних.• знаходять застосування в системах

управління вмістом, видавничій справі, документальному пошуку і т. п.

• Приклади СУБД даного типу - CouchDB, Couchbase, MarkLogic, MongoDB, Berkeley DB XML база даних

5. NoSQL бази даних

21

Графові бази даних

• Граф – абстрактне представлення множини об’єктів, де деякі пари пов’язані між собою. Граф складається з– Вершин (Vertex, Node)– Зв’язків (Edge, Arc, Relationship)

• Графова база даних:– База даних з явною графовою структурою– Кожен вузол знає про всі його зв’язки з іншими вузлами– При збільшенні кількості вузлів ціна локального кроку

(чи переміщення муж вузлами) залишається однаковою– Є індекси для пошуку

5. NoSQL бази даних

22

власне

вл

асне

Об

роб

ка

граф

у

Збереження графу

опосередкова

но

Огляд графових баз даних

5. NoSQL бази даних

23

МОДЕЛЮВАННЯ СХЕМ ДАНИХДля різних типів баз даних

6. Моделювання схем бази даних

24

Моделювання: Реляційні БД до Графових

Оптимізація для агрегації

Оптимізація для зв’язків

6. Моделювання схем бази даних

25

Моделювання: Сховища key-value до графових

Оптимізація для простого пошуку

Оптимізація для пошуку по зв’язкам

6. Моделювання схем бази даних

26

Моделювання: Документо-орієнтовані БД до графових БД

Оптимізація дерев даних

Оптимізація для перегляду лісу, дерев, гілок, листків

6. Моделювання схем бази даних

27

Приклади моделювання схеми даних в реляційній та графовій БД

name

code

word_count

Language

name

code

flag_uri

Country

IS_SPOKEN_IN

as_primary

language_code

language_name

word_count

Language

country_code

country_name

flag_uri

Country

language_code

country_code

primary

LanguageCountry

6. Моделювання схем бази даних

28

Приклади моделювання схеми даних в реляційній та графовій БДname: “Canada”

languages_spoken: “[ ‘English’, ‘French’ ]”

name: “Canada”

language:“English”

language:“French”

spoken_in

spoken_in

name: “USA”

name: “France”

spoken_in

spoken_in

6. Моделювання схем бази даних

29

Приклади моделювання схеми даних в реляційній та графовій БД

name

flag_uri

language_name

number_of_words

yes_in_langauge

no_in_language

currency_code

currency_name

Country

USES_CURRENCY

name

flag_uri

Country

name

number_of_words

yes

no

Language

SPEAKS

code

name

Currency

6. Моделювання схем бази даних

30

РозповсюджністьDB-Engines Ranking

http://db-engines.com/en/ranking

7. Розповсюдженість

31

Ranking за 2 роки

7. Розповсюдженість

32

Короткий огляд Oracle• Промислова реляційна БД, з великою кількістю розширень і інтеграцій

– Одна з найрасповсюдженіших СКБД• Повна підтримка ACID (atomicity, consistency, isolation, durability)• Максимальний розмір БД – 65533 файлів (макс. Розмір файлу

визначається можливостями ОС), BLOB поля - 128 TB• Максимально таблиць в з’єднані:

– Відповідь Тома Кайта: «infinite. I've done over 300 as a test»• Суттєві вимоги до серверу • Реалізує більшу частину стандарту SQL92• Крос-платформовість• Потужні вбудовані засоби (всіх компонентів, вт.ч. оптимізації,

моніторингу)• Розроблена на С, С++• www.oracle.com

8. Огляд представників баз даних

33

Короткий огляд SQLite• Компактна реляційна БД, що вбудовується

– Використовується в Android та інших програмах як компонент цих програм (не є окремим сервісом, до якого звертаються)

– Дуже розповсюджена СКБД, підтримується майже всіма мовами та платформами «з коробки», в т.ч. HTML5

• Повна підтримка ACID (atomicity, consistency, isolation, durability)• Максимальний розмір БД – 32 ТБ, BLOB поля - 1 Гб• Максимально таблиць в з’єднані - 64 • Невеликі вимоги (Small footprint)

• Малий розмір коду: менше ніж 350KB повністю налаштований, і менш 200KB з опущеними додатковими функціями

• Повна база даних зберігається в одному крос-платформовому файлі на диску

• Реалізує більшу частину стандарту SQL92• Автономність: немає зовнішніх залежностей• Крос-платформовість• Розроблена на ANSI С, вихідні коди перебувають в суспільному надбанні• sqlite.org

8. Огляд представників баз даних

34

Короткий огляд MongoDB• Документо-орієнтоване сховище (проста та потужна JSON - подібна схема даних)• Досить гнучка мова для формування запитів• Динамічні запити• Підтримка індексів• Профілювання запитів• Швидкі оновлення «на місці»• Відсутність JOIN• Інформація представляється у вигляді JSON документу, а мова програмування -

Javascript• Ефективне зберігання двійкових даних великих обсягів, наприклад, фото та відео• Журналювання операцій, що модифікують дані в БД• Підтримка відмовостійкості і масштабованості: асинхронна реплікація, набір

реплік і шардінг• Може працювати відповідно до парадигми MapReduce• В лютому 2015 досягла рівня 4ї найбільш популярної СКБД

8. Огляд представників баз даних

35

Короткий Огляд Neo4j• Графова БД, є вибіркове індексування• Граф властивостей• Повна підтримка ACID (atomicity, consistency, isolation, durability)• Висока доступність• 32 більйон вузлів, 32 більйон зв’язків,

64 більйон властивостей на 1 інстанцією Neo4j• Високошвидкісні графові операції

• Проходить 1,000,000+ зв’язків/сек на звичайному техзабезпеченні

• Невеликі вимоги (Small footprint)• Сервер займає всього is ~65mb

• Можливість вбудови серверу• REST API

• Ведуча Open-Source графова СУБД• Розроблена компанією Neo Technologies• Розроблена на Java• www.neo4j.org

Використовується в

8. Огляд представників баз даних

36

Які найбільші сервіси які БД використовують

Сервіс Бази данихFacebook MemCached — агресивне кешування об'єктів

MySQL — використовується як сховище пар ключ-значення, без join‘івCassandra для індексування

Vkontakte memcachedMySQLВласна СКБД на C

Ebay Neo4jPrivatBank Sybase ASE, Sybase IQ, Oracle, PostgreSQLStack Overflow

SQL Server

LinkedIn Key-value store Voldemort http://en.wikipedia.org/wiki/Voldemort_(distributed_data_store)

9. Використання в світі

37

Які найбільші сервіси які БД використовують

Сервіс Бази данихTwitter memcached

MySQLCassandraHBase

Wikipedia MySQL Youtube BigTable — зберігання зображень

MySQL — використовується як сховище даних, версія 5.1.52 з InnoDB

Google MySQL дописанаInstagram PostgreSQL — основне сховище даних

Redis — додаткове сховище данихMemcached — кешуванняSolr — гео-пошук

9. Використання в світі

38

Кілька корисних посилань

• Огляд NoSQL БД: http://nosql-database.org/• PHP та NoSQL http://habrahabr.ru/post/214647

/• Рейтинг СКБД: http://db-engines.com/en/ranking• Архітектури високонавантажених систем:

http://www.insight-it.ru/highload/• Використання MySQL

http://www.mysql.com/customers/industry/?id=72• Visual Guide to NoSQL Systems http://

blog.nahurst.com/visual-guide-to-nosql-systems

10. Інше

39

Додаткова інформація

10. Інше

40

Інші типи баз даних та суміжні поняття

Що не ввійшло в рамки даної доповіді, або не було достатньо деталізовано, все ж близьке за змістом і рекомендоване для ознайомлення• Cloud databases• OLAP- On Line Analytical Processing• OLTP - On Line Analytical • MapReduce — програмна модель та програмний каркас, що її реалізує, розроблені

компанією Google для проведення розподіленої паралельної обробки великих масивів даних з використанням кластерів звичайних недорогих комп'ютерів. Програма MapReduce складається із функції Map(), яка обробляє пари ключ/значення і генерує набір проміжних пар ключ/значення, і функції Reduce(), яка зводить докупи всі проміжні значення пов'язані з одним і тим же проміжним ключем

• Бази даних в пірінгових мережах• Партиціювання (partitioning)• Реплікація (replication)• Шардинг (Sharding) вертикальний та горизонтальний• Big data• та багато іншого

10. Інше

Recommended