Нереляційні бази даних,
або NoSQL
План
● Історія
● А навіщо?
● Трохи теорії
● Типи NoSQL
● Де використати
Історія
2006 – Google BigTable
2007 – Amazon Dynamo
2008 – Facebook Cassandra
І почалось...
NoSQL?
Нереляційні бази даних
А до чого тут SQL?
NoREL – не звучить
З 2009 - розподілені бази даних
(Not only SQL)
А навіщо?
Чим погані реляційні бази даних
Чим поганий ACID
● Atomicity (Атомарність) - операції в окремій транзакції або
в...
ACID не масштабується
Майже не масштабується
Читання – додати кешування
Запис - ?????
● Вертикальне
● Горизонтальне
Вертикальне
Або купити комп “пакручє”
Але
● Або не стає грошей
● Або підсідаєш на конкретне “залізо”
Горизонтальне
Розпаралелити роботу/дані між
кількома машинами
Клієнти 0
Клієнти 1
Прод. 0Клієнти 0 Транзакції 0
Транзакції...
Two phase commit
1. Приготоватись до транзакції
Two phase commit
2. Завершити транзакцію
Two phase commit
А якщо транзакція неможлива?
Або один з серверів не доступний?
Все відміняється (Consistency)
BASE
В 1997/99 рр. Ерік Брюер (Eric Brewer)
● Basically Available – переважно/завжди
доступна
● Soft-state – гнучка структ...
BASE vs. ACID
ACID BASE
Сильна консистентність
Ізоляція
Консервативність/песимістичість
Складна еволюція
Доступність?
Слаб...
Теорема CAP
В розподіленій системі не можливо добитись
одночасного виконання наступних умов:
консистентності (C), доступно...
Теорема CAP
У 2002 році Сет Ґілберт (Seth Gilbert) та
Ненсі Лінч (Nancy Lynch) з MIT
формально/математично довели
правильн...
Типи NoSQL
● Tabular / Wide Column Store / Column Families
(Напівструктуровані)
● Key Value / Tuple Store (Ключ-Значення /...
Напівструктуровані
● Google BigTablle
● Hbase
● Cassandra
● Hypertable
BigTable
Column oriented
ID Name Age Interests
1 Homer 40 Beer, food, sleep
2 Bart play
3 Kenny 9
ID Name
1 Homer
2 Bart
3...
BigTable
Невизначена кількість колонок
Homer.simpson@gamil.com Homer Simpson 1234567890
bart@gmail.com Bart
Сім'ї колонок ...
BigTable
Послідовний запис (LogFile,Memtable)
Об'єднане читання (Merged read)
Фільтр Блума (Bloom filter)
SSTable
Періодич...
BigTable
MapReduce
Map
circle
circle
circle
square
circle
square
[circle, 3]
[square, 1]
[circle, 1]
[square, 1]
Reduce
[c...
!!!!!
Google: “півсекундна затримка зменшує
трафік на 20%”
Apache Hadoop
Ключ-Значення (Key/Value)
● Berkeley DB
● MemcacheDB
● Membase
● Redis
● Amazon SimpleDB
● MicrosoftAzure
● Amazon Dynamo
...
AmazonDynamo
AmazonDynamo
AmazonDynamo
AmazonDynamo
● Розподілені хеш-таблиці (DHT)
● Consistent hashing
● Versioning
● Vector clocks
● Quorum
● Anti-entropy bas...
Революція
● Cassandra
● Riak
● Project Voldemort
Ті хто слідує дизайну Amazon Dynamo та інші
!!!!!!
Amazon: “затримка на 1/10 секунди коштує 1%
продаж.”
Amazon: “хвилина простою коштує 30,000
долларів” (2008 р.)
Ama...
Документо-орієнтовані
Теж що і Key/Value, але...
значення зберігаються в форматі, який
система “розуміє” - JSON, XML
{
"na...
Документо-орієнтовані
● СouchDB
● MongoDB
● RavenDB
● Terrastore
Документо-орієнтовані
● Адресна/телефонна книга
● Форум
● Bug Tracking
● Списки витрат
● Звітування часу
● Списки справ (T...
Граф-орієнтовані
Граф-орієнтовані
● Neo4j
● Sones
● InfoGrid
● HyperGraphDB
● vertexdb
Граф-орієнтовані
Соціальні менежі
Маршрут
Недоліки
Нова (нестабільна) технологіяНова (нестабільна) технологія
Більша відповідальність
There is no silver bullet
Можливі варіанти
Таблиця як нескінченне дерево
Динамічне створення таблиць
Надто багато JOIN-ів
Таблиця як кеш/черга/лог
Запитання
Upcoming SlideShare
Loading in...5
×

Нереляційні бази даних NoSQL

1,328

Published on

Нереляційні бази даних NoSQL
Любомир Вовк

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,328
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Нереляційні бази даних NoSQL

  1. 1. Нереляційні бази даних, або NoSQL
  2. 2. План ● Історія ● А навіщо? ● Трохи теорії ● Типи NoSQL ● Де використати
  3. 3. Історія 2006 – Google BigTable 2007 – Amazon Dynamo 2008 – Facebook Cassandra І почалось...
  4. 4. NoSQL? Нереляційні бази даних А до чого тут SQL? NoREL – не звучить З 2009 - розподілені бази даних (Not only SQL)
  5. 5. А навіщо? Чим погані реляційні бази даних Чим поганий ACID ● Atomicity (Атомарність) - операції в окремій транзакції або виконаються всі, або жодна; ● Consistency (Консистентність) - база даних буде в узгодженому/цілісному стані до початку транзакції і після її завершення; ● Isolation (Ізоляція) - кожна операція виконується незалежно одна від одної; ● Durability (Довговічність) - зроблені зміни залишаються в системі, незалежно від зовнішніх факторів, аж до подальших змін.
  6. 6. ACID не масштабується Майже не масштабується Читання – додати кешування Запис - ????? ● Вертикальне ● Горизонтальне
  7. 7. Вертикальне Або купити комп “пакручє” Але ● Або не стає грошей ● Або підсідаєш на конкретне “залізо”
  8. 8. Горизонтальне Розпаралелити роботу/дані між кількома машинами Клієнти 0 Клієнти 1 Прод. 0Клієнти 0 Транзакції 0 Транзакції 1
  9. 9. Two phase commit 1. Приготоватись до транзакції
  10. 10. Two phase commit 2. Завершити транзакцію
  11. 11. Two phase commit А якщо транзакція неможлива? Або один з серверів не доступний? Все відміняється (Consistency)
  12. 12. BASE В 1997/99 рр. Ерік Брюер (Eric Brewer) ● Basically Available – переважно/завжди доступна ● Soft-state – гнучка структура ● Eventually consystent – випадкова консистентність, або консистентність при певних умовах
  13. 13. BASE vs. ACID ACID BASE Сильна консистентність Ізоляція Консервативність/песимістичість Складна еволюція Доступність? Слабка консистентність (дозпускається застаріння даних) Доступність перш за все Дозволяються приблизні відповіді Агресивність/оптимістичність Простіші Швидші Легша еволюція
  14. 14. Теорема CAP В розподіленій системі не можливо добитись одночасного виконання наступних умов: консистентності (C), доступності (A), стійкості до збоїв (P)
  15. 15. Теорема CAP У 2002 році Сет Ґілберт (Seth Gilbert) та Ненсі Лінч (Nancy Lynch) з MIT формально/математично довели правильність припущення Брюера. Atomic Consistency DNS!!
  16. 16. Типи NoSQL ● Tabular / Wide Column Store / Column Families (Напівструктуровані) ● Key Value / Tuple Store (Ключ-Значення / Ключ-Набір значень) ● Document Store (Документо-орієнтовані) ● Graph Databases (Граф-орієнтовані)
  17. 17. Напівструктуровані ● Google BigTablle ● Hbase ● Cassandra ● Hypertable
  18. 18. BigTable Column oriented ID Name Age Interests 1 Homer 40 Beer, food, sleep 2 Bart play 3 Kenny 9 ID Name 1 Homer 2 Bart 3 Kenny ID Age 1 40 3 9 ID Interests 1 beer 1 food 1 sleep 2 play
  19. 19. BigTable Невизначена кількість колонок Homer.simpson@gamil.com Homer Simpson 1234567890 bart@gmail.com Bart Сім'ї колонок (Column family) Клітинка (cell)– перетин рядка і стовпця Декілька версій (timestamp) Id рядка, назва колонки, timestamp
  20. 20. BigTable Послідовний запис (LogFile,Memtable) Об'єднане читання (Merged read) Фільтр Блума (Bloom filter) SSTable Періодичне ущільнення (compaction)
  21. 21. BigTable MapReduce Map circle circle circle square circle square [circle, 3] [square, 1] [circle, 1] [square, 1] Reduce [circle, 4] [square, 2]
  22. 22. !!!!! Google: “півсекундна затримка зменшує трафік на 20%” Apache Hadoop
  23. 23. Ключ-Значення (Key/Value) ● Berkeley DB ● MemcacheDB ● Membase ● Redis ● Amazon SimpleDB ● MicrosoftAzure ● Amazon Dynamo ● Cassandra ● Riak ● Project Voldemort
  24. 24. AmazonDynamo
  25. 25. AmazonDynamo
  26. 26. AmazonDynamo
  27. 27. AmazonDynamo ● Розподілені хеш-таблиці (DHT) ● Consistent hashing ● Versioning ● Vector clocks ● Quorum ● Anti-entropy based recovery (gossip) ● Hinted handoff
  28. 28. Революція ● Cassandra ● Riak ● Project Voldemort Ті хто слідує дизайну Amazon Dynamo та інші
  29. 29. !!!!!! Amazon: “затримка на 1/10 секунди коштує 1% продаж.” Amazon: “хвилина простою коштує 30,000 долларів” (2008 р.) Amazon Dynamo розроблялось тільки для однієї фічі: “додати в корзину” Google BigTable + Amazon Dynamo = Cassandra (Avinash Lakshman)
  30. 30. Документо-орієнтовані Теж що і Key/Value, але... значення зберігаються в форматі, який система “розуміє” - JSON, XML { "name": "homer", "email": "homer.simpson@gmail.com", "projects": [ "BigTable", "HBase", "Cassamdra" ] }
  31. 31. Документо-орієнтовані ● СouchDB ● MongoDB ● RavenDB ● Terrastore
  32. 32. Документо-орієнтовані ● Адресна/телефонна книга ● Форум ● Bug Tracking ● Списки витрат ● Звітування часу ● Списки справ (To-Do lists)
  33. 33. Граф-орієнтовані
  34. 34. Граф-орієнтовані ● Neo4j ● Sones ● InfoGrid ● HyperGraphDB ● vertexdb
  35. 35. Граф-орієнтовані Соціальні менежі Маршрут
  36. 36. Недоліки Нова (нестабільна) технологіяНова (нестабільна) технологія Більша відповідальність There is no silver bullet
  37. 37. Можливі варіанти Таблиця як нескінченне дерево Динамічне створення таблиць Надто багато JOIN-ів Таблиця як кеш/черга/лог
  38. 38. Запитання
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×