В этом посте я просто хочу показать, как легко начать работу с Couchbase, а также объяснить, как «запрашивать» данные. Основные шаги этого урока:
- Установить Couchbase
- Создать данные
- Данные запроса
Я постараюсь опубликовать больше статей, если у меня будет время показать, как использовать Couchbase из ваших приложений (начиная с Java).
Предпосылки:
- Не может быть проще: Couchbase 2.0 доступна здесь . (В настоящее время в предварительной версии для разработчиков)
Couchbase 101: вставка и запрос данных Установка
Я использую Couchbase в Mac OS X, поэтому позвольте мне описать установку в этой среде. Если вы используете другую операционную систему, просто посмотрите документацию Couchbase.
Установка на Couchbase очень (очень!) Быстра:
- Загрузите Zip-файл Mac OS X.
- Дважды щелкните загруженный установочный файл Zip, чтобы извлечь содержимое. Это создаст один файл, приложение Couchbase.app.
- Перетащите файл Couchbase.app в выбранную папку установки, например в папку системных приложений.
Запустите и настройте сервер Couchbase
Чтобы запустить Couchbase Server, просто дважды щелкните по Couchbase Server. Как только сервер запущен, в OS X Menu добавляется новый значок, указывающий, что Сервер запущен и работает.
Теперь вы можете настроить свой экземпляр Couchbase, для этого вам просто нужно получить доступ к консоли администратора, доступной по следующему адресу http://127.0.0.1:8091 (при необходимости измените IP-адрес), или просто перейдя в меню Couchbase и нажмите на кнопку Открыть консоль администратора.
- Экран приветствия: нажмите «Настройка»
- Установите конфигурацию диска и кластера. В моем случае я сохраняю расположение по умолчанию для хранения на диске. Просто настройте размер использования памяти для вашего экземпляра, например, 800 МБ. Пока что у нас есть один экземпляр, поэтому нет необходимости присоединяться к кластеру.
- Выберите для создания образца данных. Это будет интересно узнать больше о данных и представлениях.
- Создайте контейнер по умолчанию (используйте только для тестирования). Ведро используется Couchbase для хранения данных. Это можно сравнить с «базой данных» в мире РСУБД.
- Настройте уведомления об обновлениях, чтобы получать оповещения при выпуске новой версии Couchbase
- Сконфигурируйте сервер с последним шагом, используя имя пользователя и пароль администратора
- Когда это будет сделано, вы автоматически будете перенаправлены на консоль администратора.
Это оно! Вы готовы использовать свой сервер Couchbase.
Couchbase имеет много интересных функций, особенно в отношении масштабируемости и эластичности, но не в этой статье давайте сосредоточимся на основах:
- Вставьте некоторые данные и запросите их
Вставить данные
Couchbase имеет много способов манипулировать данными из вашего любимого языка программирования с использованием различных клиентских библиотек: Java, Python, PHP, Ruby, .Net, C. А пока давайте используем консоль администратора для создания и запроса данных.
Couchbase может хранить данные любого типа, но когда вам нужно манипулировать некоторыми данными со структурой, лучше всего использовать JSON Documents. Итак, давайте использовать консоль и создавать документы.
Для создания новых документов в вашей базе данных, нажмите на вкладку «Базы данных». Если вы установили пример, вы увидите 2 сегмента: default и gamesim-sample.
Давайте создадим новые документы в корзине по умолчанию:
- Нажмите на кнопку Документы
- Нажмите на Создать документ
- Поскольку каждый документ должен иметь идентификатор, например, 100.
- Couchbase сохранит документ и добавит некоторые метаданные, такие как _rev, $ flags, expiration
- Добавьте в документ новые атрибуты, которые описывают сотрудника: Имя, Департамент и Зарплата, затем сохраните его. Вам просто нужно обновить объект JSON значениями
{
«_Id»: «100»,
«Имя»: «Томас»,
«Отдел»: «Продажи»,
«Зарплата»: 5000
}
Повторите операцию с некоторыми другими сотрудниками:
1
2
3
4
5
|
200 ,Jason,Technology, 5500 300 ,Mayla,Technology, 7000 400 ,Nisha,Marketing, 9500 500 ,Randy,Technology, 6000 501 ,Ritu,Accounting, 5400 |
Теперь у вас есть список сотрудников в вашей базе данных. Это было легко, не так ли? Давайте теперь запросить их.
Запросить доступ к данным документа непосредственно из его идентификатора
Прежде всего, вы можете быстро получить доступ к документу, используя простой HTTP-запрос, используя его идентификатор. Например, чтобы получить доступ к Mayla с идентификатором 300, просто введите следующий URL:
- http://127.0.0.1:8092/default/300
В этом URL у вас есть:
- 8092 — это REST-порт Couch API, используемый для доступа к данным (где 8091 — порт для консоли администратора)
- по умолчанию это корзина, в которой хранится документ
- 300 — идентификатор документа
Поиск ваших данных с запросами
Итак, мы увидели, как вы можете получить доступ к одному документу. Но что, если мне нужно это:
- «Дайте мне всех сотрудников технологического отдела»
Для достижения такого запроса необходимо создать представления. Представления используются сервером Couchbase для индексации и поиска ваших данных. Представление — это функция Map, написанная на JavaScript, которая генерирует список значений ключей, который соответствует логике, которую вы поместили в функцию Map. Обратите внимание, что этот ключ, значение теперь индексируется и сортируется по ключу. Это важно, когда вы запрашиваете ваши данные.
Итак, давайте создадим новый вид из консоли администратора:
- Нажмите на вкладку «Представления» (убедитесь, что вы находитесь в ведре по умолчанию)
- Нажмите «Создать вид разработки»
- Введите название документа и вида:
- Название документа: _design / dev_dept
- Название представления: отдел
Поскольку нам нужно предоставить список сотрудников, которые являются частью технологического отдела, нам нужно создать представление, использующее отдел в качестве ключа , поэтому функция карты выглядит следующим образом:
1
2
3
|
function (doc) { emit(doc.dept, null ); } |
Сохранить вид
Эта функция берет документ и создает список, который содержит «dept» в качестве ключа и ноль в качестве значения. Само значение не так важно в нашем случае. Простое правило: не помещайте слишком много данных в значение, так как в конце сервер Couchbase создает индекс с этой картой. Увидим, что Couchbase позволяет разработчику легко получать информацию о документе при доступе к представлению.
Нажмите на кнопку «Показать результаты», результат будет выглядеть так:
1
2
3
4
5
6
7
8
9
|
{ "total_rows" : 6 , "rows" :[ { "id" : "501" , "key" : "Accounting" , "value" : null }, { "id" : "400" , "key" : "Marketing" , "value" : null }, { "id" : "100" , "key" : "Sales" , "value" : null }, { "id" : "200" , "key" : "Technology" , "value" : null }, { "id" : "300" , "key" : "Technology" , "value" : null }, { "id" : "500" , "key" : "Technology" , "value" : null } ] } |
Как мы видели ранее, к документу можно обращаться по одному URL-адресу, он одинаков для представлений. Например, вы можете получить доступ к только что созданному нами представлению, используя следующий URL:
Теперь можно использовать параметр запроса для фильтрации результатов, используя параметр ключа со значением, введенным с использованием строки JSON:
Результат этого запроса теперь:
1
2
3
4
5
6
|
{ "total_rows" : 6 , "rows" :[ { "id" : "200" , "key" : "Technology" , "value" : null }, { "id" : "300" , "key" : "Technology" , "value" : null }, { "id" : "500" , "key" : "Technology" , "value" : null } ] } |
У вас есть много других параметров, которые вы можете использовать при доступе к представлению для управления размером, временем ожидания,…. Один из них довольно интересен — include_docs, который просит Couchbase включить в результат все содержимое документа. Так что если вы позвоните:
Результат:
1
2
3
4
5
6
|
{ "total_rows" : 6 , "rows" :[ { "id" : "200" , "key" : "Technology" , "value" : null , "doc" : { "_id" : "200" , "_rev" : "1-1de6e6751608eada0000003200000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Jason" , "dept" : "Technology" , "salary" : 5500 }}, { "id" : "300" , "key" : "Technology" , "value" : null , "doc" :{ "_id" : "300" , "_rev" : "1-f3e44cee742bfae10000003200000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Mayla" , "dept" : "Technology" , "salary" : 7000 }}, { "id" : "500" , "key" : "Technology" , "value" : null , "doc" : { "_id" : "500" , "_rev" : "1-05780359aac8f3790000003200000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Randy" , "dept" : "Technology" , "salary" : 6000 }} ] } |
Давайте теперь создадим немного более сложное представление, отвечающее следующему бизнес-требованию: «Дайте мне всех сотрудников с зарплатой от 5000 до 6000»
Итак, теперь вы знаете, что вам нужно создать новое представление с окладом в качестве ключа, давайте со следующей функцией Map:
1
2
3
|
function (doc) { emit(doc.salary, null ); } |
Couchbase автоматически сортирует ключ при создании / обновлении индекса, поэтому давайте будем использовать параметры startkey и endkey при вызове представления. Итак, давайте назовем представление со следующего URL:
Результат:
1
2
3
4
5
6
7
|
{ "total_rows" : 6 , "rows" :[ { "id" : "100" , "key" : 5000 , "value" : null , "doc" :{ "_id" : "100" , "_rev" : "1-0f33580d780014060000002e00000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Thomas" , "dept" : "Sales" , "salary" : 5000 }}, { "id" : "501" , "key" : 5400 , "value" : null , "doc" :{ "_id" : "501" , "_rev" : "1-b1fe5bc79637720e0000003100000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Ritu" , "dept" : "Accounting" , "salary" : 5400 }}, { "id" : "200" , "key" : 5500 , "value" : null , "doc" :{ "_id" : "200" , "_rev" : "1-1de6e6751608eada0000003200000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Jason" , "dept" : "Technology" , "salary" : 5500 }}, { "id" : "500" , "key" : 6000 , "value" : null , "doc" :{ "_id" : "500" , "_rev" : "1-05780359aac8f3790000003200000000" , "$flags" : 0 , "$expiration" : 0 , "name" : "Randy" , "dept" : "Technology" , "salary" : 6000 }} ] } |
Вывод
В этой короткой статье вы научитесь:
- Установить Couchbase
- Создание данных с помощью консоли администратора
- Запрос данных с представлениями
Когда у меня будет больше времени, я напишу еще одну статью, которая делает то же самое с Java и другими языками.
Ссылка: Couchbase 101: устанавливайте, храните и запрашивайте данные у нашего партнера по JCG Тугдуала Граля в блоге Tug’s Blog .