Nosql
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

NoSQL PowerPoint PPT Presentation


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

NoSQL. NoSQL  (англ.  not only SQL , не только SQL).

Download Presentation

NoSQL

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

NoSQL


Nosql not only sql sql

NoSQL (англ. notonly SQL, не только SQL)

  • Обозначает ряд подходов, проектов, направленных на реализацию моделей баз данных, имеющих существенные отличия от используемых в традиционных реляционных СУБД с доступом к данным средствами языка SQL. Описание схемы данных в случае использования NoSQL-решений может осуществляться через использование различных структур данных: хеш-таблиц, деревьев и других.

  • Основная идея при разработке такого типа систем — предоставление разработчикам более гибких средств по модификации схемы данных на этапе эксплуатации, отказе от транзакционного контроля в пользу более естественной поддержки распределённых вычислений.


Nosql sql

NoSQLи SQL

  • Сторонниками концепции NoSQL подчёркивается, что она не является полным отрицанием языка SQL и реляционной модели, проект исходит из того, что SQL — это важный и весьма полезный инструмент, но при этом он не может считаться универсальным. Одной из проблем, которую указывают для классических реляционных БД, являются проблемы при работе с данными очень большого объема и в проектах с высокой нагрузкой. Основная цель подхода — расширить возможности БД там, где SQL недостаточно гибок, и не вытеснять его там, где он справляется со своими задачами.


Nosql

Методологические основы

  • В основе идеи NoSQL лежит следующее:

    • Нереляционная модель данных

    • Открытый исходный код

    • Хорошая горизонтальная масштабируемость.

  • В качестве одного из методологических обоснований подхода NoSQL используется эвристический принцип, известный как теорема CAP, утверждающий, что в распределённой системе невозможно одновременно обеспечить согласованность данных, доступность (англ. availability, в смысле корректность отклика по любому запросу) и устойчивость к расщеплению распределённой системы на изолированные части. Таким образом, при необходимости достижения высокой доступности и устойчивости к разделению предполагается не фокусироваться на средствах обеспечения согласованности данных, обеспечиваемых традиционными SQL-ориентированными СУБД с транзакционными механизмами на принципах ACID.


Nosql

Тренды в развитии технологий хранения данных

  • В последнее время мы можем наблюдать 4 тренда в развитии технологий хранения данных.


Nosql

Первый тренд

  • Увеличение объемов хранимых данных. Сегодня хранилища достигли таких невероятных размеров, что даже трудно себе представить. Только за 2009 и 2010 годы в базах было сохранено больше информации, чем за всю предыдущую историю человечества.


Nosql

Второй тренд

  • Взаимосвязанность данных. Информация перестала быть изолированной. Каждый кусочек знаний как-то связан с данными в других хранилищах информации. Страницы в интернете ссылаются на другие страницы. Тэги связывают помеченную информацию из разных источников. Онтологии устанавливают взаимосвязи между различными терминами, и т.д. и т.п.


Nosql

Третий тренд

  • Использование слабоструктурированной информации. Возьмем простой пример: описание товара в магазине. Если раньше было достаточно 5-6 полей, чтобы описать мужскую сорочку (размер, цвет, материал, фотография товара, ...), то теперь количество параметров может доходить до нескольких десятков. Причем, для разных сорочек будет использован разный набор параметров. В таких условиях становится крайне сложно заранее определить структуру таблицы, в которой хранится описание товара.


Nosql

Четвертый тренд

  • Архитектура. В 80-х годах прошлого века типичная архитектура использовала один большой компьютер (mainframe) и одну базу данных. В 90-х, распространение получила клиент-серверная архитектура. В новом веке активно используются web-сервисы, каждый со своим backend-ом (грубо говоря, со своей базой данных) и другие распределенные решения. Оказалось, что в таких условиях у реляционных баз данных резко падает производительность. И если для большинства web-сайтов производительности еще хватает, то для таких приложений как современные социальные сети или поисковые сервисы SQL базы данных оказались несостоятельны.


Nosql1

Категории NoSQLбаз

  • Существует четыре категории NoSQL баз данных.


Nosql

Первая категория

  • Key-Value (Ключ-Значение) базы данных. Это очень простые по своей идее хранилища. Фактически это очень большие хэш-таблицы, где каждому ключу поставлено в соответствие значение. Такие базы могут очень быстро оперировать колоссальными объемами информации, но они имеют серьезные ограничения в языке запросов. В качестве примеров Key-Value баз данных можно привести Dynomite, Voldemort, Tokyo, Redis.


Nosql

Вторая категория

  • клоны BigTable. BigTable — это база данных разработанная компанией Google для собственных нужд. Эта база представляет собой большую таблицу с тремя измерениями: колонки, строки и временны'е метки. Такая архитектура позволяет добиться очень высокой производительности, кроме того, она хорошо масштабируется на множество компьютеров. Но это не реляционная база, и она не поддерживает многие возможности реляционных баз. В частности в BigTable нет join-ов, нет сложных запросов и т.д. Компания Google не распространяет BigTable, поэтому на рынке появилось несколько независимо разработанных клонов этой базы. В частности это такие проекты как: Hadoop, HypertableиCassandra.


Nosql

Третья категория

  • Документо-ориентированные базы данных. Такие базы немного напоминают Key-Value базы, но в данном случае, база данных знает, что из себя представляют значения. Обычно, значением является некоторый документ или объект, к структуре которого можно делать запросы. Примерами таких баз являются CouchDB и MongoDB.


Nosql

Четвертая категория

  • Это базы данных построенные на графах. Такие базы ориентированы на поддержку сложных взаимосвязей между объектами, и основываются на теории графов. Структура данных в таких базах представляет собой набор узлов, связанных между собой ссылками. При этом и узлы и ссылки могут обладать некоторым количеством атрибутов. В качестве примера можно привести такие базы данных как: Neo4j, AllegroGraph, SonesgraphDB.


Nosql2

Механизмы для доступа к данным в NoSQL БД

  • Существует несколько механизмов для доступа к данным в NoSQL БД.


Restful

RESTfulинтерфейсы

  • Это интерфейс похожий на основной протокол интернета — HTTP. В рамках данного подхода предполагается, что каждый объект, которым мы можем манипулировать имеет свой уникальный адрес. Обращаясь по этому адресу мы можем запрашивать, создавать, редактировать или удалять указанный объект. При этом на сервере не сохраняется никакого состояния, то есть каждый запрос обрабатывается независимо от других запросов.


Nosql

Языки запросов отличные от SQL

  • GQL — SQL-подобный язык для Google BigTable

  • SPARQL — язык запросов Семантического Веба

  • Gremlin — язык обхода графов

  • Sones Graph Query Language — язык запросов к Sones Graph


Nosql

API запросов

  • Google BigTable DataStore API

  • Neo4j Traversal API


Nosql

  • Почему базы данных используют RESTful API? Потому что гиперссылки легко позволяют ссылаться на данные расположенные на других серверах. RESTful в данном случае наиболее подходящее решение.


Nosql

Манипулирование данными

  • RESTfulAPI позволяет выполнять операции создания, редактирования и удаления данных.

  • Другой подход предполагает использование специального API для манипулирования данными. Например, GoogleBigTable использует DataStore API, а Neo4j — GraphDatabaseAPI.

  • Кроме того, NoSQL базы данных поддерживают сериализацию данных в разные форматы, такие как:

    • JSON — javascriptobjectnotation

    • Thrift

    • ProtoBuffers

    • RDF


Nosql

Структура информации

  • Структуру данных в реляционных системах на примере MySQL мы можем представить в виде следующей иерархии:База данных -> Таблица -> Строка -> Поле + Значение.

  • Как это все выглядит в MongoDB:База данных -> Коллекция -> Документ -> ключ + значение.


Nosql

Структура информации

  • Таблицы в реляционных БД должны быть жестко структурированы, в то время как в MongoDB можно создавать документы произвольной структуры.


Nosql

Пример документа в формате JSON


Nosql

  • Как можно заметить у нас полная свобода во вложенности данных документа, что избавляет нас от необходимости разносить одну сущность в разные документы. Как и в SQL в MongoDB есть индексы, причем полная их поддержка. Мы можем стоить индекс по любому ключу приведенного выше документа, в том числе по вложенному country или по массиву tags. Можно делать составные индексы по нескольким ключам документа. 


Nosql

Выборка

  • Предположим нам надо выбрать все документы из определенной коллекции у которых значение city равно "Moscow".


Nosql

SQL

  • SELECT docs.title, loc.city FROM documents docs INNER JOINdoc_locationd_loc ON d_loc.doc_id = docs.doc_id INNER JOIN location loc ON loc.loc_id = d_loc.loc_id


Mongodb

MongoDB

  • db.find({additional.location.city: "Moscow"});


Nosql

Запись

  • В SQL есть оператор INSERT для добавления и UPDATE для обновления записей.Запись в MongoDB Выполняется при помощи трех функций: insert - добавление, save и update - для обновление и добавление.


Nosql

Запись

// $doc - произвольный документ

// Вставить документ

db.insert($doc);

// Обновить документ или добавить новый

//если его не существует, 2 варианта

db.save($doc); // или

db.update({name: "Joe"},$doc, true);

// первый аргумент - условие, второй - новый документ,

//третий - вставка если исходный документ не найден   //

//Атомарная операция. Увеличить параметр counter на

//единицу

db.update({name: "Joe"}, {$inc : {counter : 1}});


Nosql

Агрегация

  • Допустим, перед нами стоит задача: мы имеем таблицу с комментариями, надо выбрать суммарное количество голосов за каждого автора.

  • В SQL это решается довольно просто, как-то так:

  • SELECT author, SUM(votes) FROM comments GROUP BY author;

  • http://shvetsgroup.com/ru/blog/mongodb


  • Login