Mongodb.org NoSQL база данных. Олег Качан Независимый разработчик twitter.com/maximalno.

Презентация:



Advertisements
Похожие презентации
1 Основы SQL: MySQL Будем использовать MySQL СУБД с открытым кодом Бесплатная версия (Community Edition) – на В Linux-дистрибутивах.
Advertisements

База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
Создание Web страниц Урок 12: PHP & MySQL Павел Бочаров.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Реляционные базы данных N-арное отношение – подмножество декартова произведения N множеств возможных значений (доменов, типов данных, атрибутов) Изображение.
NoSQL – взрыв возможностей Алексей Солнцев, iForum, 17 апреля 2012.
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
Работа с БД в Zend Лекция 4 1.Модель 2.Классы Zend_Db_Table и Zend_Config 3.Запросы 4.Свойства и методы таблицы.
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
История развития языка SQL Structured Query Language ɛ skju ɛ l ɛ skju ɛ l или si:kwəlsi:kwəl DML (Data Manipulation Language) DDL (Data Definition Language)
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
1 TRANSACT-SQL. Лекция 3. © Куркурин Николай Дмитриевич. (906) Microsoft SQL Server 2000.
Докладчик – Альперин Борис NOT ONLY SQL NOSQL 1. Различные модели представления информации: иерархическая, сетевая, реляционная, объектная, … Реляционная.
Винников Олег. NET Developer. Почему NoSQL Особенности NoSQL решений Модели данных NoSQL Масштабирование MongoDB.
Как мы ClickHouse для рассылок внедряли Рассолов Дмитрий
Базы данных Лекция 06 Основы SQL. 1. Связи между таблицами БД Разновидности связи между таблицами БД: Один–ко–многим – одной записи родительской таблицы.
Лекция 16 Лекция 16 Основы SQL. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в SQL.
PL/SQL Триггер блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие.
Транксрипт:

mongodb.org NoSQL база данных

Олег Качан Независимый разработчик twitter.com/maximalno

NoSQL = Not only SQL

NoSQL базы данных Key-value (Redis, Dynamo, MemcacheDB, Voldemort) Document (MongoDB, CouchDB, Riak) Wide Column (BigTable, Cassandra, HBase) Graph (Neo4j, InfiniteGraph)

MongoDB Быстрая база данных (C++) Устоявшийся проект, выпущена версия 2.0 Open-source, но разрабатывается и поддерживается компанией 10gen Одно из наиболее универсальных решений

Поддержка 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 и т.д.

Кто использует MongoDB? Craigslist

Кто использует MongoDB?

@hipsterhacker If it's not MongoDB, it's the WrongoDB Retweeted and 100+ others

MongoDB Документная база данных

Каждому ключу соответствует документ { first_name: Oleg, last_name: Kachan, contacts: { twitter: maximalno, }, skills: [php, node.js, mongodb] } _id: ObjectId(4daf…) =>

Организация данных SQLMongoDB База данных ТаблицаКоллекция Строка/записьДокумент

Измение мышление Нет JOIN Избыточность данных вместо нормализации Контроль данных из приложения, а не из базы Навыки работы с SQL базами не подходят для NoSQL

MongoDB Чем лучше?

Сравнение с другими решениями Функциональность Производительность Memcached Key/value MongoDB RDBMS

Преимущества Документно-ориентированная база данных Быстрое чтение и особенно запись Широкая по сравнению с другими NoSQL функциональсть Масштабирование из коробки По чтению (Master/slave, Replica sets) По записи (Sharding)

Но зачем? Области применения

MongoDB Не подходит: если вы используете JOINы если вам необходимы транзакции Подходит: хранение разнородных данных хранение геоданных хранение логов и статистики

Пример HTML-страница Новость Карточка товара Система управления контентом

Пример Система управления контентом SQL 3 таблицы: pages, news, goods MongoDB 1 коллекция: documents

Пример Система управления контентом Страница { type: page, content: Текст на странице }

Пример Система управления контентом Новость { type: news, date: new Date(), header: Заголовок, teaser: Краткий текст, content: Полное содержание }

Пример Система управления контентом Карточка товара { type: good, name: Телевизор price: 30000, features: { lcd: 1, led: 0 }, categories: [ home, tv ] }

MongoDB Подробнее

Организация данных

Типы данных BSON String Integer Double Date Byte array (бинарные данные) Boolean Null BSON Object

Ключ Каждому добавленному документу автоматически предоставляется уникальный ключ _id: ObjectId(47cc e3d95369d)

CRUD

Create SQL 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 vldc db.users.insert({ first_name: Oleg })

Read SQL SELECT * FROM users SELECT first_name FROM users MongoDB db.users.find() db.users.find({}, { first_name: 1 })

Read SQL SELECT * FROM users WHERE first_name = Oleg ORDER BY id DESC LIMIT 1,10 MongoDB db.users.find({first_name: Oleg }).sort({ _id: -1 }).skip(1).limit(10)

Операторы условий $gt, $lt, $gte, $lte $ne $in, $nin $mod $all $size $exists $type $not $where

Update SQL UPDATE users SET last_name = Kachan WHERE first_name= Oleg MongoDB db.users.update({ first_name: Oleg }, { last_name: Kachan }) db.users.update({ first_name: Oleg }, { $set: { last_name: Kachan } })

Операторы модификации $set $unset $inc $push $pushAll $addToSet $pop $pull $pullAll

Delete SQL DELETE FROM users WHERE id = 1 DELETE FROM users WHERE first_name = Oleg MongoDB db.users.remove({ _id: ObjectId(4df8fb81ed4cadd6271c0000) }) db.users.remove({ first_name: Oleg})

Создание индексов SQL ALTER TABLE `users` ADD INDEX (`first_name`) MongoDB db.users.ensureIndex({ first_name: 1 }) // по возрастанию db.users.ensureIndex({ first_name: -1 }) // по убыванию

Гео-индекс MongoDB db.places.ensureIndex({ location: 2d } Поиск при помощи операторов $near – поиск объектов с сортировкой, самые близкие - первые $box – поиск объектов в заданном квадрате $center – поиск объектов в заданном радиусе

Спасибо! Ответы на вопросы