SlideShare une entreprise Scribd logo
1  sur  48
NoSQL бази от данни –
възможности и приложение*
За живота, вселената и всичко останало.
Hi!
Веселин Николов
http://dzver.com/blog/
@dzver
NoSQL БД – възможности и приложение, Веселин Николов
Темата
NoSQL БД – възможности и приложение, Веселин Николов
1. Какво е NoSQL
2. Проблеми пред RDBMS
3. Някои NoSQL DB
4. MySQL като NoSQL DB
5. Малко практика
Какво е NoSQL
NoSQL БД – възможности и приложение, Веселин Николов
Нерелационни бази от данни,
които евентуално не поддържат SQL
Проблеми пред RDBMS?
NoSQL БД – възможности и приложение, Веселин Николов
 С прост модел
 Добре познати
 Надеждни
 Таблиците се възприемат лесно
 Учат се в училище
 Стандартизиран SQL
Примерна схема
NoSQL БД – възможности и приложение, Веселин Николов
Примерна заявка
NoSQL БД – възможности и приложение, Веселин Николов
SELECT u.id, max(u.username), count(*)
FROM users u
JOIN followers f ON u.id = f.followed
GROUP BY u.id
ORDER BY count(*) DESC
LIMIT 10;
Истинска схема
NoSQL БД – възможности и приложение, Веселин Николов
govnokod.ru
NoSQL БД – възможности и приложение, Веселин Николов
OK
NoSQL БД – възможности и приложение, Веселин Николов
Компромиси
NoSQL БД – възможности и приложение, Веселин Николов
ALTER TABLE users
ADD COLUMN followers_count INT DEFAULT 0;
Промени в схемата
И кеширане извън БД:
Memcache, Redis
…и проблеми
NoSQL БД – възможности и приложение, Веселин Николов
Размер на БД > RAM
Размер на индексите > RAM
Размер на БД > дисковото пространство
Locks
Недостиг на CPU
=> #FAIL
Ограничени ресурси
NoSQL БД – възможности и приложение, Веселин Николов
Проблемни места
NoSQL БД – възможности и приложение, Веселин Николов
Репликация
NoSQL БД – възможности и приложение, Веселин Николов
Скалируемост
NoSQL БД – възможности и приложение, Веселин Николов
Partitioning + Sharding =
• JOIN #FAIL
• Трудни обобщения
• Много логика във
вашето приложение
NoSQL БД – възможности и приложение, Веселин Николов
Проблеми пред RDBMS
• Скалируемост
• Partitioning
• Sharding
• Кеширане
• Денормализация
• Промени в схемата
NoSQL БД – възможности и приложение, Веселин Николов
Теоремата CAP
Консистентност (C):
Всички клиенти на базата от данни виждат една и съща информация,
даже при конкурентно обновяване.
Наличност (A):
Всички клиенти на базата от данни могат да достъпват някоя версия на
информацията.
Възможност за разделяне върху много сървъри (P):
Базата от данни може да се разделя върху множество сървъри.
Изберете две.
Ерик Брюър, 2000 г.
NoSQL БД – възможности и приложение, Веселин Николов
NoSQL решения
• Управление на компромисите
• Евентуална консистентност
• Отказ от фиксирана схема
• JavaScript, JSON, REST
• MapReduce
• GFS, HDFS
• Отказ от SQL
NoSQL БД – възможности и приложение, Веселин Николов
Мащаби на бедствието
• BigTable, Dynamo
• Cassandra, Riak
• CouchDB, MongoDB
• Redis, MemcacheDB
• Hadoop, Hbase, RavenDB,
Kyoto Cabinet, Sherpa, Neo4j,
FlockDB, Hypertable и др.
NoSQL БД – възможности и приложение, Веселин Николов
Google BigTable
• Многомерен масив
• Колони и семейства от колони
• SSTable
• Компресия
• GFS
• 2004 г.
NoSQL БД – възможности и приложение, Веселин Николов
Amazon Dynamo
• Хоризонтално скалируема
• Евентуално консистентна
• Равнопоставени сървъри
• Key/value БД
• put/get
• 2007 г.
NoSQL БД – възможности и приложение, Веселин Николов
Cassandra
• BigTable + Dynamo = Cassandra
• Настройваема консистентност
• Колони, семейства, суперколони
• Cassandra-cli shell
• Вместо индекси, нови семейства
• Gossip
• Java, Thrift
NoSQL БД – възможности и приложение, Веселин Николов
Колони
{
"name": “City",
"value": “Sofia“,
"timestamp": "1290196015"
},
{
"name": “Code",
"value": “1784“,
"timestamp": "1290196013“
}
NoSQL БД – възможности и приложение, Веселин Николов
Семейства колони
{
“Veselin Nikolov":{
"Users":
{ "emailAddress":
{"name":"emailAddress","value":“dzver@bar.com"},
"webSite":{"name":"webSite",
"value":"http://bar.com"} },
“Lectures":{ “Openfest":{"name":“lectureName", "value":“NoSQL
DB"} }
},
“Stefan Kanev":
{
"Users":
{ "emailAddress":{"name":"emailAddress",
"value":“skanev@foo.br"}, "twitter":{"name":"twitter",
"value":“skanev"} } }
“Lectures":
{ “Openfest":{"name":“lectureName", "value":“MongoDB
Rulez"} }
NoSQL БД – възможности и приложение, Веселин Николов
Суперколони
Friend_Diggs { // Column Family – гласовете на приятелите
12345 : { // story_id as Row key
user_id: { // SuperColumns are User’s IDs
friend_id1: true,
friend_id2: true,
friend_id3: true
}
}
}
Суперк олона = k/v ,двойк а в к оято стойността е набор от
.к олони
https://nosqleast.com/2009/slides/sarkissian-cassandra.pdf
NoSQL БД – възможности и приложение, Веселин Николов
Някои проблеми с Cassandra
1. Digg #FAIL, Reddit #WIN
2. Индекс = Ново семейство колони
3. Ново семейство колони = restart
4. WTF is a SuperColumn?
NoSQL БД – възможности и приложение, Веселин Николов
CouchDB
• Документи
• REST, JavaScript, JSON
• Материални изгледи
• MapReduce
• MVCC – ревизии на
документите
NoSQL БД – възможности и приложение, Веселин Николов
Документ
{
"_id": "163271278f438b6ccb9c87879d0001c7",
"_rev": "3-29830772003eb7f6e49f55834d28c640",
"url": "http://dzver.com/blog/?p=2000",
"author": "Eric Brewer",
"title": "The CAP Theorem",
"comments": [
{
"author": "Veselin Nikolov",
"published": "2010-08-17 15:00:00",
"body": "Cool Dude!"
},
{
"author": "Mark Twain",
"published": "2010-08-17 15:01:00",
"body": “Вафла трепач"
}
]
}
NoSQL БД – възможности и приложение, Веселин Николов
Още документи
{
"_id": "60206fa17eb65874b38594abd57ded49",
"_rev": "3-29830772003eb7f6e49f55834d28c640",
"doc_type": “Post”,
"url": "http://dzver.com/blog/?p=2000",
"author": "Eric Brewer",
"title": "The CAP Theorem",
}
{
"_id": "60206fa17eb65874b38594abd57dcafd",
"_rev": "1-5e9d312e407a13661fa69fb626c78466",
"body": "Hello Dolly",
"doc_type": "Comment",
"author": “Veselin",
"id_post": "60206fa17eb65874b38594abd57ded49",
}
NoSQL БД – възможности и приложение, Веселин Николов
Design document
NoSQL БД – възможности и приложение, Веселин Николов
Материален изглед
NoSQL БД – възможности и приложение, Веселин Николов
Някои проблеми с CouchDB
1. Бавен запис
2. Бавно първоначално създаване на
изгледи
3. GROUP BY .. ORDER BY count – само
с hack.
NoSQL БД – възможности и приложение, Веселин Николов
MongoDB
• Документи
• Индекси
• Mongo shell
• JSON, JavaScript, MapReduce
• ReplicaSet, auto sharding*
NoSQL БД – възможности и приложение, Веселин Николов
Разлики с CouchDB
• No single server durability
• MapReduce работи подобно на SQL
• Работи бързо
NoSQL БД – възможности и приложение, Веселин Николов
Hadoop
• HDFS
• MapReduce
• HBase
• Pig
• Hive
NoSQL БД – възможности и приложение, Веселин Николов
Още няколко важни NoSQL DB
• Redis & MemcacheDB
• FlockDB за friends & followers
• Neo4j за графи
• Riak – Dynamo аналог с MapReduce
NoSQL БД – възможности и приложение, Веселин Николов
MySQL NoSQL
1. FriendFeed
2. Yoshinori Matsunobu
NoSQL БД – възможности и приложение, Веселин Николов
MySQL във FriendFeed
1. Сериализиран масив в blob
2. Нова таблица за всеки индекс
http://bret.appspot.com/entry/how-friendfeed-uses-mysql
NoSQL БД – възможности и приложение, Веселин Николов
MySQL без SQL
1. NDB Cluster + NDBAPI
2. HandlerSocket Plugin
3. Заявки по PK, без SQL
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as
NoSQL БД – възможности и приложение, Веселин Николов
Малко практика
NoSQL БД – възможности и приложение, Веселин Николов
Тестовете са спекулативни,
ако не се провеждат в разпределена среда
Запис на данни
5000 документа в 50 нишки
MySQL: 65 sec, MongoDB 21 sec, Cassandra: 23 sec
NoSQL БД – възможности и приложение, Веселин Николов
Извличане на данни
1000 изчитания на статия с нейните коментари, конкурентно в 10 нишки
MySQL: 2.4 sec, CouchDB: 0.57 sec.
NoSQL БД – възможности и приложение, Веселин Николов
Обобщение
• Прости и бързи
• Подходящи за специфични задачи
• Нужни са много тестове
NoSQL БД – възможности и приложение, Веселин Николов
Перспективи за развитие
• MongoDB single server durability
• Cassandra – конфигурация в реално време
• CouchDB – подреждане на MapReduce
• Hadoop PIG, Hadoop Hive QL
• MapReduce в RDBMS
NoSQL БД – възможности и приложение, Веселин Николов
Въпроси?
NoSQL БД – възможности и приложение, Веселин Николов
Благодаря!
NoSQL БД – възможности и приложение, Веселин Николов

Contenu connexe

En vedette

La libertà non ha prezzo
La libertà non ha prezzoLa libertà non ha prezzo
La libertà non ha prezzoSergio Gridelli
 
Ddd part 2 modelling qiscus
Ddd part 2   modelling qiscusDdd part 2   modelling qiscus
Ddd part 2 modelling qiscusHiraq Citra M
 
Power point training the power of visuals
Power point training the power of visualsPower point training the power of visuals
Power point training the power of visualsLinda Mkhize-Manashe
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing krasis
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationVijay Dalmia
 
Marketing research of the future
Marketing research of the futureMarketing research of the future
Marketing research of the futureKristof De Wulf
 
Amazing number3
Amazing number3Amazing number3
Amazing number3ShdwClaw
 
Community Engagement and Capacity Building Cultural Planning
Community Engagementand Capacity Building Cultural PlanningCommunity Engagementand Capacity Building Cultural Planning
Community Engagement and Capacity Building Cultural PlanningEmily Robson
 
Amazing number3
Amazing number3Amazing number3
Amazing number3ShdwClaw
 
Shn Overview Updated 2009 06 P31 36
Shn Overview   Updated 2009 06 P31 36Shn Overview   Updated 2009 06 P31 36
Shn Overview Updated 2009 06 P31 36joaovox
 
Shn, permaculture pilot, 2008 april, 1 10
Shn, permaculture pilot, 2008 april, 1 10Shn, permaculture pilot, 2008 april, 1 10
Shn, permaculture pilot, 2008 april, 1 10joaovox
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tutShdwClaw
 
Shn Overview Updated 2009 06 P11 20
Shn Overview   Updated 2009 06 P11 20Shn Overview   Updated 2009 06 P11 20
Shn Overview Updated 2009 06 P11 20joaovox
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияVeselin Nikolov
 

En vedette (15)

La libertà non ha prezzo
La libertà non ha prezzoLa libertà non ha prezzo
La libertà non ha prezzo
 
Ddd part 2 modelling qiscus
Ddd part 2   modelling qiscusDdd part 2   modelling qiscus
Ddd part 2 modelling qiscus
 
Power point training the power of visuals
Power point training the power of visualsPower point training the power of visuals
Power point training the power of visuals
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth Creation
 
Marketing research of the future
Marketing research of the futureMarketing research of the future
Marketing research of the future
 
Amazing number3
Amazing number3Amazing number3
Amazing number3
 
Community Engagement and Capacity Building Cultural Planning
Community Engagementand Capacity Building Cultural PlanningCommunity Engagementand Capacity Building Cultural Planning
Community Engagement and Capacity Building Cultural Planning
 
Amazing number3
Amazing number3Amazing number3
Amazing number3
 
Shn Overview Updated 2009 06 P31 36
Shn Overview   Updated 2009 06 P31 36Shn Overview   Updated 2009 06 P31 36
Shn Overview Updated 2009 06 P31 36
 
Shn, permaculture pilot, 2008 april, 1 10
Shn, permaculture pilot, 2008 april, 1 10Shn, permaculture pilot, 2008 april, 1 10
Shn, permaculture pilot, 2008 april, 1 10
 
Milieu
MilieuMilieu
Milieu
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tut
 
Shn Overview Updated 2009 06 P11 20
Shn Overview   Updated 2009 06 P11 20Shn Overview   Updated 2009 06 P11 20
Shn Overview Updated 2009 06 P11 20
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширения
 

Plus de Veselin Nikolov

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayVeselin Nikolov
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupVeselin Nikolov
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.comVeselin Nikolov
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin Nikolov
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеVeselin Nikolov
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаVeselin Nikolov
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетишVeselin Nikolov
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоVeselin Nikolov
 

Plus de Veselin Nikolov (10)

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal Meetup
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.com
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектите
 
Разширения
РазширенияРазширения
Разширения
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
 

NoSQL бази от данни @ Openfest 2010

  • 1. NoSQL бази от данни – възможности и приложение* За живота, вселената и всичко останало.
  • 2. Hi! Веселин Николов http://dzver.com/blog/ @dzver NoSQL БД – възможности и приложение, Веселин Николов
  • 3. Темата NoSQL БД – възможности и приложение, Веселин Николов 1. Какво е NoSQL 2. Проблеми пред RDBMS 3. Някои NoSQL DB 4. MySQL като NoSQL DB 5. Малко практика
  • 4. Какво е NoSQL NoSQL БД – възможности и приложение, Веселин Николов Нерелационни бази от данни, които евентуално не поддържат SQL
  • 5. Проблеми пред RDBMS? NoSQL БД – възможности и приложение, Веселин Николов  С прост модел  Добре познати  Надеждни  Таблиците се възприемат лесно  Учат се в училище  Стандартизиран SQL
  • 6. Примерна схема NoSQL БД – възможности и приложение, Веселин Николов
  • 7. Примерна заявка NoSQL БД – възможности и приложение, Веселин Николов SELECT u.id, max(u.username), count(*) FROM users u JOIN followers f ON u.id = f.followed GROUP BY u.id ORDER BY count(*) DESC LIMIT 10;
  • 8. Истинска схема NoSQL БД – възможности и приложение, Веселин Николов
  • 9. govnokod.ru NoSQL БД – възможности и приложение, Веселин Николов
  • 10. OK NoSQL БД – възможности и приложение, Веселин Николов
  • 11. Компромиси NoSQL БД – възможности и приложение, Веселин Николов ALTER TABLE users ADD COLUMN followers_count INT DEFAULT 0; Промени в схемата И кеширане извън БД: Memcache, Redis
  • 12. …и проблеми NoSQL БД – възможности и приложение, Веселин Николов Размер на БД > RAM Размер на индексите > RAM Размер на БД > дисковото пространство Locks Недостиг на CPU => #FAIL
  • 13. Ограничени ресурси NoSQL БД – възможности и приложение, Веселин Николов
  • 14. Проблемни места NoSQL БД – възможности и приложение, Веселин Николов
  • 15. Репликация NoSQL БД – възможности и приложение, Веселин Николов
  • 16. Скалируемост NoSQL БД – възможности и приложение, Веселин Николов
  • 17. Partitioning + Sharding = • JOIN #FAIL • Трудни обобщения • Много логика във вашето приложение NoSQL БД – възможности и приложение, Веселин Николов
  • 18. Проблеми пред RDBMS • Скалируемост • Partitioning • Sharding • Кеширане • Денормализация • Промени в схемата NoSQL БД – възможности и приложение, Веселин Николов
  • 19. Теоремата CAP Консистентност (C): Всички клиенти на базата от данни виждат една и съща информация, даже при конкурентно обновяване. Наличност (A): Всички клиенти на базата от данни могат да достъпват някоя версия на информацията. Възможност за разделяне върху много сървъри (P): Базата от данни може да се разделя върху множество сървъри. Изберете две. Ерик Брюър, 2000 г. NoSQL БД – възможности и приложение, Веселин Николов
  • 20. NoSQL решения • Управление на компромисите • Евентуална консистентност • Отказ от фиксирана схема • JavaScript, JSON, REST • MapReduce • GFS, HDFS • Отказ от SQL NoSQL БД – възможности и приложение, Веселин Николов
  • 21. Мащаби на бедствието • BigTable, Dynamo • Cassandra, Riak • CouchDB, MongoDB • Redis, MemcacheDB • Hadoop, Hbase, RavenDB, Kyoto Cabinet, Sherpa, Neo4j, FlockDB, Hypertable и др. NoSQL БД – възможности и приложение, Веселин Николов
  • 22. Google BigTable • Многомерен масив • Колони и семейства от колони • SSTable • Компресия • GFS • 2004 г. NoSQL БД – възможности и приложение, Веселин Николов
  • 23. Amazon Dynamo • Хоризонтално скалируема • Евентуално консистентна • Равнопоставени сървъри • Key/value БД • put/get • 2007 г. NoSQL БД – възможности и приложение, Веселин Николов
  • 24. Cassandra • BigTable + Dynamo = Cassandra • Настройваема консистентност • Колони, семейства, суперколони • Cassandra-cli shell • Вместо индекси, нови семейства • Gossip • Java, Thrift NoSQL БД – възможности и приложение, Веселин Николов
  • 25. Колони { "name": “City", "value": “Sofia“, "timestamp": "1290196015" }, { "name": “Code", "value": “1784“, "timestamp": "1290196013“ } NoSQL БД – възможности и приложение, Веселин Николов
  • 26. Семейства колони { “Veselin Nikolov":{ "Users": { "emailAddress": {"name":"emailAddress","value":“dzver@bar.com"}, "webSite":{"name":"webSite", "value":"http://bar.com"} }, “Lectures":{ “Openfest":{"name":“lectureName", "value":“NoSQL DB"} } }, “Stefan Kanev": { "Users": { "emailAddress":{"name":"emailAddress", "value":“skanev@foo.br"}, "twitter":{"name":"twitter", "value":“skanev"} } } “Lectures": { “Openfest":{"name":“lectureName", "value":“MongoDB Rulez"} } NoSQL БД – възможности и приложение, Веселин Николов
  • 27. Суперколони Friend_Diggs { // Column Family – гласовете на приятелите 12345 : { // story_id as Row key user_id: { // SuperColumns are User’s IDs friend_id1: true, friend_id2: true, friend_id3: true } } } Суперк олона = k/v ,двойк а в к оято стойността е набор от .к олони https://nosqleast.com/2009/slides/sarkissian-cassandra.pdf NoSQL БД – възможности и приложение, Веселин Николов
  • 28. Някои проблеми с Cassandra 1. Digg #FAIL, Reddit #WIN 2. Индекс = Ново семейство колони 3. Ново семейство колони = restart 4. WTF is a SuperColumn? NoSQL БД – възможности и приложение, Веселин Николов
  • 29. CouchDB • Документи • REST, JavaScript, JSON • Материални изгледи • MapReduce • MVCC – ревизии на документите NoSQL БД – възможности и приложение, Веселин Николов
  • 30. Документ { "_id": "163271278f438b6ccb9c87879d0001c7", "_rev": "3-29830772003eb7f6e49f55834d28c640", "url": "http://dzver.com/blog/?p=2000", "author": "Eric Brewer", "title": "The CAP Theorem", "comments": [ { "author": "Veselin Nikolov", "published": "2010-08-17 15:00:00", "body": "Cool Dude!" }, { "author": "Mark Twain", "published": "2010-08-17 15:01:00", "body": “Вафла трепач" } ] } NoSQL БД – възможности и приложение, Веселин Николов
  • 31. Още документи { "_id": "60206fa17eb65874b38594abd57ded49", "_rev": "3-29830772003eb7f6e49f55834d28c640", "doc_type": “Post”, "url": "http://dzver.com/blog/?p=2000", "author": "Eric Brewer", "title": "The CAP Theorem", } { "_id": "60206fa17eb65874b38594abd57dcafd", "_rev": "1-5e9d312e407a13661fa69fb626c78466", "body": "Hello Dolly", "doc_type": "Comment", "author": “Veselin", "id_post": "60206fa17eb65874b38594abd57ded49", } NoSQL БД – възможности и приложение, Веселин Николов
  • 32. Design document NoSQL БД – възможности и приложение, Веселин Николов
  • 33. Материален изглед NoSQL БД – възможности и приложение, Веселин Николов
  • 34. Някои проблеми с CouchDB 1. Бавен запис 2. Бавно първоначално създаване на изгледи 3. GROUP BY .. ORDER BY count – само с hack. NoSQL БД – възможности и приложение, Веселин Николов
  • 35. MongoDB • Документи • Индекси • Mongo shell • JSON, JavaScript, MapReduce • ReplicaSet, auto sharding* NoSQL БД – възможности и приложение, Веселин Николов
  • 36. Разлики с CouchDB • No single server durability • MapReduce работи подобно на SQL • Работи бързо NoSQL БД – възможности и приложение, Веселин Николов
  • 37. Hadoop • HDFS • MapReduce • HBase • Pig • Hive NoSQL БД – възможности и приложение, Веселин Николов
  • 38. Още няколко важни NoSQL DB • Redis & MemcacheDB • FlockDB за friends & followers • Neo4j за графи • Riak – Dynamo аналог с MapReduce NoSQL БД – възможности и приложение, Веселин Николов
  • 39. MySQL NoSQL 1. FriendFeed 2. Yoshinori Matsunobu NoSQL БД – възможности и приложение, Веселин Николов
  • 40. MySQL във FriendFeed 1. Сериализиран масив в blob 2. Нова таблица за всеки индекс http://bret.appspot.com/entry/how-friendfeed-uses-mysql NoSQL БД – възможности и приложение, Веселин Николов
  • 41. MySQL без SQL 1. NDB Cluster + NDBAPI 2. HandlerSocket Plugin 3. Заявки по PK, без SQL http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as NoSQL БД – възможности и приложение, Веселин Николов
  • 42. Малко практика NoSQL БД – възможности и приложение, Веселин Николов Тестовете са спекулативни, ако не се провеждат в разпределена среда
  • 43. Запис на данни 5000 документа в 50 нишки MySQL: 65 sec, MongoDB 21 sec, Cassandra: 23 sec NoSQL БД – възможности и приложение, Веселин Николов
  • 44. Извличане на данни 1000 изчитания на статия с нейните коментари, конкурентно в 10 нишки MySQL: 2.4 sec, CouchDB: 0.57 sec. NoSQL БД – възможности и приложение, Веселин Николов
  • 45. Обобщение • Прости и бързи • Подходящи за специфични задачи • Нужни са много тестове NoSQL БД – възможности и приложение, Веселин Николов
  • 46. Перспективи за развитие • MongoDB single server durability • Cassandra – конфигурация в реално време • CouchDB – подреждане на MapReduce • Hadoop PIG, Hadoop Hive QL • MapReduce в RDBMS NoSQL БД – възможности и приложение, Веселин Николов
  • 47. Въпроси? NoSQL БД – възможности и приложение, Веселин Николов
  • 48. Благодаря! NoSQL БД – възможности и приложение, Веселин Николов

Notes de l'éditeur

  1. хохохо
  2. Първо кратко изясняване какво влагам в думата NoSQL. NoSQL е звучно име на група от 50-тина нерелационни бази данни. Тези бази от данни имат малко общо по между си, като повечето не поддържат никакви форми на SQL. Под нерелационни бази от данни имам предвид, че не използват двумерни таблици, игнорират първа нормална форма и като следствие - не поддържат ANSI SQL. Нека разясня.
  3. Релационният модел изисква данните да са нормализирани - за да няма аномалии при работата с тях. Съответно извличането става със заявки като тази:
  4. За да имат една данна само на едно място, ви трябват заявки като тази. Има доста проблеми в нея, но като такситата ментета, с малко данни е ОК.
  5. В реалността има началници, които ви съветват да разширите функционалността. Това е около ½ от схемата на истински софтуер за CRM.
  6. А това е истинска заявка, която една програма генерираше и ми казаха да оправя. Като стартирате проекта, всичко това работи прекрасно. Ако проектът е успешен, той расте едновременно като обем данни, като брой заявки и като функционалност. Доста е вероятно да усетите първите проблеми с времето за достъп до данните, преди да натрупате обем данни, който сам по себе си да е проблем.
  7. ОК на къси дистанции
  8. Записваме обобщени данни по колони, индексираме по тях, актуализираме при обновяване или периодично.
  9. За да имат една данна само на едно място, ви трябват заявки като тази. Има доста проблеми в нея, но като такситата ментета, с малко данни е ОК.
  10. Ако просто решите, че като разделите базата данни на 4 ще решите проблемите, може да прибегнете към репликация.
  11. Мастър-слейв репликацията помага донякъде, но…
  12. Ако трябва да разпределите базата си данни на части върху отделни сървъри, рибката няма да остане жива. Ще ви е нужна клиентска логика за разделяне и трябва да се откажете от join
  13. Скалируемост – възможност да се работи с нарастнал трафик или нарастнал обем, чрез добавяне на хардуер. RDBMS се забавят с нарастването на обема. JOIN, GROUP BY, ALTER стават бавни и постепенно невъзможни. Partitioning в RDBMS се прави по PK. Ако употребата на данните не е по PK, забавяне. Sharding е разделяне на данните от 1 таблица по критерий с код, написан от програмистите.
  14. Скалируемост – възможност да се работи с нарастнал трафик или нарастнал обем, чрез добавяне на хардуер. RDBMS се забавят с нарастването на обема. JOIN, GROUP BY, ALTER стават бавни и постепенно невъзможни. Partitioning в RDBMS се прави по PK. Ако употребата на данните не е по PK, забавяне. Sharding е разделяне на данните от 1 таблица по критерий с код, написан от програмистите.
  15. Всичко ново е добре забравеното старо?
  16. NoSQL решенията включват най-разнообразни идеи. Отказът от SQL е общ, отказът от фиксирана схема – почти. JS, JSON и REST са разпространени. Евентуалната консистентност е почти обща. MapReduce е особено популярен. Има разработена теорема на Ерик Брюър – от наличност, консистентност и толерантност към разделяне на части, БД може да осигури само 2. За това обичайно се жертва консистентността, като най-малкото зло.
  17. Около 15 разгледани в известни детайли, от общо няколко десетки. BigTable клонинги, Динамо клонинги, Документни БД, k/v персистентни cache и др.
  18. Многомерен масив, състоящ се от Колони и семейства от колони, записани под формата на SSTable, която е Компресия компресирана, върху GFS, която е разпределена и обобщени с MapReduce 2004 г.
  19. Втората идеологически най-влиятелна NoSQL DB, 2007 г. Концепцията й е да е хоризонтално скалируема, с равнопоставени сървъри, разположени в ринг. Използва gossip протокол за синхронизация, vector clocks за определяне коя версия на данната е остаряла, въвежда евентуалната консистентност, свежда модела на данните до ключ и стойност.
  20. Суперколоната е допълнително ниво на йерархия от колони. Ако имаме колона с домашен адрес и колона с модел автомобил, суперколоната човек с идентификатор името му, обединява автомобила и адреса. Има шел, свой протокол за разпространение на измененията. Тази БД почти погреба digg, но пък изстреля в небесата reddit.
  21. Users и Lectures са семейсва от колони
  22. Суперколоната е допълнително ниво на йерархия от колони. Ако имаме колона с домашен адрес и колона с модел автомобил, суперколоната човек с идентификатор името му, обединява автомобила и адреса. Има шел, свой протокол за разпространение на измененията. Тази БД почти погреба digg, но пък изстреля в небесата reddit.
  23. Документът в каучдб е json обект с произволна структура, подреден по ключ. Идентификаторите могат да са както от потребителя, така и автоматично генерирани. За да бъдат дотъпни данните от вътрешността на документа се използват изгледи, чрез design documents. Изгледите са материални и много бързи. Използват дистрибутиран между сървърите mapreduce за генерирането си. За решаване на конфликти се използва MVCC, базиран на ревизии, които съществуват едновременно.
  24. Документът в каучдб е json обект с произволна структура, подреден по ключ. Идентификаторите могат да са както от потребителя, така и автоматично генерирани. За да бъдат дотъпни данните от вътрешността на документа се използват изгледи, чрез design documents. Изгледите са материални и много бързи. Използват дистрибутиран между сървърите mapreduce за генерирането си. За решаване на конфликти се използва MVCC, базиран на ревизии, които съществуват едновременно.
  25. Документът в каучдб е json обект с произволна структура, подреден по ключ. Идентификаторите могат да са както от потребителя, така и автоматично генерирани. За да бъдат дотъпни данните от вътрешността на документа се използват изгледи, чрез design documents. Изгледите са материални и много бързи. Използват дистрибутиран между сървърите mapreduce за генерирането си. За решаване на конфликти се използва MVCC, базиран на ревизии, които съществуват едновременно.
  26. Документът в каучдб е json обект с произволна структура, подреден по ключ. Идентификаторите могат да са както от потребителя, така и автоматично генерирани. За да бъдат дотъпни данните от вътрешността на документа се използват изгледи, чрез design documents. Изгледите са материални и много бързи. Използват дистрибутиран между сървърите mapreduce за генерирането си. За решаване на конфликти се използва MVCC, базиран на ревизии, които съществуват едновременно.
  27. Документна база, с конзолен шел, индекси за достъп в реално време. Много бързо писане, много компромиси по отношение консистентност. Fail при 4sq, голям успех на други места.