NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

Podobne dokumenty
NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

CouchDB. Michał Nowikowski

(Apache) CouchDB. Krzysztof Kulewski 2008

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Zaawansowane aplikacje internetowe

TECHNOLOGIE SIECI WEB

Bazy Danych i Usługi Sieciowe

Zaawansowane aplikacje internetowe laboratorium REST

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Funkcje i instrukcje języka JavaScript

NoSQL & relax with CouchDB

Specyfikacja techniczna. mprofi Interfejs API

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

SIECI KOMPUTEROWE I BAZY DANYCH

MVC w praktyce tworzymy system artykułów. cz. 2

Wykład 03 JavaScript. Michał Drabik

Zdarzenia Zdarzenia onload i onunload

Aplikacje WWW - laboratorium

JQuery. $('#pierwszy').css('color','red').hide('slow').show(3000); $(document).ready(function() { //... tutaj nasze skrypty jquery //...

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Aplikacje WWW - laboratorium

Podstawy programowania w języku JavaScript

MVC w praktyce tworzymy system artykułów. cz. 1

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Programowanie w Internecie

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

Programowanie zorientowane obiektowo. Mateusz Kołecki

Podstawy JavaScript ćwiczenia

I.Wojnicki, Tech.Inter.

DOM (Document Object Model)

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

XML extensible Markup Language. część 5

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Orange Send MMS. Autoryzacja. Metoda HTTP. Parametry wywołania. API wyślij MMS dostarcza wiadomości MMS. Basic POST

NoSQL: Riak. dr inż. Sebastian Ernst Katedra Informatyki Stosowanej

I.Wojnicki, JiTW. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

I.Wojnicki, Tech.Inter.

Bazy Danych i Usługi Sieciowe

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

API transakcyjne BitMarket.pl

Internetowe bazy danych

PHP: bloki kodu, tablice, obiekty i formularze

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Ilość cyfr liczby naturalnej

I.Wojnicki, Tech.Inter.

I.Wojnicki, JiTW. Języki i Technologie Webowe. Protokół HTTP, Przegladarki. Igor Wojnicki

Programowanie i projektowanie obiektowe

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

XML extensible Markup Language. część 5

Pakiet XML Czym jest i z czym się je?

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

O stronach www, html itp..

W tej części dowiemy się, jak rozszerzyć WordPress za pomocą JSON-API. Oto kilka rzeczy, które będziemy robić z wtyczką JSON-API:

Quiz Aplikacja internetowa

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Dokumentacja imapliteapi

TYPO3 eid : AJAX i nie tylko. Artur Cichosz Quintinity Interactive

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Języki programowania wysokiego poziomu WWW

3. Silnik MVC Opis rozdziału Organizacja plików. Mini poradnik: Jak stworzyć grę via WWW.

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Zajęcia 4 - Wprowadzenie do Javascript

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Aplikacje Internetowe termin dodatkowy

JavaScript. Wstęp do podstaw elementów. dr inż. Paweł Boiński, Politechnika Poznańska

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Pozycjonowanie i poruszanie warstw

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Bazy Danych i Usługi Sieciowe

Lista ToDo Aplikacja internetowa

Bazy Danych i Usługi Sieciowe

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Laboratorium 2. def detail(request, question_id): return HttpResponse("Patrzysz na pytanie %s." % question_id)

I.Wojnicki, Tech.Inter.

Wybrane działy Informatyki Stosowanej

server.listen(port, hostname, () => { console.log(`server running at });

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

Tworzenie Stron Internetowych. odcinek 10

Plan prezentacji. System szablonów OPT. OPT Open Power Template. System szablonów. Przedmiot: Internet i jego zastosowanie. Wstęp

CZYM JEST JAVASCRIPT?


Transkrypt:

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 1 / 29 NoSQL Not Only SQL: CouchDB Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 2 / 29 Spis Treści I 1 Motywacja 2 Przetwarzanie dokumentów 3 Przetwarzanie widoków 4 Co dalej?

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 3 / 29 Motywacja CouchDB www.couchdb.org Apache Foundation HTTP JSON Erlang Dokumentacja http: //guide.couchdb.org/editions/1/en/index.html http://wiki.apache.org/couchdb/reference

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 4 / 29 Motywacja A jeżeli JSON nie jest odpowiedni? Domyślnie dokumenty i widoki udostępniaja dane w formacie JSON. Każdy dokument może być udostępniony w dowolnym formacie. Każdy widok może być udostępniony w dowolnym formacie. Trzeba zaprogramować format.

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 5 / 29 Motywacja Przykład: obsługa portalu internetowego Dokumenty: treść kategoria data

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 6 / 29 Motywacja Dokumenty curl -X POST http://awing.ia.agh.edu.pl:5984/portal -H "Content-Type: application/json" -d {"kategoria":"wiadomosci", "tresc":"powstaje portal z CouchDB", "data":"2012-04-20"... {"kategoria":"o mnie", "tresc":"taka sobie firma...", "data":"2012-04-21"... {"kategoria":"wiadomosci", "tresc":"nie potrzeba PHP/Java... tylko kanapa!", "data":"2012-04-21"

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 7 / 29 Motywacja Jak przetwarzać dokumenty i widoki? Dodatkowe funkcje w Design Documents show przetwarzanie pojedynczego dokumentu baza/_design/ddokumentu/_show/funkcja/dokument_id list przetwarzanie widoku baza/_design/ddokument/_list/funkcja/widok Pomocne informacje: http://wiki.apache.org/couchdb/ Formatting_with_Show_and_List

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 8 / 29 Przetwarzanie dokumentów Przetwarzanie dokumentów, funkcja show function(doc,req)

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 9 / 29 Przetwarzanie dokumentów Obiekt req { "info": { "db_name": "mailbox",, "path": [ "mailbox", "_design", "request", "_show", "dump", "foo" ], "peer": "127.0.0.1", "query": {"parametr":"wartosc","inny":"cos", "raw_path": "/mailbox/_design/request/_show/dump/foo",...

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 10 / 29 Przetwarzanie dokumentów Przetwarzanie dokumentów { "_id":"_design/gen", "language": "javascript", "shows": { "pokazhtml": "function(doc,req) { return { headers: { Content-Type : text/html, body : doc.tresc ; ", "pokaztxt": "function(doc,req) { return { headers: { Content-Type : text/plain, body : doc.tresc ; "

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 11 / 29 Przetwarzanie dokumentów Przykłady wywołania http://awing.ia.agh.edu.pl:5984/portal/ _design/gen/_show/pokazhtml/omnie Taka sobie firma... http://awing.ia.agh.edu.pl:5984/portal/ _design/gen/_show/pokaztxt/omnie Taka sobie firma...

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 12 / 29 Przetwarzanie dokumentów Przetwarzanie dokumentów cd. "pokazdoc": "function(doc,req) { wyjscie=json.stringify(doc); return { headers: { Content-Type : text/plain, body : wyjscie ; ", "pokazreq": "function(doc,req) { wyjscie=json.stringify(req.query); return { headers: { Content-Type : text/plain, body : wyjscie ; "

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 13 / 29 Przetwarzanie dokumentów Przykłady http://awing.ia.agh.edu.pl:5984/portal/ _design/gen/_show/pokazdoc/omnie {"_id":"7e9c3bc52bc9804aa3be5dc9c20399c6", "_rev":"1-a488c76f2d8c92c5a7cfb46d044801b8", "kategoria":"o mnie", "tresc":"taka sobie firma...", "data":"2012-04-21", "_revisions":{"start":1,"ids":["a488c76f2d8c92c5a7c http://awing.ia.agh.edu.pl:5984/portal/_design/ gen/_show/pokazreq/omnie?parametr=wartosc&inny=cos {"parametr":"wartosc","inny":"cos"

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 14 / 29 Parametry dla show Przetwarzanie dokumentów "pokaz": "function(doc,req) { if (req.query.co== tresc ) wyjscie=doc.tresc; else if (req.query.co== data ) wyjscie=doc.data; else wyjscie= <b> +doc.data+ </b> +doc.tresc; return { headers: { Content-Type : text/html, body : wyjscie ; ".../portal/_design/gen/_show/pokaz/omnie 2012-04-21 Taka sobie firma....../portal/_design/gen/_show/pokaz/omnie?co=data 2012-04-21.../portal/_design/gen/_show/pokaz/omnie?co=tresc Taka sobie firma...

Przetwarzanie dokumentów Załaczniki "pokazzal": "function(doc,req) { wyjscie=doc.tresc; zal=doc._attachments; for (klucz in zal) { wyjscie+= <br><a href=\"/ +req.info.db_name + / +doc._id+ / +klucz+ \"> +klucz + </a> ; return { headers: { Content-Type : text/html, body : wyjscie; " Taka sobie firma... zdjecie1.jpg zdjecia.jpg zdjecie1.jpg i zdjecia.jpg sa hiperpołaczeniami do zawartości zał aczników. Igor Wojnicki (AGH, KIS) PHP 23 października 2016 15 / 29

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 16 / 29 Przetwarzanie widoków Przetwarzanie widoków, widok { "_id":"_design/gen", "language": "javascript", "views": { "wiadomosci": { "map": "function(doc) { if (doc.kategoria== wiadomosci ) emit(doc.data,doc); ",,

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 17 / 29 Przetwarzanie widoków Przetwarzanie widoków, lista { "lists": { "pokaz": "function(head,req) { start({headers: { Content-Type : text/html ); wyjscie= <ol> ; while (wiersz=getrow()) { wyjscie+= <li><b> +wiersz.value.data + </b> + +wiersz.value.tresc+ </li> ; wyjscie+= </ol> ; send(wyjscie); "

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 18 / 29 Przetwarzanie widoków Obiekt head { "total_rows": 42, "offset": 3

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 19 / 29 Przetwarzanie widoków Przykład http://awing.ia.agh.edu.pl:5984/portal/ _design/gen/_list/pokaz/wiadomosci 1 2012-04-20 Powstaje portal z CouchDB 2 2012-04-21 Nie potrzeba PHP/Java... tylko kanapa! http://awing.ia.agh.edu.pl:5984/portal/ _design/gen/_list/pokaz/wiadomosci?descending=true 1 2012-04-21 Nie potrzeba PHP/Java... tylko kanapa! 2 2012-04-20 Powstaje portal z CouchDB

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 20 / 29 Przetwarzanie widoków Jeżeli dużo dokumentów "lists": { "pokaz": "function(head,req) { start({headers: { Content-Type : text/html ); send( <ol> ); while (wiersz=getrow()) { send( <li><b> +wiersz.value.data+ </b> + +wiersz.value.tresc+ </li> ); send( </ol> ); "

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 21 / 29 Co dalej? Co dalej? Programowanie list oraz show korzystajac z Futon jest... niewygodne. JavaScript + CouchDB = Aplikacja WWW CouchApp: couchapp.org Szkielet do programowania: view, show, list i... Tworzenia kompletnych aplikacji internetowych z CouchDB.

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 22 / 29 Aplikacja w JavaScript I Co dalej? Przykład zaczerpnięty z: http://www.speqmath.com/ tutorials/couchdb_tasklist/index.html <html> <head> <title>tasks</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/ 1.6.2/jquery.min.js"></script> <script type="text/javascript"> // znajdź nazwę bazy danych na podstawie URI var DATABASE = "/" + window.location.href.split("/")[3];

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 23 / 29 Aplikacja w JavaScript II Co dalej? function gettasks() { $.ajax({ url: DATABASE + "/_design/tasks/_view/tasks", success: function (data){ var view = JSON.parse(data); var tasks = []; $(view.rows).each( function (index, item) { tasks.push (item.value); ); displaytasks(tasks); );

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 24 / 29 Co dalej? Aplikacja w JavaScript III function displaytasks(tasks) { var html = "<table>"; $(tasks).each( function (index, task) { var edit = "<input type= button value= Edit " + "onclick= edittask(" + JSON.stringify(task) + ") />"; var del = "<input type= button value= Delete " + "onclick= deletetask(" + JSON.stringify(task) + ") /> html += "<tr>"; html += "<td>" + task.task + "</td>"; html += "<td>" + edit + "</td>"; html += "<td>" + del + "</td>"; html += "</tr>"; ); html += "</table>";

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 25 / 29 Co dalej? Aplikacja w JavaScript IV $( #tasks ).empty(); $( #tasks ).append(html); function addtask() { var desc = prompt("enter a task description"); if (desc) { var task = { "task": desc ; $.ajax({ type: "POST", url: DATABASE, contenttype: "application/json", data: JSON.stringify(task), success: function () { gettasks();

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 26 / 29 Co dalej? Aplikacja w JavaScript V ); function edittask(task) { var desc = prompt("new task description", task.task); if (desc) { task.task = desc; $.ajax({ type: "PUT", url: DATABASE + "/" + task._id, contenttype: "application/json", data: JSON.stringify(task), success: function () { gettasks();

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 27 / 29 Co dalej? Aplikacja w JavaScript VI ); function deletetask(task) { var doit = confirm("do you really want to delete the task " task.task + "?"); if (doit) { $.ajax({ type: "DELETE", url: DATABASE + "/" + task._id + "?rev=" + task._rev, success: function () { gettasks(); );

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 28 / 29 Co dalej? Aplikacja w JavaScript VII // utwórz widok (niepowodzenie jeżeli widok istnieje) function createview() { var view = { "language": "javascript", "views": { "tasks": { "map": "function(doc) {if (doc.task) {emit(doc.task, doc);" $.ajax({

Igor Wojnicki (AGH, KIS) PHP 23 października 2016 29 / 29 Co dalej? Aplikacja w JavaScript VIII type: "PUT", url: DATABASE + "/_design/tasks", contenttype: "application/json", data: JSON.stringify(view) ); </script> </head> <body onload="createview(); gettasks();"> <h1>tasks</h1> <input type="button" id="add" value="add" onclick="addtask();" / <div id="tasks"></div> </body> </html>