Особенности использования NoSQL

Тип работы:
Реферат
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Реферат по теме

Особенности использования NoSQL

Содержание

управление база данных модель

Введение

NoSQL

Описание некоторых СУБД из данного движения

Заключение

Источники

Введение

Система управления базами данных — это совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.

Существует несколько классификаций СУБД:

По модели данных,

По степени распределённости,

По способу доступа к БД.

Среди СУБД, классифицируемых по модели данных, выделяют:

Иерархические,

Сетевые,

Реляционные (от англ. Relation — отношение),

Объектно-ориентированные,

Объектно-реляционные.

На практике наиболее используемы реляционные СУБД.

Реляционные СУБД — СУБД, управляющие реляционными базами данных.

Реляционная модель ориентирована на представление данных в виде двумерных таблиц. Такое представление удобно для пользователей.

Но реляционные базы данных не могут справляться с нагрузками актуальными в наше время.

Три основных проблемы РСУБД:

Горизонтальное масштабирование при больших объёмах данных,

Производительность каждого отдельного сервера,

Не гибкий дизайн логической структуры.

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

В совокупности все эти технологии известны как «NoSQL базы данных».

NoSQL

Термин NoSQL был придуман Эриком Эвансом.

NoSQL (англ. Not only SQL, не только SQL) в информатике — термин, обозначающий ряд подходов, проектов, направленных на реализацию моделей баз данных, имеющих существенные отличия от используемых реляционных СУБД с доступом к данным средствами языка SQL.

Некоторые люди относятся неодобрительно к термину NoSQL, так как он звучит как основанный на том что разработчики не хотят делать, а не на том, кем они являются. Как уже было сказано в строгом определении термина, NoSQL не является движением против реляционных баз данных (NoSQL -это «не только SQL, а не «нет SQL»). NoSQL — важный и полезный инструмент, но он не может считаться универсальным. Основная цель подхода — расширить возможности БД там, где SQL недостаточно гибок, и не вытеснять его там, где он справляется со своими задачами.

В основе идеи NoSQL лежит:

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

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

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

масштабируемость — автоматическое распределение между несколькими серверами.

Такие системы мы называем распределенными базами данных (распределение идет между компьютерами по локальной сети). В них входят:

Cassandra, HBase, Riak, Scalaris, Voldemort.

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

Описание некоторых СУБД из данного движения

couchDB

Авторы:

Damien Katz, JanLehnardt, Noah Slater, Christopher Lenz, j. ChrisAnderson.

Разработчик — Apeche SoftwareFoundation.

CouchDB — документно-ориентированнаясистема управления базами данных, не требующая описания схемы данных. Эта программа является свободной, открытой и написана на языке Erlang. CouchDB можно рассматривать как сервер веб-приложений; для реализации этой идеи в нее встроенпроизводительный веб-сервер, а программный код, как и данные, сохраняется в той же базе данных. для автоматизации работы с приложениямиCouchDB используется утилита CouchApp.

Подобно иным документно-ориентированнымСУБД (Mnesia, Lotus Notes, MongoDB), и в отличие от реляционных СУБД, CouchDB предназначена для работы с полу-структурированной информацией и имеет следующие особенности:

Данные сохраняются не в строках и колонках, а в виде JSON-подобных документов, моделью которых является не таблицы, а деревья;

Не поддерживается типизация элементов данных, т. е. сопостовление отдельным полям документов типов integer, DATE и пр. вместо этого пользователь может написать функцию-валидатор (функцию проверяющую соответствие документа определенному формату);

Целостность базы данных обеспечивается исключительно на уровне отдельных записей (но не на уровне связей между ними);

Связи между таблицами или записями принципиально не поддерживаются, соответственно опирация объединения (JOIN) между таблицами не определена;

Для построения индексов и выполнения запросов используются функции представления (view);

Функции-валидаторы, функции-представления, функции-фильтры сохраняются в текстовом виде в самой базе данных;

Эти функции написаны, какправило, на языках JavaScript или Erlang, а для их выполнения запускается отдельный сервер запросов, взаимодействие с которым происходит посредствам сокетов (программных интерфейсов) и JSON-протокола;

каждой базе данных в системе CouchDB соответствует единственное B-дерево (структура данных, дерево поиска);

каждое B-дерево хранится в виде отдельного файла на диске;

одновременно может быть запущенно несколько потоков для чтения базы данных и только один — для записи; ЦЕЛОСТНОСТЬ БАЗЫ ДАННЫХ ОБЕСПЕЧИВАЕТСЯ ТОЛЬКО ПРИ ЗАПИСИ ДАННЫХ НА ДИСК;

представления хранятся в базах данных и их индексы обновляются непрерывно, однако при каждом обновлении функций представления или отображения обновляется всё B-дерево целиком;

при обработке данных с помощью функций-представлений используется упрощённая модель технологии MapReduse, что позволяет производить параллельные вычисления, в том числе и на многоядерном процессоре;

распределение вычислений на несколько узлов не поддерживается — вместо этого используется миханизм репликации (копирования данных из одного источника на множество других и наоборот);

обработка данных с помощью цепочки последовательных функций MapReduse не поддерживается;

поддерживается вертикальная масштабируемость, что означает поддержку не только огромных кластеров, но и портативных устройств;

внешний интерфейс (API) к данной СУБД построен на основе архитектуры REST, то есть сама база данных, отдельные записи, отображения и запросы — суть ресурсы, которые имеют уникальный адрес (URL) и поддерживают операции GET, PUT, POST, DELETE;

поэтому для взаимодействия с базой данных было написано много клиентских библиотек, в том числе на таких языках JavaScript, PHP, Ruby, Python и Erlang;

взаимодействие между отдельными компонентами СУБД, то есть с серверами представлений осуществляется опять-таки с помощью текстового протокола, а данные передаются в формате JSON;

это позволило использовать различные языки программирования для написания этих компонентов — Java, Python, JavaScript и пр.

CouchDB используется во многих программных продуктах и на множестве веб-сайтов, в том числе:

UbuntuOne, Firefox, TomBoy, Akonadi, Evolution — для синхронизации адресов, заметок и закладок.

Ajatus — распределённая CRM-система.

Mozilla Raindrop — агрегатор сообщений электронной почты, социальных сетей, систем обмена мгновенными сообщениями (Skype, Jabber).

eXist — СУБД с открытым исходным кодом, полностью основанная на технологии XML.

В отличие от большинства систем управления базами данных, eXist использует XQuery, язык который является рекомендацией консорциума W3C.

Apache Jackrabbit

Тип — хранилище данных.

Разработчик — Apache Software Foundation.

Написана на Java.

ОС — кросс-платформенное программное обеспечение.

Apache Jackrabbit — хранилище данных с открытым исходным кодом для платформы Java.

Проект Jackrabbit был начат 28 августа 2004 года, когда компания Day Software начала разработку API хранилища содержимого для Java (JCR). Jackrabbit также был использован как пример реализации JCR-170 и JCR-283.

Проект вышел из «инкубатора» Apache 15 марта 2006 года и сейчас является проектом верхнего уровня в Apache Software Foundation. JCR определяет API для разработчиков приложений (и фреймворков), которое позволяет взаимодействовать с современными хранилищами содержимог, предоставляющими такие сервисы поиск, версионирование, транзакции и т. д.

Lotus notes

тип — Groupware.

Разработчик — IBM Lotus Software.

Написана на Java/Eclipse, C и C++.

ОС — кросс-платформенное ПО.

IBM Lotus Notes (также Lotus Notes, Lotus Notes/Domino) — программный продукт, платформа для автоматизации совместной деятельности рабочих групп (Groupware).

Производится компанией IBM Lotus Software, входящей в компанию IBM Software Group.

Lotus Notes является платформой для построения приложений автоматизации управленческих и документных процессов. Особенностью системы является объектно-ориентированная архитектура, благодаря которой возможно создание информационных систем, автоматизирующих работу со сложноструктурированными данными и неформализованными динамическими процессами. В составе программного продукта содержатся только базовые функции, позволяющие организовывать работу распределённых рабочих групп и создавать приложения автоматизации процессов, поэтому Lotus Notes некорректно считать законченной системой автоматизации деятельности предприятия (так же как, например, не может считаться бухгалтерской системой MS SQL сервер). Lotus Notes — платформа для таких приложений. Системы электронного документооборота и другие законченные решения на платформе Lotus Notes/Domino разрабатывают и распространяют другие сторонние производители ПО.

Основные функции входящие в базовую поставку Lotus Notes/Domino Standard версии 8. 5:

Среда исполнения приложений автоматизации групповой деятельности;

Криптозащита (шифрование и электронная подпись);

Клиент электронной почты;

Почтовый сервер;

Персональный и групповой календари, планировщик задач;

Набор офисных приложений IBM Lotus Symphony (текстовый редактор, электронные таблицы, подготовка презентаций);

Клиент среды обмена мгновенными сообщениями (Instant Messenger) Lotus Sametime (сервер Sametime является самостоятельным продуктом);

Веб-браузер;

Веб-сервер;

Сервер каталогов LDAP (облегченный протокол доступа к каталогам);

Сервер приложений;

Репликация — синхронизация между дистанционно удалёнными экземплярами баз данных;

Службы интеграции данных DECS (Domino Enterprise connection servisis).

Особенности.

Значимой особенностью является кроссплатформенность Lotus Notes. Текущая версия сертифицирована IBM для работы со следующими операционными системами:

Сервер Lotus Domino — Windows (32 и 64 бит), Linux (Red Hat, SUSE), Solaris, i5/OS (OS/400), AIX, z/OS (OS/390);

Клиент Lotus Notes — Windows (32 b 64 бит), Mac OS, Linux.

Масштабируемость.

Вертикальная масштабируемость обеспечивается следующими возможностями:

Увеличение производительности аппаратной платформы, на которой установлен сервер.

Достаточно простая замена аппаратной и даже программной платформы (операционной системы) сервера на более производительную. Перенос данных может быть осуществлён даже обычным копированием.

Горизонтальная масштабируемость обеспечивается следующими возможностями:

Распределение нагрузки достигается путем распределения по разным серверам Lotus Domino клиентов, приложений и функций (задач сервера Domino). перераспределить нагрузку сравнительно просто на уже работающей инфраструктуре сети Lotus Domino, запуская и останавливая задачи сервера Domino или назначая «домашние» сервера пользователям и перенося приложения с сервера на сервер прямо на работающих серверах.

Кластеризация серверов Lotus Domino.

Организация и переконфигурация кластеров Domino возможна на работающей инфраструктуре серверов Domino (для включения сервера к кластер даже не требуется его перезагрузка).

Репликация.

Быстрая разработка (RAD) и развёртывание приложений. Для разработки приложений Domino Designer предоставляет разработчикам развитые сервисы для разработки документоориентированных приложений. Программный код и визуальные формы приложений физически храняться в базах данных, в которых они используются и выполняются.

При внесении изменений в программный код или форму изменение становится доступным всем пользователям и серверам, получающим доступ к базе данных, в которой хранятся изменённые код или форма. На другие сервера изменения поступают посредствам репликации при первом же сеансе.

Автономное выполнение приложений.

Клиент Lotus Notes позволяет локально (на компьютере пользователя) хранить базы данных Lotus Notes, реплицировать их с сервером Domino, работать с локальными базами данных при отсутствии подключения к серверу Domino, исполнять программный код сервера в локальных базах данных. Данная функциональность поддерживает полнофункциональную работу пользователя в отключенном от сервера состоянии (например, на ноутбуке). Изменение на локальном (для пользователя) компьютере и на сервере взаимно синхронизируются посредствам репликации.

Инфраструктура управления открытыми ключами (PKI).

Криптофункции с использованием открытых ключей — шифрование и электронная цифровая подпись — являются базовыми сервисами ядра Lotus Notes. Каждый пользователь при регистрации получает пару ключей: открытый ключ хранится в общей (публичной) адресной книге и доступен (для считывания) пользователям с сервера, а секретный ключ хранится в идентификационном файле пользователя локально.

Электронная цифровая подпись используется при аутентификации сервером пользователя и/или сервера, при определении уровня доверия выполняемому коду, при проверке достоверности почтовых сообщений, документов (записей в БД) и отдельных полей.

Шифрование применяется для почтовых сообщений, целиком баз данных, отдельных документов (записей в БД), отдельных полей и сетевого трафика между двумя серверами Lotus Domino, а также между сервером и клиентом Lotus Notes.

MongoDB

Тип — документо-ориентированная СУБД.

Разработчик — MongoDB.

Написана на C++.

ОС — кроссплатформенное программное обеспечение.

MongoDb — документо-ориентированная система управления базами данных с открытым исходным кодом, не требующая описания схемы таблиц.

Написана на языке C++ и распространяется в рамках лицензии AGPLv3.

При разработке авторы изходили из необходимости специализации баз данных, благодаря чему им удалось отойти от принципа «один размер подо всё». За счёт минимизации семантики для работы с транзакциями появляется возможность решения целого ряда проблем, связанных с недостатком производительности, причём горизонтальное масштабирование становится проще. Используемая модель документов хранения данных (JSON/ BSON) проще кодируется, проще управляется (в том числе за счет применения так называемого «бессхемного стиля» (schemaless style), а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии. Нереляционный подход весьма удобен для создания баз данных, у которых горизонтальное масштабирование подразумевает разворачивание на множестве машин. Возможность обеспечивать наилучшую производительность должна существовать параллельно с поддержкой более обширного функционала, чем это позволяет использование пар «ключ-значение» (в чистом виде). Технология баз данных должна работать везде, начиная с серверов пользователей и виртуальных машин и и заканчивая облачными технологиями. MongoDB, по мнению разработчиков, должна заполнить разрыв между между простыми хранилищами данных типа «ключ-значение» (быстрыми и легко масштабируемыми) и большими реляционными СУБД (со структурными схемами и мощными запросами).

Основные возможности данной СУБД:

Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных);

Достаточно гибкий язык для формирования запросов;

Динамические запросы;

Полная поддержка индексов (объектов базы данных, созданных с целью повышения производительности поиска данных);

Профилирование запросов;

Быстрые обновления «на месте»;

Эффективное хранение двоичных данных больших объёмов, например, фото и видео;

Журналирование (запись событий) операций, модифицирующих данные в БД;

Поддержка отказоустойчивости и масштабируемости:

Асинхронная репликация, набор реплик и шардинг;

Может работать в соответствии с парадигмой Mapreduce.

СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документо-ориентирванным СУБД (CouchDB, пр.), MongoDB не является реляционной СУБД.

Amazon SimpleDB

Amazon SimpleDB — сервис, предоставляющий ядро функций базы данных, а именно индексирование данных и выполнение запросов.

Данный сервис тесно взаимодействует с сервисами Amazon S3 и Amazon EC2, в совокупности они предоставляют возможности для хранения, обработки запросов и данных в облаке, в результате повышается производительность. Входит в инфраструктуру сервисов Amazon и web Servisis.

С помощью SimpleDB можно:

Создать новый домен для размещения вашего уникального набора структурированных данных;

Выполнить операции GET, PUT и DELETE над элементами в вашем домене, с помощью пар атрибут-значение, которые связаны с каждым элементом. Сервис автоматически индексирует данные, которые добавляются в домен, чтобы их можно было быстро получить, нет необходимости заранее определять схемы или изменить их, если новые данные добавлены позже. Каждый элемент может иметь до 256 значений атрибутов. Каждый атрибут может варьироваться от 1 до 1024 байт;

Позволяет выполнять запросы с помощью SELECT API или QUERY API и с помощью набора операторов:

=, !, <, >, < =, > =, STARTS-WITH, AND, OR, NOT, ENTERSECTION и UNION. Также есть возможность сортировки результатов с помощью оператора SORT. SimpleDB предназначен для использования приложений в реальном времени и оптимизировано для этого;

Платить только за ресурсы, которые вы потребляете.

Заключение

Движение NoSQL резко возрастает с 2009 года благодаря увлечению большого количества компаний связанных с использованием больших объёмов данных. Появляется все больше систем позволяющих организовывать и поддерживать огромные массивы данных, обрабатывать и контролировать эти данные.

Источники

1. http://ru. wikipedia. org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

2. http: //ru. wikipedia. org/wiki/NoSQL

3. http: //ru. wikipedia. org/wiki/%D0%A0%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%A1%D0%A3%D0%91%D0%94

4. http: //habrahabr. ru/blogs/nosql/77 909/

ПоказатьСвернуть
Заполнить форму текущей работой