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

40
Різноманіття сучасних баз даних Як зробити правильний вибір при проектуванні? Підготувала Томахіна Ольга, до KIT.Share Knowledge Vol.7, 13.02.2015 1

Upload: -

Post on 12-Aug-2015

85 views

Category:

Technology


7 download

TRANSCRIPT

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

1

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

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

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

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

2

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

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

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

3

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

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

NOSQL RDBMS Graph Stores

1. Історія

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

4

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

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

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

• The original hipster

1. Історія

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

5

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

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

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

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

1. Історія

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

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. Історія

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

7

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

Зв’я

зніс

ть ін

фор

мац

ії

Text Documents

Hypertext

Feeds

Blogs

Wikis

UGC

Tagging

RDFa

Social networks

1. Історія

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

8

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

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

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

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

9

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

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

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

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

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

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

10

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

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

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

11

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

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

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

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

12

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

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

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

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

13

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

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

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

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

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

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

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

14

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

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

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

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

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

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

15

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

Мас

шта

бова

ніст

ь р

озм

іру

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

Реляційні БД

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

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

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

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

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

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

16

Column Family

GraphDocument

Key-Value

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

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

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

17

Коротко про NoSQL

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

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

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

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

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

18

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

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

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

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

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

MemcacheDB, Redis, Riak, Amazon DynamoDB

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

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

19

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

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

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

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

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

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

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

20

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

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

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

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

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

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

21

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

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

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

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

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

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

22

власне

вл

асне

Об

роб

ка

граф

у

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

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

но

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

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

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

23

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

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

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

24

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

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

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

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

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

25

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

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

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

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

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

26

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

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

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

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

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

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. Моделювання схем бази даних

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

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. Моделювання схем бази даних

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

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. Моделювання схем бази даних

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

30

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

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

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

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

31

Ranking за 2 роки

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

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

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. Огляд представників баз даних

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

33

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

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

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

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

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

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

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

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

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

34

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

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

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

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

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

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. Огляд представників баз даних

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

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. Використання в світі

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

37

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

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

MySQLCassandraHBase

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

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

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

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

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

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

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. Інше

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

39

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

10. Інше

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

40

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

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

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

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

10. Інше