ЛР3.Ч1. Основи роботи з хмарними сервісами

4. Перший запуск і робота з хмарним сервісом Cloudant

IBM Cloudant - це документно-орієнтована база даних як служба (DBaaS). Вона зберігає дані у вигляді  документів формату JSON.

4.1. Запуск сторінки адміністрування Cloudant (Cloudant Dashboard)      

Використовуючи список ресурсів перейдіть на вікно керування сервісом Cloudant (Cloudant Dashboard). У вікні Manage, натисніть “Launch Cloudant Dashboard” для запуску сторінки адміністрування сервісу.

4.2. Вікна налаштування та адміністрування Cloudant      

Після запуску вікна адміністрування Cloudant,  автоматично відкриється вкладка Databases (рис.23). На цій вкладці видно всі бази даних (документи)  Cloudant. Після першого запуску Cloudant в переліку буде тільки база даних nodered. 

рис.23.

      Передивіться усі сторінки зі вкладок лівої бічної панелі (рис.23). Зокрема подивіться на обмеження підписки на вкладці Account.

4.3. Створення БД       

На вкладці Databases натисніть кнопку «Create Database». Назвіть цю БД  «db1».   

рис.24.

4.4. Запис в БД з хмарного Node-RED      

У даному пункті для запису отриманих даних з пристрою Edge використовуватимуться вузли Cloudant.   

Ознайомтеся з роботою вузлів Cloudant  довідника Node-RED.

Змініть програму у хмарному Node-RED, як це показано на рис.25.

рис.25.

Зробіть розгортання проекту і запустіть на виконання. Перевірте чи пишуться дані в БД.  Запустіть Cloudant Dashboard. В переліку БД зайдіть в базу даних “db1”, натисніть її для перегляду.  У списку документів повинні з’явитися записи, як на рис. 26.

рис.26.

4.5. Перегляд БД з Cloudant Dashboard       

У списку документів виберіть табличне представлення (кнопка Table). Як видно дані відображаються у вигляді таблиці, я якій є поля _id, ramp та sin (рис.27).   

рис.27.

Перегляньте перелік у вигляді списку документів JSON (рис.28). Намагайтеся розібратися в структурі документу.   Детальний опис структури документу наведений за цим і за цим посиланням.  Нижче описані тільки деякі основні поля.

Усі документи повинні мати унікальні поля  _id  та _rev. Поле _id  може формуватися автоматично. Поле _rev є  номером версії. Окрім цих 2-х полів, документ може вміщувати будь які інші поля, відповідно до правил JSON. Поля, що починаються з «_» зарезервовані як службові.

рис.28.

4.6. Читання записів даних БД Cloudant з Node-RED        

Вставте в хмарному Node-RED вузол Cloudant in і модифікуйте програму, як це показані на рис.29.  

Зробіть розгортання проекту і перевірте його роботу.  У вікні відлагодження після запуску Inject повинен сформуватися масив документів за весь час роботи.

 рис.29.

4.7. Добавлення в документи відмітки часу       

Для того, щоб мати можливість заходити дані за часом, необхідно  в записи вставляти також відмітки часу.  Модифікуйте локальну програму в Node-RED так, як це показано на рис.30.

рис.30

Зробіть розгортання та перевірте його роботу.

 

4.8. Формування та перевірка користувацьких запитів find в Cloudant Dashboard        

Для доступу до документів (а також для створення, видалення, модифікації) БД Cloudant використовується HTTP API. Як і всі СУБД, Cloudant приймає запити від клієнтів і повертає відповідь на них. 

  • Для доступу до необхідного документу необхідно вказати його  _id. Це можна зробити, використовуючи запит GET:

https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID

  • Якщо ідентифікатор невідомий можна прочитати усі документи з бази даних задавши параметр _all_docs

https://$ACCOUNT.cloudant.com/$DATABASE/_all_docs

Саме такий механізм використовується в вузлі Cloudant in в Node-RED  в п.6.  

  • Крім цього, IBM Cloudant підтримує пошук документів по індексам з використанням методу POST та параметру _find .

https://$ACCOUNT.cloudant.com/$DATABASE/_find

  • Ще одним механізмом доступу до документів є використання пошукового індексу (search indexes).

https://$ACCOUNT.cloudant.com/$DATABASE/_design/$DDOC/_search/$INDEX_NAME

Для перевірки користувацьких запитів з використанням параметру _find можна скористатися вбудованим редактором запитів Query.  З сторінки Cloudant Dashboard зайдіть в db1. Відкрийте Query і введіть запит, як на рис.31. і натисніть “RUN QUERY”. В результаті повинен буде виданий результат запиту.

рис.31

4.9. Створення пошукових індексів в Cloudant      

Вузол Node-RED “cloudant in” не вміє формувати запити з параметром «find» (але є бібліотеки з вузлами, які вміють), замість цього можна користуватися відбором за пошуковим індексом, який необхідно попередньо створити. У пошуковому індексі необхідно вказати перелік усіх полів, за яким відбувається пошук. У нашому випадку – це поле «ts», за яким необхідно робити вибірку документів з БД.

Детальний опис призначення і порядку створення пошукових індексів наведений на сторінці допомоги.

На сторінці БД db1 створіть новий Search index, як це показано на рис.32. Натисніть “Search Document and Build Index”.

рис.32

 

4.10. Формування користувацьких запитів  в Node-RED        

Модифікуйте програму в в хмарному Node-RED, як це показані на рис.33. Зробіть розгортання проекту і перевірте його роботу.  У вікні відлагодження після запуску Inject повинен сформуватися масив документів за останні 5 хвилин роботи (60 записів). 

рис.33

4.11. Перегляд відібраних даних  в Node-RED за допомогою трендів       

Історичні дані, що записані в Cloudant можна відобразити з використанням Dashboard. Модифікуйте програму, як це показано на рис.34, нижче наведений лістинг функції “->Trend”, яку можне скопіювати для пришвидшення розробки.  Зробіть розгортання проекту і перевірте його роботу.  Відкрийте Веб-інтерфейс і перевірте, там повинні відображатися дані за останні 5 хвилин.

 

var result = msg.payload;

var chart = [{

    "series":["ramp","sin"],

    "data":[],

    "labels":[""]

}];

chart[0].data[0]=[];

chart[0].data[1]=[];

for (var i = 0; i < result.length; i++) {

    chart[0].data[0][i] = {"x":result[i].ts,"y":result[i].ramp};

    chart[0].data[1][i] = {"x":result[i].ts,"y":result[i].sin};

}

msg.payload = chart;

return msg;

рис.34

 

 

Скопіюйте адресу вашої Веб сторінки і відправте її викладачу, це буде звітом до Вашої роботи.

Необов’язкове завдання для самостійного виконання.

4.12. Перегляд даних за вказаний інтервал       

Спробуйте модифікувати програму в хмарному Node-RED так, щоб в користувацькому інтерфейсі вводився початковий час відображення тренду і була можливість змінювати глибину відображення.