Знакомство с CouchDB
NoSQL был одной из самых обсуждаемых тем на протяжении нескольких прошедших месяцев. В этом уроке мы познакомим вас с CouchDB, которая не работает с SQL запросами, а также дадим хороший старт для самостоятельного изучения.
Что такое NoSQL?
NoSQL - это специальная концепция, которая позволяет вам быть более раскрепощённым в запросах к БД.
NoSQL [не только SQL] - это концепция, предназначенная для осуществления доступа к группированным данным, не использующая реляционную модель данных. Фундаментальные различия кроются в способе осуществлении доступа и актуализации данных, а также их размещении. Например, когда вы должны были бы хранить данные о каком-то счете, то вам требовалась специальная таблица, работа с которой предусматривала знание особого серверного языка для того, чтобы преобразовать эти данные в реальные объекты. Используя NoSQL, вам нужно хранить только данные о счёте. NoSQL абсолютна не превиредлива к структуре хранения данных, что позволяет вам не заморачиваться насчёт структуры таблиц — вы можете просто начать хранить новые записи.
Продолжим приведённый выше пример. Некоторые счета могут содержать число VAT, другие нет. В обычном привычном подходе, вам необходимо сообщить таблице, что значение этого поля (VAT) может иметь значение, а также может быть равно просто null. В свою очередь, в NoSQL, вы можете сохранить как счета без числа VAT, так и счёт с этим значением — строгой схемы тут нет. Имейте в виду, что NoSQL - не совсем совершенное орудие. Если ваши данные лучше ложатся на реляционную модель, то лучше использовать SQL-ские базы данных, иначе можно потерять много времени и сил.
Запросы в базах данных NoSQL
Принцип MapReducing содержит несколько преимуществ по сравнению с SQL-скими базами данных, потому что элементарные задачи могут выполняться быстрее, чем это происходит в реляционных Системах Управления Базами Данных.
Базы данных, основанные на NoSQL используют маппинг для создания запросов и индексации баз данных. В реляционных СУБД вы выполняете запрос, который соединяет множество таблиц для того, чтобы вытащить пачку данных, а затем с помощью специальных операций преобразовать эти данные во что-то, с чем можно будет работать в дальнейшем. В NoSQL вы используете маппинг для того, чтобы сформировать 'представление' (другими словами, набор результатов).
Маппинг, по сути, просто производит извлечение данных, уменьшая их агрегацию. Чем больше вы привыкли к Реляционным Системам Управления Базами Данных, тем непонятней будет для вас этот урок. Ну ничего, надо же как-то освежать свои знания. MapReducing превосходит SQL-запросы, потому что различного рода задачи могут быть распределены между многократными узлами, что является невозможным в Реляционных СУБД. И так далее...
Знакомство с CouchDB
Несколько фактов о CouchDB, которые вам не помешает знать:
CouchDB - это база данных, которая ориентируется на хранение данных в формате JSON, написанная на языке программирования Erlang.
- Это действительно сильный конкурент на своём рынке, созданный для того, чтобы упростить многие задачи, которые можно будет осуществить на различных устройствах без всяких осложнений.
- Это очередной представитель баз данных, не базирующихся на SQL запросах.
- Этот инструмент входит в пакет вместе с проектом Apache.
- CouchDB позволяет приложениям хранить данные в формате JSON и осуществлять доступ к ним через особый интерфейс.
- Это новый способ хранения, индексации и осуществления доступа к данным.
Главные преимущества CouchDB
- JSON документы – все, что вы хотите сохранить в CouchDB должно быть преобразовано к формату JSON.
- REST интерфейс – все операции, включая вставку данных, в CouchDB осуществляются через HTTP.
- Множественная репликация – вы можете использовать неограниченное количество 'устройств', создавая особенные и неповторимые топологии репликации.
- Пригодный для офлайнового использования – CouchDB может быть реплицирован к различным устройствам (к примеру, таким, как телефоны Android), которые могут менять данные офлайн, а в последствии, сохранять изменения при помощи специальной системы синхронизации, когда сеть будет снова доступна.
- Фильтры репликации – вы можете фильтровать данные, которые хотите тиражировать на различные узлы.
Всё в кучу
CouchDB представляет собой следующий виток развития баз данных, разработанных для работы в сети.
CouchDB позволяет вам писать клиентские приложения, которые будут общаться с нутром программы без какой-либо посреднической серверной стороны, что значительно уменьшает время разработки веб приложений. CouchDB предоставляет более гибкие средства для репликации данных на различные устройства. Работая с CouchDB, вы также можете создать специальные фильтры для определённого пользователя.
Хранение базы данных локально означает, что ваше клиентское приложение может работать без каких-либо задержек. Благодаря этой возможности, ваши пользователи могут получить доступ к своим данным через их мобильный телефон и производить изменения без задержек во времени и в режиме оффлайн. Как только соединение с интернетом будет восстановлено, данные автоматически синхронизируются и актуализируются при помощи функций CouchDB.
CouchDB - это база данных, разработанная для того, чтобы дать новый виток развития интернет приложениям, которые основываются на десктоп интерфейсах.
Шаг 1 – Установка CouchDB
Самый легкий способ установки CouchDB на вашу систему заключается в том, чтобы перейти на сайт CouchOne (http://www.couchone.com/get) и загрузить установочный файл CouchDB специально для вашей операционной системы — в моём случае это OSX. Загрузите zip файл, распакуйте его и поместите CouchDBX в папку приложения.
Далее запускаем CouchDBX.
Шаг 2 – Добро пожаловать в Futon
После того, как вы запустите CouchDB, вы должны увидеть панель управления Futon. Если, по какой-либо причине, осуществить доступ к интерфейсу не удалось, то то же самое можно проделать через ваш браузер. Если вы посмотрите в логи, CouchDBX сообщит вам, что CouchDB был запущен по адресу http:// 127.0.0.1:5984/ (может отличаться на вашей системе). Откройте браузер и зайдите на адрес http://127.0.0.1:5984/_utils/, после чего вы должны увидеть Futon.
Оставшуюся часть урока я будут обращаться к панели управления Futon через Firefox. Для удобства у меня также стоит Firebug и активирована консоль, с помощью которой я могу отслеживать все HTTP запросы, которые Futon будет отправлять. Это очень хорошо, так как ваше приложение может функционировать также, как и Futon. Давайте двинемся вперёд и создадим базу данных, название которой будет mycouchshop.
jQuery плагин CouchDB
Futon фактически использует jQuery плагин, чтобы взаимодействовать с CouchDB. Вы можете найти по адресу http://127.0.0.1:5984/_utils/script/jquery.couch.js (прошу отметить тот момент, что ваш порт может отличаться). Разобрав тот код, вы сможете узнать много интересных вещей, которые позволяют скрипту взаимодействовать с CouchDB.
Шаг 3 – CouchDB и пользователи
По умолчанию CouchDB абсолютно открыт, что даёт возможность каждому пользовательскому администратору права на доступ ко всем базам данных. Это очень удобно для разработки. Давайте двинемся дальше и создадим администратора. В нижнем правом углу вы увидите следующее: "Добро пожаловать в панель администрирования! Все являются администраторами! Исправляйте положение”.
Не медлите и щёлкайте по ссылке fix this, что позволит вам указать имя пользователя и пароль. Эти действия помогут вам создать учетную запись администратора и предоставить анонимный пользовательский доступ к операциям чтения и операциям записи на всех базах данных. Внимание: это не касается операций, проводимых над конфигурацией.
Ещё немного о пользователях
Для CouchDB было бы неблагоразумным создание единственного супер пользователя и предоставление ему прав на чтение и запись.
Поначалу вы можете быть немного обескуражены тем, как представлены пользователи в CouchDB, особенно если вы привыкли к созданию различных пользователей для всех своих приложений, а затем управлять ими самостоятельно в пределах пользовательской таблицы. В CouchDB было бы неблагоразумно создание одного единственного супер пользователя и предоставление ему прав доступа на чтение и запись. Если вы принимаетесь делать клиентскую часть приложения, то данные об этой учетной записи будут расположены в вашем исходном коде JavaScript.
В СouchDB существует встроенная система создания пользователя и авторизации. Вы можете создать пользователей при помощи jQuery плагина, используя $.couch.signup(). Таким образом, вы можете создавать пользователей вашей системы. Пользователи представляют собой те же записи в формате JSON, так что вы можете назначать им любые дополнительные атрибуты, которые вам понадобятся. Например, электронная почта. Для того, чтобы прикрепить одни и те же атрибуты к множеству пользователей, вы можете создать специальные группы в пределах CouchDB.
Шаг 4 – Создание документа
Теперь давайте создадим наш первый документ, используя Futon:
- Откройте базу данных mycouchshop.
- Щелкните “New Document”.
- Щелкните, "Add Field”, чтобы начать добавлять данные к документу JSON. Заметьте, что поле ID уже предварительно создано. Я очень не советую изменять его. Добавьте ключевое "имя" со значением “Nettuts CouchDB Tutorial One”.
- Убедитесь, что вы отметили галочкой каждый атрибут, чтобы сохранить изменения.
- Щелкните, "Save Document”.
Теперь поднимитесь на уровень выше, к нашей базе данных.Теперь вы можете увидеть только что созданный документ с некоторыми ключами.
Шаг 5 – Обновление документа
CouchDB - это база данных, в которую можно что-то добавлять — новые обновления, добавленные к базе данных, не перезаписывают старую версию. Каждое новое обновление к документу JSON с существующим ранее ID добавит новую версию обновлённого документа. Для этого используется автоматически вставленный ключ версии:
- При просмотре содержания базы данных mycouchshop щелкните по единственной доступной записи.
- Добавьте другой атрибут с ключевым "type" и значением "production".
- Нажмите “Save Document”.
После сохранения новый ключ версии должен быть равен 2. Возвращаясь к представлению базы данных mycouchshop. Вы по-прежнему должны видеть один документ, т.к. по умолчанию отображается только самая последняя версия.
Версии
В то время как CouchDB использует внутренне версии, попытайтесь не полностью надеяться на него. Версии вполне легко могут быть убраны через панель управления вашими базами данных. CouchDB использует версии в качестве части функциональности репликации.
Шаг 6 – Создание документа, используя cURL
Я уже упомянул, что CouchDB использует REST интерфейс, так что все запросы мы можем просмотреть через консоль в Firebug. Теперь давайте воспользуемся терминалом для того, чтобы создать документ, используя cURL.
Во-первых, давайте создадим документ JSON с содержанием, указанным ниже, и сохраним с именем person.json на рабочий стол.
{ "forename": "Gavin", "surname": "Cooper", "type": "person" }
Затем откройте терминал и выполните команду cd ~/Desktop/, а затем curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @person.json -H "Content-Type: application/json". CouchDB должен был возвратить документ JSON, подобный тому, что вы можете найти ниже.
{"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":"1-abadd48a09c270047658dbc38dc8a892"}
Это ID и число, представляющее версию вставленного документа. CouchDB использует седующие правила:
- POST – создает новую запись
- GET – извлекает записи
- PUT – обновляет запись
- DELETE – удаляет запись
Шаг 7 – Просмотр всех документов
Вы можете осуществить проверку вставки нового документа в базу mycouchshop следующим образом: перейдя по адресу curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs.
Шаг 8 – Создание простой функции
Теперь давайте рассмотрим другой способ просмотра всех документов:
- В пределах Futon щелкните по выпадающему меню и выберите “Temporary View”.
- Скопируйте код, который вы увидите.
function (doc) { if (doc.type === "product" && doc.name) { emit(doc.name, doc); } }
- Кликните на run , и вы должны будете увидеть единственный продукт, который мы добавили ранее.
- Вы также можете сохранить полученное представление.
После создания простой функции мы можем теперь запросить это представление и увидеть, что передаваемое содержание по HTTP, используя следующую команду: curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products.
Так мы получаем ID документа и версию по умолчанию.
Шаг 9 – Усложняем ситуацию
Давайте добавим другой продукт к нашей базе данных, предварительно внеся новый ценовой атрибут со значением 1.75 нашему первому продукту.
{ "name": "My Product", "price": 2.99, "type": "product" }
Для нашего нового представления мы будем использовать следующее. Во-первых:
function (doc) { if (doc.type === "product" && doc.price) { emit(doc.id, doc.price); } }
Вышеупомянутая функция просто проверяет, является ли введенный документ продуктом и есть ли у него цена. Если эти условия соблюдены, то используем следующий код.
function (keys, prices) { return sum(prices); }
Вышеупомянутая функция возвращает цену, используя одну из встроенных функций в CouchDB.
Заключение
В этом уроке мы начали знакомство с CouchDB. Я уверен, что эта тема будет для большинства из вас нова и сложна. Но мне кажется, что в некоторых случаях, нужно отойти от традиционной работы с базами данных и воспользоваться какой-то альтернативой, если это конечно облегчит вам работу!
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/0qZ5L00x9Nk/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.