NoSQLNo problem
NoSQL?NoSQL(Not Only SQL) - это термин, обозначающий рядпроектов, направленных на реализацию моделей базданных, имеющих от...
Проблемы РБД● Горизонтальное масштабирование(при больших  объемах данных). Например:   ○ Digg - 3 терабайта для зеленых зн...
select fun, profit from real_world whererelational=false;Достоинства                  Недостатки ● Хорошие показатели     ...
Выбор СУБД                    Доступность(Availability) -                    пользователю всегда доступны                 ...
Модели хранения данныхСуществует 4 основных нереляционных модели храненияданных: ● Ключ-Значение (Key-Value) ● Документ-ор...
Ключ-Значение (Key-Value)Реализация хранилища типа ключ/значение:keyValueStore(key)=valueНапример:telephone("211-555-9012"...
Ключ-Значение (Key-Value)Если необходимо получить доступ к данным с помощьюдругого ключа, то, соответственно, необходимо с...
Ключ-Значение (Key-Value)
Документ-ориентированная модельПримеры документов:FirstName="Bob", Address="5 Oak St.", Hobby="sailing".FirstName="Jonatha...
Документ-ориентированная модельXML-документ:<Person firstName="John" lastName="Smith" age="25"><Address streetAddress="21 ...
JSON-документ:{"firstName": "John","lastName": "Smith","age": 25,"address":{"streetAddress": "21 2nd Street","city": "New ...
Column-Oriented● Данные представляются в виде таблиц, но отсутствуют  операции, подобные операции JOIN в языке SQL.● Опера...
Объект-ориентированная
Making a DecisionВам необходимы NoSQL-решения, когда:   1. Данные документ-ориентированны   2. Вы работаете с объект-ориен...
Список вопросов● Что это такое?● Создатели● Подробно о MongoDB   ○ Особенности MongoDB   ○ Документ-ориентированная модель...
Что это такое? MongoDB - масштабируемая, высокопроизводительная документоориентированная СУБД. mongo от слова "humongous" ...
Создатели10gen - (New York) компания, создавшая MongoDBи     осуществляющая дальнейшую поддержку.Релиз версии 1.0 состоялс...
Особенности MongoDB● Документ-ориентированная модель данных● Субд распространяется по лицензии GNU AGPL v3.0● Драйверы рас...
Документ-ориентированная модель данных ● Система MongoDB представляет собой набор баз   данных ● База данных - набор колле...
Документ-ориентированная модель данных MongoDB хранит все данные в формате BSON (binary-encoded serialization of JSON-like...
Примеры использования MongoDBУстановка MongoDB (shell)   $ aptitude install mongodbили  $ apt-get install mongodb для поль...
Примеры использования MongoDBЗапуск установленной mongoDB (shell)    $ ./mongo    MongoDB shell version: 1.3.2url: testcon...
Примеры использования MongoDBmongo поддерживает javascript (shell)> x = 123+1124>var obj = new Object> obj.test = 12> obj....
Примеры использования MongoDBРабота с базами данных (shell)> db //текущая база данныхtest>use foo //выбрать, создать базу ...
Примеры использования MongoDBРабота с коллекциями (shell)> db.my_collection //создание коллекцииfoo.my_collection>db.sefwg...
Примеры использования MongoDBРабота с документами (shell)> db.my_collection.insert({... "title" : "My first blog post",......
Примеры использования MongoDBРабота с документами (shell)> post = db.my_collection.findOne(){"_id" : ObjectId("2fe3e4d892a...
Примеры использования MongoDBИндексация в MongoDB (shell)> print(post._id)2fe3e4d892aa73234c910bed|------------| |-----| |...
Примеры использования MongoDBВставка, обновление данных(shell)> use chessswitched to db chess>db.chess.insert({    ..."nam...
Примеры использования MongoDBОбновление данных(shell)> db.chess.update(//update можно использоват как insert... {"name" : ...
Примеры использования MongoDBОбновление данных(shell)>db.chess.find(){{"name" : "white king",    ..."symbol" : "♚",    ......
Примеры использования MongoDBПоиск данных(shell)>db.chess.find(){{{"name" : "white king",    ..."symbol" : "♚",    ..."pos...
Репликация данных MongoDB поддерживает асинхронную репликацию данных.(данные между серверами синхронизируются в отложенный...
Auto-Sharding MongoDB масштабируется горизонатльно благодаря архитектуре auto-sharding.  ● Автоматическая балансировка заг...
Драйверы MongoDB 10gen предоставляет поддержку драйверов для следующих языков:  ●С  ● С++  ● С#  ● Haskell  ● Java  ● Java...
Драйверы MongoDB Также со стороны mongoDB сообщества предоставляется поддержка драйверов для таких языков как:  ● С# .NET ...
Советы новичкам ● Используйте 64-битную версию MongoDB ● Используйте репликацию для сохранности   данных ● Позаботьтесь о ...
Nosql and Mongodb
Nosql and Mongodb
Nosql and Mongodb
Nosql and Mongodb
Upcoming SlideShare
Loading in …5
×

Nosql and Mongodb

1,811 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,811
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Nosql and Mongodb

  1. 1. NoSQLNo problem
  2. 2. NoSQL?NoSQL(Not Only SQL) - это термин, обозначающий рядпроектов, направленных на реализацию моделей базданных, имеющих отличия от стандартных реляционныхбаз данныхОсновные характеристики: 1. Нереляционная модель данных 2. Открытые исходные тексты 3. Хорошая горизонтальная масштабируемость
  3. 3. Проблемы РБД● Горизонтальное масштабирование(при больших объемах данных). Например: ○ Digg - 3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье. ○ Facebook - 50 терабайт для поиска по входящим сообщениям ○ eBay - 2 петабайта в целом● Производительность каждого отдельного сервера● Не гибкий дизайн логической структуры.
  4. 4. select fun, profit from real_world whererelational=false;Достоинства Недостатки ● Хорошие показатели ● Отсутствующая или горизонтальной ограниченная масштабируемости поддержка свойств ACID ● Высокая ● Отсутствие поддержки производительность языка SQL каждого отдельного узла ● Упрощенная, более гибкая, не ограниченная схемой структура базы данных
  5. 5. Выбор СУБД Доступность(Availability) - пользователю всегда доступны операции чтения-записи CA AP RDBMS(MySQL, Postgres, Dynamo, Voldemort, Tokyo ...), Aster Data, Greenplum, Cabinet, KAI, Cassandra, Vertica SimpleDB, CouchDB, Riak Partition Tolerance - СистемаСогласованность(Consistency) - CP хорошо взаимодействует сПользователи всегда работают с BigTable, MongoDB, несколькими узламиодними и теми же данными BerkleyDB, Hypertable, MemcacheDB, HBase, Scalaris, Redis
  6. 6. Модели хранения данныхСуществует 4 основных нереляционных модели храненияданных: ● Ключ-Значение (Key-Value) ● Документ-ориентированная модель (Document-Oriented) ● Колонко-Ориентированная (Column-Oriented) ● Объект-ориентированная (Object-Oriented)
  7. 7. Ключ-Значение (Key-Value)Реализация хранилища типа ключ/значение:keyValueStore(key)=valueНапример:telephone("211-555-9012")="James, George"telephone("617-555-1414")="Tweed, Rob"Зачастую возможно сохранять несколько атрибутов длякаждого ключа.Например:telephone(phoneNumber,"name")=valuetelephone(phoneNumber,"address")=value
  8. 8. Ключ-Значение (Key-Value)Если необходимо получить доступ к данным с помощьюдругого ключа, то, соответственно, необходимо создатьвторой индекс с альтернативным свойством в качествеключа.Для хранилища, приведенного ранее, индекс по имениможет иметь следующую структуру:nameIndex(name,phoneNumber)=""Например:nameIndex("James, George", "211-555-9012")=""nameIndex("Tweed, Rob", "617-555-1414")=""
  9. 9. Ключ-Значение (Key-Value)
  10. 10. Документ-ориентированная модельПримеры документов:FirstName="Bob", Address="5 Oak St.", Hobby="sailing".FirstName="Jonathan", Address="15 Wanamassa Point Road",Children=("Michael,10", "Jennifer,8", "Samantha,5", "Elena,2").
  11. 11. Документ-ориентированная модельXML-документ:<Person firstName="John" lastName="Smith" age="25"><Address streetAddress="21 2nd Street" city="New York" state="NY"postalCode="10021" /><PhoneNumbers><PhoneNumber type="home" number="212 555-1234"/><PhoneNumber type="fax" number="646 555-4567"/></PhoneNumbers></Person>
  12. 12. JSON-документ:{"firstName": "John","lastName": "Smith","age": 25,"address":{"streetAddress": "21 2nd Street","city": "New York","state": "NY","postalCode": "10021"},"phoneNumber":[{"type": "home","number": "212 555-1234"},{"type": "fax","number": "646 555-4567"}]}
  13. 13. Column-Oriented● Данные представляются в виде таблиц, но отсутствуют операции, подобные операции JOIN в языке SQL.● Операция JOIN реализуется в пользовательском приложении
  14. 14. Объект-ориентированная
  15. 15. Making a DecisionВам необходимы NoSQL-решения, когда: 1. Данные документ-ориентированны 2. Вы работаете с объект-ориентированной системой 3. Вы работаете с распределенной системой, требовательной к параметрам горизонтальной масштабируемости и небольшому времени отклика 4. Вам необходимо дешевое решение для хранения данных и есть возможность интегрировать это решение с хостинг-провайдером вашего приложения
  16. 16. Список вопросов● Что это такое?● Создатели● Подробно о MongoDB ○ Особенности MongoDB ○ Документ-ориентированная модель данных ○ Философия MongoDB ○ Драйвера MongoDB ○ Примеры использования MongoDB ○ Советы новичкам ○ Продукты, использующие MongDB
  17. 17. Что это такое? MongoDB - масштабируемая, высокопроизводительная документоориентированная СУБД. mongo от слова "humongous" (DataBase) - большой, значительныйподробная информация на http://www.mongodb.org/
  18. 18. Создатели10gen - (New York) компания, создавшая MongoDBи осуществляющая дальнейшую поддержку.Релиз версии 1.0 состоялся августе 2008 года.На текущий момент последняя версия MongoDB 1.6.0.MongoDB молодой продукт и поэтому в нём иногдавстречаются баги(segmentation fault, core dumped), ноблагодаря высоким темпам разработки и большомуколичеству разработчиков вы можете рассчитывать насвоевременную поддержку со стороны 10gen, илисообщества MongoDB.
  19. 19. Особенности MongoDB● Документ-ориентированная модель данных● Субд распространяется по лицензии GNU AGPL v3.0● Драйверы распространяются по лицензии Apache License v2.0● Поддержка Map/Reduce● Репликация данных● Auto-Sharding● GridFS● Полная поддержка индексов● Коммерческая поддержка
  20. 20. Документ-ориентированная модель данных ● Система MongoDB представляет собой набор баз данных ● База данных - набор коллекций ● Коллекция - набор документов(подобие таблицы в РБД) ● Документ - набор полей(подобие записи в РБД, только документы в коллекции могут иметь различную структуру) ● Поле представляет из себя пару ключ-значение, где ○ ключ - значение типа string, название поля ○ значение : ■ массив значений ● � ■ значение базового типа типа string, float, binary и т.д.
  21. 21. Документ-ориентированная модель данных MongoDB хранит все данные в формате BSON (binary-encoded serialization of JSON-like documents). Данные пользователю предоставляются либо в JSON(Javascript Object Notation), либо в BSON форматах(в случае использования драйверов возможна десериализация в объекты) {"hello": "world"}→"x16x00x00x00x02hellox00 x06x00x00x00world {"BSON": ["awesome", 5.05,1986]} → "1x00x00x00x04BSONx00&x00 x00x00x020x00x08x00x00
  22. 22. Примеры использования MongoDBУстановка MongoDB (shell) $ aptitude install mongodbили $ apt-get install mongodb для пользователей opensuse $ zypper in mongodbтакже MongoDB можно скачать здесь http://www.mongodb.org/downloads
  23. 23. Примеры использования MongoDBЗапуск установленной mongoDB (shell) $ ./mongo MongoDB shell version: 1.3.2url: testconnecting to: testtype "help" for help>
  24. 24. Примеры использования MongoDBmongo поддерживает javascript (shell)> x = 123+1124>var obj = new Object> obj.test = 12> obj.test 12>
  25. 25. Примеры использования MongoDBРабота с базами данных (shell)> db //текущая база данныхtest>use foo //выбрать, создать базу данныхswitched to db foo> dbfoo>
  26. 26. Примеры использования MongoDBРабота с коллекциями (shell)> db.my_collection //создание коллекцииfoo.my_collection>db.sefwgdrgh.find()>db.segreh.count()0>db.my_collection.find()my_collection>db.my_collection.count()1>
  27. 27. Примеры использования MongoDBРабота с документами (shell)> db.my_collection.insert({... "title" : "My first blog post",... "author" : "Fred",... "content" : "Hello, world!",... "comments" : [] })>> post = db.posts.findOne(){"_id" : ObjectId("2fe3e4d892aa73234c910bed"),"title" : "My first blog post","author" : "Fred","content" : "Hello, world!","comments" : []}
  28. 28. Примеры использования MongoDBРабота с документами (shell)> post = db.my_collection.findOne(){"_id" : ObjectId("2fe3e4d892aa73234c910bed"),"title" : "My first blog post","author" : "Fred","content" : "Hello, world!","comments" : []}>
  29. 29. Примеры использования MongoDBИндексация в MongoDB (shell)> print(post._id)2fe3e4d892aa73234c910bed|------------| |-----| |---| |------| ts mac pid inc>
  30. 30. Примеры использования MongoDBВставка, обновление данных(shell)> use chessswitched to db chess>db.chess.insert({ ..."name" : "black king", ..."symbol" : "♚",    ..."pos" : {"x":"e", "y":8}    ...}    ...)> db.chess.update(... {"name" : "black king"},... {"$inc" : {"pos.y" : -1}})>
  31. 31. Примеры использования MongoDBОбновление данных(shell)> db.chess.update(//update можно использоват как insert... {"name" : "black king"},... {"$inc" : {"pos.y" : -1}}) > db.chess.update(... {"name" : "black king"},... {"$set" : {"name" : "white king"}})> db.chess.update(... {"name" : "black king"},... {"$set" : {"additional" : 23}})
  32. 32. Примеры использования MongoDBОбновление данных(shell)>db.chess.find(){{"name" : "white king", ..."symbol" : "♚",    ..."pos" : {"x":"e", "y":7}, ..."additional" : 23 ...}}
  33. 33. Примеры использования MongoDBПоиск данных(shell)>db.chess.find(){{{"name" : "white king", ..."symbol" : "♚",    ..."pos" : {"x":"e", "y":7}, ..."additional" : 23 ...}}>db.findOne({"name":"test"})>db.findOne({"name":"white king"}){{"name" : "white king", ..."symbol" : "♚",    ..."pos" : {"x":"e", "y":7}, ..."additional" : 23 ...}}>
  34. 34. Репликация данных MongoDB поддерживает асинхронную репликацию данных.(данные между серверами синхронизируются в отложенный момент времени, не во время добавления)
  35. 35. Auto-Sharding MongoDB масштабируется горизонатльно благодаря архитектуре auto-sharding. ● Автоматическая балансировка загрузки и распределения данных ● Простота в добавлении новых узлов ● Масштабируемость на более, чем тысяча узлов ● Автоматическое восстановление ошибок
  36. 36. Драйверы MongoDB 10gen предоставляет поддержку драйверов для следующих языков: ●С ● С++ ● С# ● Haskell ● Java ● Javascript ● Perl ● PHP ● Python ● Ruby ● Scala
  37. 37. Драйверы MongoDB Также со стороны mongoDB сообщества предоставляется поддержка драйверов для таких языков как: ● С# .NET ● Сlojure ● ColdFusion ●D ● Delphi ● Erlang ● Factor ● Fantom ● F# ● Go ● Groovy ● Lisp ● Lua ● PowerShell ● Smalltalk ●R ● Scheme
  38. 38. Советы новичкам ● Используйте 64-битную версию MongoDB ● Используйте репликацию для сохранности данных ● Позаботьтесь о безопасности установленной вами MongoDB ● Всегда используйте функцию getLastError(),

×