NoSQL
This presentation is the property of its rightful owner.
Sponsored Links
1 / 38

mongodb PowerPoint PPT Presentation


  • 210 Views
  • Uploaded on
  • Presentation posted in: General

NoSQL база данных. mongodb.org. Олег Качан Независимый разработчик 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).

Download Presentation

mongodb

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Mongodb

NoSQL база данных

mongodb.org


Mongodb

Олег Качан

Независимый разработчик

twitter.com/maximalno


Nosql not only sql

NoSQL = Not only SQL


Nosql

NoSQL базы данных

  • Key-value (Redis, Dynamo, MemcacheDB, Voldemort)

  • Document (MongoDB, CouchDB, Riak)

  • Wide Column (BigTable, Cassandra, HBase)

  • Graph (Neo4j, InfiniteGraph)


Mongodb

MongoDB

  • Быстрая база данных (C++)

  • Устоявшийся проект, выпущена версия 2.0

  • Open-source, но разрабатывается и поддерживается компанией 10gen

  • Одно из наиболее универсальных решений


Mongodb1

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


Mongodb2

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

Craigslist


Mongodb3

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


Mongodb

@hipsterhacker

If it's not MongoDB, it's the WrongoDB

Retweeted by @bowermanandrew and 100+ others


Mongodb

MongoDB

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


Mongodb

Каждому ключу соответствует документ

{

first_name: “Oleg”,

last_name: “Kachan”,

contacts: {

twitter: “maximalno”,

email: [email protected]

},skills: [“php”, “node.js”, “mongodb”]

}

_id: ObjectId(“4daf…”) =>


Mongodb

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


Mongodb

Измение мышление

Навыки работы с SQL базами не подходят для NoSQL

  • Нет JOIN

  • Избыточность данных вместо нормализации

  • Контроль данных из приложения, а не из базы


Mongodb

MongoDB

Чем лучше?


Mongodb

Сравнение с другими решениями

  • Memcached

Производительность

  • Key/value

  • MongoDB

  • RDBMS

Функциональность


Mongodb

Преимущества

  • Документно-ориентированная база данных

  • Быстрое чтение и особенно запись

  • Широкая по сравнению с другими NoSQL функциональсть

  • Масштабирование из коробки

    • По чтению (Master/slave, Replica sets)

    • По записи (Sharding)


Mongodb

Но зачем?

Области применения


Mongodb4

MongoDB

Не подходит:

  • если вы используете JOIN’ы

  • если вам необходимы транзакции

    Подходит:

  • хранение разнородных данных

  • хранение геоданных

  • хранение логов и статистики


Mongodb

Пример

Система управления контентом

  • HTML-страница

  • Новость

  • Карточка товара


Mongodb

Пример

Система управления контентом

SQL

3 таблицы: pages, news, goods

MongoDB

1 коллекция: documents


Mongodb

Пример

Система управления контентом

Страница

{

type: “page”,

content: “Текст на странице”

}


Mongodb

Пример

Система управления контентом

Новость

{

type: “news”,

date: new Date(),

header: “Заголовок”,

teaser: “Краткий текст”,

content: “Полное содержание”

}


Mongodb

Пример

Система управления контентом

Карточка товара

{

type: “good”,

name: “Телевизор”

price: 30000,

features: {

lcd: 1,

led: 0

},

categories: [ “home”, “tv” ]

}


Mongodb

MongoDB

Подробнее


Mongodb

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


Mongodb

Типы данных BSON

  • String

  • Integer

  • Double

  • Date

  • Byte array (бинарные данные)

  • Boolean

  • Null

  • BSON Object


Mongodb

Ключ

Каждому добавленному документу автоматически предоставляется уникальный ключ

_id: ObjectId(“47cc67093475061e3d95369d”)


Mongodb

CRUD


Create

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 vldcdb.users.insert({ first_name: “Oleg” })


Mongodb

Read

SQL

SELECT * FROM usersSELECT first_name FROM users

MongoDB

db.users.find()db.users.find({}, { first_name: 1 })


Mongodb

Read

SQL

SELECT * FROM usersWHERE first_name = “Oleg” ORDER BY id DESC LIMIT 1,10

MongoDB

db.users.find({first_name: “Oleg” }).sort({ _id: -1 }).skip(1).limit(10)


Mongodb

Операторы условий

  • $gt, $lt, $gte, $lte

  • $ne

  • $in, $nin

  • $mod

  • $all

  • $size

  • $exists

  • $type

  • $not

  • $where


Update

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” } })


Mongodb

Операторы модификации

  • $set

  • $unset

  • $inc

  • $push

  • $pushAll

  • $addToSet

  • $pop

  • $pull

  • $pullAll


Delete

Delete

SQL

DELETE FROM users WHERE id = 1DELETE FROM users WHERE first_name = “Oleg”

MongoDB

db.users.remove({ _id: ObjectId(“4df8fb81ed4cadd6271c0000”) })db.users.remove({ first_name: “Oleg”})


Mongodb

Создание индексов

SQL

ALTER TABLE `users` ADD INDEX (`first_name`)

MongoDB

db.users.ensureIndex({ first_name: 1 }) // по возрастаниюdb.users.ensureIndex({ first_name: -1 })// по убыванию


Mongodb

Гео-индекс

MongoDB

db.places.ensureIndex({ location: “2d” }

Поиск при помощи операторов

  • $near – поиск объектов с сортировкой, самые близкие - первые

  • $box– поиск объектов в заданном квадрате

  • $center– поиск объектов в заданном радиусе


Mongodb

Спасибо!

Ответы на вопросы


  • Login