Різноманітя баз даних (додаток до доповіді)
TRANSCRIPT
![Page 1: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/1.jpg)
1
Різноманіття сучасних баз даних
Як зробити правильний вибір при проектуванні?
Підготувала Томахіна Ольга, до KIT.Share Knowledge Vol.7, 13.02.2015
![Page 2: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/2.jpg)
2
Аспекти до розгляду
1. Історія2. Концепти для згадки3. Класифікації СКБД4. Задачі, що вирішуються різними БД5. NoSQL бази даних6. Моделювання схем баз даних7. Розповсюдженість8. Огляд представників баз даних9. Використання в світі10. Інше
![Page 3: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/3.jpg)
3
Зрілість моделей даних• Більшість NOSQL: ~6 років (паралельно
потужному розвитку web)• Реляційні: 42 років• Графова теорія: 276 років
NOSQL RDBMS Graph Stores
1. Історія
![Page 4: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/4.jpg)
4
Леонард Ейлер
• Винахідник графової теорії (1736)
• Швейцарский математик
• The original hipster
1. Історія
![Page 5: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/5.jpg)
5
Эдгар Франк Кодд
• Винахідник реляційної теорії баз даних (1970) в IBM
• Британський математик
• Отримав премію Тьюринга у 1981
1. Історія
![Page 6: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/6.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/7.jpg)
7
Розвиток інформаційних потоків в Інтернет(або чому швидко розвинулись NoSQL)
Зв’я
зніс
ть ін
фор
мац
ії
Text Documents
Hypertext
Feeds
Blogs
Wikis
UGC
Tagging
RDFa
Social networks
1. Історія
![Page 8: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/8.jpg)
8
Концепти для згадки:Логічні моделі баз даних
• Ієрархічна модель• Мережева модель• Реляційна модель• Модель сутність-зв'язок• Покращена модель сутність-зв'язок• Об'єктна модель• Модель документу• Модель Сутність-атрибут-значення• Схема «зірка»
2. Концепти для згадки
![Page 9: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/9.jpg)
9
Концепти для згадки:Фізичні моделі баз даних
• Плоский файл (на диску чи в пам’яті)• Індексний файл (на диску чи в пам’яті)Чому про це потрібно пам’ятати? Тому що яка б сучасна СКБД не була, все одно всі дані зберігаються у фізичній пам’яті у вигляді файлу і час-від-часу це також потрібно враховувати.
• Асоціативна модель• Багатовимірна модель• Модель масиву• Багатозначна модель• Семантична модель• Бази даних XML
2. Концепти для згадки
Інші моделі баз даних
![Page 10: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/10.jpg)
10
Концепти для згадки:Види графів
2. Концепти для згадки
![Page 11: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/11.jpg)
11
Концепти для згадки:Нормалізація
Нормалізація - покроковий процес розбиття одного відношення (на практиці: таблиці) відповідно до алгоритму нормалізації на декілька відношень на базі функціональних залежностей.
2. Концепти для згадки
![Page 12: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/12.jpg)
12
Концепти для згадки:Транзакції, ACID, Аномалії, Ізоляція
ACID - це набір властивостей, що гарантують надійну роботу транзакцій бази даних: атомарність, узгодженість, ізольованість, довговічність (Atomicity, Consistency, Isolation, Durability)Аномалії в БД:• Фантоми• Втрачені зміни• Брудне читання• Неповторюване читання• Тупік, дедлокРівні ізоляцій транзакцій: • Serializable • Repeatable read• Read committed• Read uncommitted
2. Концепти для згадки
![Page 13: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/13.jpg)
13
Концепти для згадки:CAP теорема
• CAP теорема (також відома як теорема Боювера) – це евристичне твердження про те, що в будь-якій реалізації розподілених обчислень можна забезпечити не більше двох з трьох властивостей:– Узгодженість даних (consistency) – всі вузли бачать
однакові дані– Доступність (availability) – можливість серверу
відповісти на запит– Стійкість к розділенню (partition tolerance) – можливість
системи працювати в разі якщо її частина втрачена або непрацює
2. Концепти для згадки
![Page 14: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/14.jpg)
14
Класифікаціїсистем керування базами даних
• Ієрархічні/Мережеві/Реляційні СКБД/Об’єктно-орієнтовані• BigData databases• NoSQL СКБД (document-oriented, key-value, column,…)• Повнотекстові бази даних• Бази знань• OLTP/OLAP/Бази реального часу
• Настільні/Серверні/Розподілені/Хмарні бази даних/Онлайн бази даних(в пам’яті)
• Державні/приватні/публічніКласифікацію наведено за різними ознаками, на початок 2015 року не існує єдиної системи класифікації БД чи СКБД
3. Класифікації СКБД
![Page 15: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/15.jpg)
15
Графік застосування БД до розмірів інформації та складності
Мас
шта
бова
ніст
ь р
озм
іру
Масштабованість складності
Реляційні БД
Сховища Ключ-значення (Key-Value)Масштабовані розподілені сховища (Column Family, Bigtable)
Документо-орієнтовані БД (document)
Графові БД (Graph DB)
4. Задачі, що вирішуються різними БД
(більйони вузлів та зв’язків)
![Page 16: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/16.jpg)
16
Column Family
GraphDocument
Key-Value
NoSQL бази даних в іконках
5. NoSQL бази даних
![Page 17: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/17.jpg)
17
Коротко про NoSQL
• Не реляційні• Not Only SQL – не тільки SQL• В більшості випадків - з відкритим вихідним
кодом open-source• Часто «cluster-friendly», з механізмами
реплікації та розподілення• З відсутньою схемою даних (schema less)• З’явились в 21 сторіччі у світі Web
5. NoSQL бази даних
![Page 18: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/18.jpg)
18
Бази даних ключ-значення (Key-value)
• найпростішим сховищем даних, що використовують ключ для доступу до значення
• база даних:– використовуються для зберігання зображень,
створення спеціалізованих файлових систем, в якості кешу для об'єктів, а також в системах, спроектованих з орієнтацією на масштабованість
– є індексом сама по собі• Приклади таких сховищ: Berkeley DB,
MemcacheDB, Redis, Riak, Amazon DynamoDB
5. NoSQL бази даних
![Page 19: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/19.jpg)
19
Бази даних колонок (column)
• дані зберігаються у вигляді розрідженої матриці, рядки і стовпці якої використовуються як ключі
• база даних:– використовуються для веб-індексування та для
задач, пов'язаних з великими даними, зі зниженими вимогами до узгодженості даних
– є індексом сама по собі• Прикладами СКБД даного типу є :. Apache HBase,
Apache Cassandra, Apache Accumulo, Hypertable5. NoSQL бази даних
![Page 20: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/20.jpg)
20
Документо-орієнтовані бази даних
• для зберігання ієрархічних структур даних.• знаходять застосування в системах
управління вмістом, видавничій справі, документальному пошуку і т. п.
• Приклади СУБД даного типу - CouchDB, Couchbase, MarkLogic, MongoDB, Berkeley DB XML база даних
5. NoSQL бази даних
![Page 21: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/21.jpg)
21
Графові бази даних
• Граф – абстрактне представлення множини об’єктів, де деякі пари пов’язані між собою. Граф складається з– Вершин (Vertex, Node)– Зв’язків (Edge, Arc, Relationship)
• Графова база даних:– База даних з явною графовою структурою– Кожен вузол знає про всі його зв’язки з іншими вузлами– При збільшенні кількості вузлів ціна локального кроку
(чи переміщення муж вузлами) залишається однаковою– Є індекси для пошуку
5. NoSQL бази даних
![Page 22: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/22.jpg)
22
власне
вл
асне
Об
роб
ка
граф
у
Збереження графу
опосередкова
но
Огляд графових баз даних
5. NoSQL бази даних
![Page 23: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/23.jpg)
23
МОДЕЛЮВАННЯ СХЕМ ДАНИХДля різних типів баз даних
6. Моделювання схем бази даних
![Page 24: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/24.jpg)
24
Моделювання: Реляційні БД до Графових
Оптимізація для агрегації
Оптимізація для зв’язків
6. Моделювання схем бази даних
![Page 25: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/25.jpg)
25
Моделювання: Сховища key-value до графових
Оптимізація для простого пошуку
Оптимізація для пошуку по зв’язкам
6. Моделювання схем бази даних
![Page 26: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/26.jpg)
26
Моделювання: Документо-орієнтовані БД до графових БД
Оптимізація дерев даних
Оптимізація для перегляду лісу, дерев, гілок, листків
6. Моделювання схем бази даних
![Page 27: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/27.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/28.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/29.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/30.jpg)
30
РозповсюджністьDB-Engines Ranking
http://db-engines.com/en/ranking
7. Розповсюдженість
![Page 31: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/31.jpg)
31
Ranking за 2 роки
7. Розповсюдженість
![Page 32: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/32.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/33.jpg)
33
Короткий огляд SQLite• Компактна реляційна БД, що вбудовується
– Використовується в Android та інших програмах як компонент цих програм (не є окремим сервісом, до якого звертаються)
– Дуже розповсюджена СКБД, підтримується майже всіма мовами та платформами «з коробки», в т.ч. HTML5
• Повна підтримка ACID (atomicity, consistency, isolation, durability)• Максимальний розмір БД – 32 ТБ, BLOB поля - 1 Гб• Максимально таблиць в з’єднані - 64 • Невеликі вимоги (Small footprint)
• Малий розмір коду: менше ніж 350KB повністю налаштований, і менш 200KB з опущеними додатковими функціями
• Повна база даних зберігається в одному крос-платформовому файлі на диску
• Реалізує більшу частину стандарту SQL92• Автономність: немає зовнішніх залежностей• Крос-платформовість• Розроблена на ANSI С, вихідні коди перебувають в суспільному надбанні• sqlite.org
8. Огляд представників баз даних
![Page 34: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/34.jpg)
34
Короткий огляд MongoDB• Документо-орієнтоване сховище (проста та потужна JSON - подібна схема даних)• Досить гнучка мова для формування запитів• Динамічні запити• Підтримка індексів• Профілювання запитів• Швидкі оновлення «на місці»• Відсутність JOIN• Інформація представляється у вигляді JSON документу, а мова програмування -
Javascript• Ефективне зберігання двійкових даних великих обсягів, наприклад, фото та відео• Журналювання операцій, що модифікують дані в БД• Підтримка відмовостійкості і масштабованості: асинхронна реплікація, набір
реплік і шардінг• Може працювати відповідно до парадигми MapReduce• В лютому 2015 досягла рівня 4ї найбільш популярної СКБД
8. Огляд представників баз даних
![Page 35: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/35.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/36.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/37.jpg)
37
Які найбільші сервіси які БД використовують
Сервіс Бази данихTwitter memcached
MySQLCassandraHBase
Wikipedia MySQL Youtube BigTable — зберігання зображень
MySQL — використовується як сховище даних, версія 5.1.52 з InnoDB
Google MySQL дописанаInstagram PostgreSQL — основне сховище даних
Redis — додаткове сховище данихMemcached — кешуванняSolr — гео-пошук
9. Використання в світі
![Page 38: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/38.jpg)
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: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/39.jpg)
39
Додаткова інформація
10. Інше
![Page 40: Різноманітя баз даних (додаток до доповіді)](https://reader036.vdocuments.net/reader036/viewer/2022062304/55cb45ebbb61eb1b3b8b45bc/html5/thumbnails/40.jpg)
40
Інші типи баз даних та суміжні поняття
Що не ввійшло в рамки даної доповіді, або не було достатньо деталізовано, все ж близьке за змістом і рекомендоване для ознайомлення• Cloud databases• OLAP- On Line Analytical Processing• OLTP - On Line Analytical • MapReduce — програмна модель та програмний каркас, що її реалізує, розроблені
компанією Google для проведення розподіленої паралельної обробки великих масивів даних з використанням кластерів звичайних недорогих комп'ютерів. Програма MapReduce складається із функції Map(), яка обробляє пари ключ/значення і генерує набір проміжних пар ключ/значення, і функції Reduce(), яка зводить докупи всі проміжні значення пов'язані з одним і тим же проміжним ключем
• Бази даних в пірінгових мережах• Партиціювання (partitioning)• Реплікація (replication)• Шардинг (Sharding) вертикальний та горизонтальний• Big data• та багато іншого
10. Інше