Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB basics in Russian
-
Upload
oleg-kachan -
Category
Technology
-
view
5.691 -
download
3
description
Transcript of MongoDB basics in Russian
![Page 1: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/1.jpg)
mongodb.org
NoSQL база данных
![Page 2: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/2.jpg)
Олег Качан Независимый разработчик
twitter.com/maximalno
![Page 3: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/3.jpg)
NoSQL = Not only SQL
![Page 4: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/4.jpg)
NoSQL базы данных
Key-value (Redis, Dynamo, MemcacheDB, Voldemort)
Document (MongoDB, CouchDB, Riak)
Wide Column (BigTable, Cassandra, HBase)
Graph (Neo4j, InfiniteGraph)
![Page 5: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/5.jpg)
MongoDB
(Быстрая база данных C++)
, 2Устоявшийся проект выпущена версия .0
Open-source, но разрабатывается и поддерживается компанией 10gen
Одно из наиболее универсальных решений
![Page 6: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/6.jpg)
Поддержка MongoDB языками
C/C++
Java
.NET
Javascript
Perl
PHP
Python
Ruby
Официальные драйверы
Erlang
Scala
Haskell
Драйверы open-source
ActionScript, Clojure, Delphi, Node.js, F#, Go, Groovy, Lua, Objective C, Smalltalk . .и т д
![Page 7: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/7.jpg)
Кто использует MongoDB?
Craigslist
![Page 8: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/8.jpg)
Кто использует MongoDB?
![Page 9: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/9.jpg)
@hipsterhackerIf it's not MongoDB, it's the WrongoDB
Retweeted by @bowermanandrew and 100+ others
![Page 10: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/10.jpg)
MongoDB Документная база данных
![Page 11: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/11.jpg)
Каждому ключу соответствует документ
{
first_name: “Oleg”,
last_name: “Kachan”,
contacts: {
twitter: “maximalno”,
email: “[email protected]”
},skills: [“php”, “node.js”, “mongodb”]
}
_id: ObjectId(“4daf…”) =>
![Page 12: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/12.jpg)
Организация данных
SQL MongoDB
База данных База данных
Таблица Коллекция
/Строка запись Документ
![Page 13: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/13.jpg)
Измение мышление
JOINНет
Избыточность данных вместо нормализации
, Контроль данных из приложения а не из базы
SQL NoSQLНавыки работы с базами не подходят для
![Page 14: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/14.jpg)
MongoDB ?Чем лучше
![Page 15: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/15.jpg)
Сравнение с другими решениями
Функциональность
• Memcached
• Key/value• MongoDB
• RDBMS
![Page 16: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/16.jpg)
Преимущества - Документно ориентированная база данных
Быстрое чтение и особенно запись
Широкая по сравнению с другими NoSQL функциональность
Масштабирование из коробки
(По чтению Master/slave, Replica sets) (По записи Sharding)
![Page 17: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/17.jpg)
Но зачем?О бласти применения
![Page 18: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/18.jpg)
MongoDB Не подходит:
если вы используете JOIN’ы
если вам необходимы транзакции
Подходит:
хранение разнородных данных
хранение геоданных
хранение логов и статистики
![Page 19: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/19.jpg)
Пример
HTML-страница
Новость
К арточкатовара
Система управления контентом
![Page 20: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/20.jpg)
Пример Система управления контентом
SQL
3 таблицы: pages, news, goods
MongoDB
1 коллекция: documents
![Page 21: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/21.jpg)
Пример Система управления контентом
Страница
{type: “page”,
content: “ Текст на странице”
}
![Page 22: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/22.jpg)
Пример Система управления контентом
Новость
{type: “news”,
date: new Date(),
header: “Заголовок”,
teaser: “ Краткий текст”,
content: “ Полное содержание”
}
![Page 23: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/23.jpg)
Пример Система управления контентом
Карточка товара{
type: “good”,name: “Телевизор”price: 30000,features: {
lcd: 1,led: 0
},categories: [ “home”, “tv” ]
}
![Page 24: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/24.jpg)
MongoDBПодробнее
![Page 25: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/25.jpg)
Организация данных
![Page 26: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/26.jpg)
Типы данных BSONString
Integer
Double
Date
Byte array ( бинарные данные)
Boolean
Null
BSON Object
![Page 27: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/27.jpg)
Ключ Каждому добавленному документу автоматически предоставляется уникальный
ключ
_id: ObjectId(“47cc67093475061e3d95369d”)
![Page 28: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/28.jpg)
CRUD
![Page 29: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/29.jpg)
CreateSQL
CREATE DATABASE vldc;CREATE TABLE vldc.users (`id` INT AUTO_INCREMENT PRIMARY KEY, `first_name` VARCHAR(50), `last_name` VARCHAR(50));INSERT INTO vldc.users SET first_name = “Oleg”;
MongoDB
use vldcdb.users.insert({ first_name: “Oleg” })
![Page 30: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/30.jpg)
ReadSQL
SELECT * FROM usersSELECT first_name FROM users
MongoDB
db.users.find()db.users.find({}, { first_name: 1 })
![Page 31: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/31.jpg)
ReadSQLSELECT * FROM usersWHERE first_name = “Oleg” ORDER BY id DESC LIMIT 1,10
MongoDBdb.users.find({first_name: “Oleg” }).sort({ _id: -1 }).skip(1).limit(10)
![Page 32: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/32.jpg)
Операторы условий$gt, $lt, $gte, $lte
$ne
$in, $nin
$mod
$all
$size
$exists
$type
$not
$where
![Page 33: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/33.jpg)
Update
![Page 34: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/34.jpg)
Операторы модификации$set
$unset
$inc
$push
$pushAll
$addToSet
$pop
$pull
$pullAll
![Page 35: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/35.jpg)
DeleteSQL
DELETE FROM users WHERE id = 1DELETE FROM users WHERE first_name = “Oleg”
MongoDBdb.users.remove({ _id: ObjectId(“4df8fb81ed4cadd6271c0000”) })db.users.remove({ first_name: “Oleg”})
![Page 36: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/36.jpg)
Создание индексовSQL
ALTER TABLE `users` ADD INDEX (`first_name`)
MongoDBdb.users.ensureIndex({ first_name: 1 }) // по возрастаниюdb.users.ensureIndex({ first_name: -1 }) // по убыванию
![Page 37: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/37.jpg)
Гео-индексMongoDB
db.places.ensureIndex({ location: “2d” }
Поиск при помощи операторов
$near – , - поиск объектов с сортировкой самые близкие первые
$box – поиск объектов в заданном квадрате
$center – поиск объектов в заданном радиусе
![Page 38: MongoDB basics in Russian](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6188b4a79599c038b471f/html5/thumbnails/38.jpg)
Спасибо! Ответы на вопросы