NoSQL
Download
1 / 38

mongodb - PowerPoint PPT Presentation


  • 308 Views
  • Uploaded on

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).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' mongodb' - avalon


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

NoSQL база данных

mongodb.org


Олег Качан

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

twitter.com/maximalno



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



@hipsterhacker

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

Retweeted by @bowermanandrew and 100+ others


MongoDB

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


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

{

first_name: “Oleg”,

last_name: “Kachan”,

contacts: {

twitter: “maximalno”,

email: “[email protected]

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

}

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



Измение мышление документ

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

  • Нет JOIN

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

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


MongoDB документ

Чем лучше?


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

  • Memcached

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

  • Key/value

  • MongoDB

  • RDBMS

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


Преимущества документ

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

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

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

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

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

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


Но зачем? документ

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


Mongodb4
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(“47cc67093475061e3d95369d”)


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


Read документ

SQL

SELECT * FROM usersSELECT first_name FROM users

MongoDB

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


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)


Операторы условий документ

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


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

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


Создание индексов документ

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– поиск объектов в заданном радиусе


Спасибо! документ

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


ad