NoSQL Not Only SQL, CouchDB - Apache CouchDB has started...
Transcript of NoSQL Not Only SQL, CouchDB - Apache CouchDB has started...
![Page 1: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/1.jpg)
I.Wojnick
i, NoSQLNoSQL – Not Only SQL, CouchDBApache CouchDB has started. Time to relax.
Igor Wojnicki
Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie
23 pazdziernika 2016
$Id$
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 1 / 53
![Page 2: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/2.jpg)
I.Wojnick
i, NoSQL
CouchDB
www.couchdb.org
Apache FoundationErlang
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 2 / 53
![Page 3: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/3.jpg)
I.Wojnick
i, NoSQL
WWW?
Django may be built for the Web, but CouchDB is built ofthe Web. I’ve never seen software that so completelyembraces the philosophies behind HTTP. CouchDB makesDjango look old-school in the same way that Django makesASP look outdated.
— Kaplan-Moss, Django developer
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 3 / 53
![Page 4: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/4.jpg)
I.Wojnick
i, NoSQL
Charakterystyka
HTTPDokumentBrak schematówJSONReplikacjaMulti-Version Concurrency Control (MVCC)Bezstanowe połaczenia
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 4 / 53
![Page 5: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/5.jpg)
I.Wojnick
i, NoSQL
Komunikacja z baza
Dokumentacja API znajduje sie pod adresem:http://wiki.apache.org/couchdb/HTTP_Document_APIPrzykładowa sesja z wykorzystaniem polecenia curl:
$ curl -X GET http://awing.kis.agh.edu.pl:5984/
{"couchdb":"Welcome","version":"1.0.1"}
$ curl -X GET http://awing.kis.agh.edu.pl:5984/_all_dbs
["_users"]
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 5 / 53
![Page 6: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/6.jpg)
I.Wojnick
i, NoSQL
Tworzenie bazy danych
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia
{"ok":true}
$ curl -X GET http://awing.kis.agh.edu.pl:5984/_all_dbs
["ogloszenia","_users"]
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia
{"error":"file_exists","reason":"The database could not be created,the file already exists."}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 6 / 53
![Page 7: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/7.jpg)
I.Wojnick
i, NoSQL
Usuwanie bazy danych
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/do_skasowania
{"ok":true}
$ curl -X DELETE http://awing.kis.agh.edu.pl:5984/do_skasowania
{"ok":true}
$ curl -X GET http://awing.kis.agh.edu.pl:5984/_all_dbs
["ogloszenia","_users"]
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 7 / 53
![Page 8: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/8.jpg)
I.Wojnick
i, NoSQL
Pobieranie danych
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs
{"total_rows":0,"offset":0,"rows":[]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 8 / 53
![Page 9: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/9.jpg)
I.Wojnick
i, NoSQL
Wstawianie danych, nowy dokument
$ curl -X POST http://awing.kis.agh.edu.pl:5984/ogloszenia
-H "Content-Type: application/json"-d’{"kierunek":"PAW" , "tresc":"zajecia odwolane"}’
{"ok":true,"id":"5474fe40a47e9e554f03bb2def74f425","rev":"1-952bd6fd9cf92592c0370f2c30713dd2"}
Revision: kolejny_numer-MD5(dokument)
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 9 / 53
![Page 10: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/10.jpg)
I.Wojnick
i, NoSQL
Wstawianie danych, zawartosc bazy
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs
{"total_rows":1,"offset":0,"rows":[{"id":"5474fe40a47e9e554f03bb2def74f425","key":"5474fe40a47e9e554f03bb2def74f425","value":{"rev":"1-952bd6fd9cf92592c0370f2c30713dd2"}}
]}
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425
{"_id":"5474fe40a47e9e554f03bb2def74f425","_rev":"1-952bd6fd9cf92592c0370f2c30713dd2","kierunek":"PAW","tresc":"zajecia odwolane"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 10 / 53
![Page 11: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/11.jpg)
I.Wojnick
i, NoSQL
Modyfikacja dokumentu
Dodanie pola data.
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425
-H "Content-Type: application/json"-d ’{"_id":"5474fe40a47e9e554f03bb2def74f425",
"_rev":"1-952bd6fd9cf92592c0370f2c30713dd2","data":"2012-03-01"}’
{"ok":true,"id":"5474fe40a47e9e554f03bb2def74f425","rev":"2-acc9738539da4e04b0af5366131ba0b2"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 11 / 53
![Page 12: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/12.jpg)
I.Wojnick
i, NoSQL
Modyfikacja dokumentu, wynik
Dodanie pola data.
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425
{"_id":"5474fe40a47e9e554f03bb2def74f425","_rev":"2-acc9738539da4e04b0af5366131ba0b2","data":"2012-03-01"}
Oooops...
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 12 / 53
![Page 13: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/13.jpg)
I.Wojnick
i, NoSQL
Wersje
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/
5474fe40a47e9e554f03bb2def74f425?revs_info=true
{"_id":"5474fe40a47e9e554f03bb2def74f425","_rev":"2-acc9738539da4e04b0af5366131ba0b2","data":"2012-03-01","_revs_info":[{"rev":"2-acc9738539da4e04b0af5366131ba0b2","status":"available"},{"rev":"1-952bd6fd9cf92592c0370f2c30713dd2","status":"available"}
]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 13 / 53
![Page 14: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/14.jpg)
I.Wojnick
i, NoSQL
Dostep do poprzednich wersji
curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425?rev=1-952bd6fd9cf92592c0370f2c30713dd2
{"_id":"5474fe40a47e9e554f03bb2def74f425","_rev":"1-952bd6fd9cf92592c0370f2c30713dd2","kierunek":"PAW","tresc":"zajecia odwolane"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 14 / 53
![Page 15: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/15.jpg)
I.Wojnick
i, NoSQL
Edycja, cd.
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425
-H "Content-Type: application/json"-d ’{"_id":"5474fe40a47e9e554f03bb2def74f425",
"_rev":"2-acc9738539da4e04b0af5366131ba0b2","kierunek":"PAW","tresc":"zajecia odwolane","data":"2012-03-01"}’
{"ok":true,"id":"5474fe40a47e9e554f03bb2def74f425","rev":"3-a5d979e8767925bcf7de6c27b767ffd7"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 15 / 53
![Page 16: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/16.jpg)
I.Wojnick
i, NoSQL
Edycja, cd.
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425?
revs_info=true{"_id":"5474fe40a47e9e554f03bb2def74f425","_rev":"3-a5d979e8767925bcf7de6c27b767ffd7","kierunek":"PAW","tresc":"zajecia odwolane","data":"2012-03-01","_revs_info":[{"rev":"3-a5d979e8767925bcf7de6c27b767ffd7","status":"available"},{"rev":"2-acc9738539da4e04b0af5366131ba0b2","status":"available"},{"rev":"1-952bd6fd9cf92592c0370f2c30713dd2","status":"available"}]}
Wszystko OK.
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 16 / 53
![Page 17: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/17.jpg)
I.Wojnick
i, NoSQL
Usuwanie dokumentu
$ curl -X DELETE http://awing.kis.agh.edu.pl:5984/ogloszenia/5474fe40a47e9e554f03bb2def74f425?rev=3-a5d979e8767925bcf7de6c27b767ffd7
{"ok":true,"id":"5474fe40a47e9e554f03bb2def74f425","rev":"4-a903837c8891e7d400a91e44d4291e2e"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 17 / 53
![Page 18: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/18.jpg)
I.Wojnick
i, NoSQL
Alternatywne tworzenie dokumentów
Uzycie własnych identyfikatrów
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia/moje1
-H "Content-Type: application/json"-d ’{"kierunek":"PAW",
"tresc":"koniec semestru","data":"2012-04-01"}’
{"ok":true,"id":"moje1","rev":"1-b1805cae2fbae27e6bc929a5b16672b1"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 18 / 53
![Page 19: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/19.jpg)
I.Wojnick
i, NoSQL
Alternatywne tworzenie dokumentów, sprawdzenie
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs
{"total_rows":3,"offset":0,"rows":[{"id":"5474fe40a47e9e554f03bb2def74f42d","key":"5474fe40a47e9e554f03bb2def74f42d","value":{"rev":"2-8fafd9f0ee6bbcdf1753d5e310f02c75"}},
{"id":"5474fe40a47e9e554f03bb2def750eaa","key":"5474fe40a47e9e554f03bb2def750eaa","value":{"rev":"1-02adafaebe85d80139c3dde97e47b367"}},
{"id":"moje1","key":"moje1","value":{"rev":"1-b1805cae2fbae27e6bc929a5b16672b1"}}
]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 19 / 53
![Page 20: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/20.jpg)
I.Wojnick
i, NoSQL
Generacja UUID
Universally Unique IDentifier
$ curl -X GET http://awing.kis.agh.edu.pl:5984/_uuids
{"uuids":["5474fe40a47e9e554f03bb2def75401d"]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 20 / 53
![Page 21: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/21.jpg)
I.Wojnick
i, NoSQL
Załaczniki
$ curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia/moje1/
zdjecie.jpg?rev=1-b1805cae2fbae27e6bc929a5b16672b1--data-binary @zdjecie.jpg-H "Content-Type: image/jpg"
{"ok":true,"id":"moje1","rev":"2-29b17212e3635e445f1a009c4d04e384"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 21 / 53
![Page 22: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/22.jpg)
I.Wojnick
i, NoSQL
Załaczniki, sprawdzenie
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/moje1
{"_id":"moje1","_rev":"2-29b17212e3635e445f1a009c4d04e384","kierunek":"PAW","tresc":"koniec semestru","data":"2012-04-01","_attachments":{"zdjecie.jpg":{"content_type":"image/jpg",
"revpos":2,"length":5240,"stub":true}}}
Dostepne: http://awing.kis.agh.edu.pl:5984/ogloszenia/moje1/zdjecie.jpg
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 22 / 53
![Page 23: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/23.jpg)
I.Wojnick
i, NoSQL
Usuwanie załacznika
$ curl -X DELETEhttp://awing.kis.agh.edu.pl:5984/
ogloszenia/moje1/cos.odt?rev=2-29b17212e3635e445f1a009c4d04e384
{"ok":true,"id":"moja1","rev":"3-a158c2c2a0ae7f31effb0402844515d1"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 23 / 53
![Page 24: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/24.jpg)
I.Wojnick
i, NoSQL
Widoki (Views)
Tymczasowe (temporary): zapytania ad hoc.Tylko dla testów.
Stałe (permanent): przechowywane w bazie.
Jezyk: JavaScript.Rezultat działania buforowany w bazie danych.Sortowanie rosnaco w/g klucza ()Malejaco z atrybutem descending=”true”
Ograniczenie ilosci rezultatów: limit=5Pominiecie rezultatów: skip=30
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 24 / 53
![Page 25: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/25.jpg)
I.Wojnick
i, NoSQL
Widok, przykład
Argument: dokument, wyjscie: emit()
function(doc) {if (doc.kierunek==’PAW’) {emit(doc.data, { tresc: doc.tresc,
kierunek: doc.kierunek });}
}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 25 / 53
![Page 26: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/26.jpg)
I.Wojnick
i, NoSQL
Widok, przykład, JSON
W pliku: paw.json
{"map" : "function(doc) {if (doc.kierunek==’PAW’) {emit(doc.data, { tresc: doc.tresc,
kierunek: doc.kierunek });}
}"}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 26 / 53
![Page 27: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/27.jpg)
I.Wojnick
i, NoSQL
Odpowiedz, widok tymczasowy I
$ curl -X POST http://awing.kis.agh.edu.pl:5984/ogloszenia/_temp_view
-H "Content-Type: application/json"-d @paw.json
{"total_rows":6,"offset":0,"rows":[{"id":"5474fe40a47e9e554f03bb2def755ef5","key":"2011-10-01","value":{"tresc":"rozpocz\u0119cie semestru",
"kierunek":"PAW"}},{"id":"5474fe40a47e9e554f03bb2def75508f","key":"2011-11-01","value":{"tresc":"rozpocz\u0119cie kursu",
"kierunek":"PAW"}},{"id":"5474fe40a47e9e554f03bb2def74f42d","key":"2012-03-20","value":{"tresc":"zajecia odwolane",
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 27 / 53
![Page 28: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/28.jpg)
I.Wojnick
i, NoSQL
Odpowiedz, widok tymczasowy II
"kierunek":"PAW"}},{"id":"5474fe40a47e9e554f03bb2def750eaa","key":"2012-03-22","value":{"tresc":"kolowkum zaliczeniowe",
"kierunek":"PAW"}},{"id":"5474fe40a47e9e554f03bb2def7545cc","key":"2012-03-22","value":{"tresc":"wystawianie ocen","kierunek":"PAW"}},
{"id":"moje1","key":"2012-04-01","value":{"tresc":"koniec semestru",
"kierunek":"PAW"}}]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 28 / 53
![Page 29: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/29.jpg)
I.Wojnick
i, NoSQL
Reduce, przykład
map:function(doc) {if (doc.kierunek=’PAW’) {emit(doc.data, 1);
}}
reduce:function(key,value) {return value;
}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 29 / 53
![Page 30: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/30.jpg)
I.Wojnick
i, NoSQL
Reduce, przykład, wyjscie
"2012-04-01" [1]"2012-03-22" [1, 1]"2012-03-20" [1]"2011-11-01" [1]"2011-10-01" [1]
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 30 / 53
![Page 31: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/31.jpg)
I.Wojnick
i, NoSQL
Poprawiona funkcja
function(key,value) {return sum(value);
}
Wyjscie:"2012-04-01" 1"2012-03-22" 2"2012-03-20" 1"2011-11-01" 1"2011-10-01" 1
Alternatywnie:function(key,value) {n=0;for (var i=0; i<value.length; i++) {n+=value[i];
}return n;
}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 31 / 53
![Page 32: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/32.jpg)
I.Wojnick
i, NoSQL
Map-Reduce
map: uruchamiana na kazdym dokumencie → klucz, wartoscreduce: klucz, lista wartosci → wartosc
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 32 / 53
![Page 33: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/33.jpg)
I.Wojnick
i, NoSQL
Widoki Stałe
http://wiki.apache.org/couchdb/HTTP_view_API
Design Documents.../baza_danych/_design/nazwa
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 33 / 53
![Page 34: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/34.jpg)
I.Wojnick
i, NoSQL
Dokument definiujacy widoki I
{"_id":"_design/paw","language": "javascript","views":{"wszystkie": {"map": "function(doc) {
if (doc.kierunek == ’PAW’)emit(null, doc) }"
},"data": {
"map": "function(doc) {if (doc.kierunek == ’PAW’)
emit(doc.data,doc.tresc) }"},"ile": {
"map": "function(doc) {
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 34 / 53
![Page 35: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/35.jpg)
I.Wojnick
i, NoSQL
Dokument definiujacy widoki II
if (doc.kierunek == ’PAW’)emit(doc.data,1) }",
"reduce": "function(keys, values) {return sum(values) }"
}}
}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 35 / 53
![Page 36: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/36.jpg)
I.Wojnick
i, NoSQL
Umieszczenie w bazie
curl -X PUT http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/paw
-H "Content-Type: application/json"-d @views.json
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 36 / 53
![Page 37: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/37.jpg)
I.Wojnick
i, NoSQL
Uzywanie widoków I
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/paw/_view/data
{"total_rows":5,"offset":0,"rows":[{"id":"5474fe40a47e9e554f03bb2def75508f","key":"2011-11-01","value":"rozpocz\u0119cie kursu"},
{"id":"5474fe40a47e9e554f03bb2def74f42d","key":"2012-03-20","value":"zajecia odwolane"},
{"id":"5474fe40a47e9e554f03bb2def750eaa","key":"2012-03-22","value":"kolowkum zaliczeniowe"},
{"id":"5474fe40a47e9e554f03bb2def7545cc","key":"2012-03-22","value":"wystawianie ocen"},
{"id":
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 37 / 53
![Page 38: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/38.jpg)
I.Wojnick
i, NoSQL
Uzywanie widoków II
"moje1","key":"2012-04-01","value":"koniec semestru"}
]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 38 / 53
![Page 39: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/39.jpg)
I.Wojnick
i, NoSQL
Uzywanie widoków, cd.
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/paw/_view/ile
{"rows":[{"key":null,"value":5}]}
Oooops, wszystkie dane na wejsciu funkcji reduce
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 39 / 53
![Page 40: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/40.jpg)
I.Wojnick
i, NoSQL
Uzywanie widoków, cd.
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/paw/_view/ile?group="true"
{"rows":[{"key":"2011-11-01","value":1},{"key":"2012-03-20","value":1},{"key":"2012-03-22","value":2},{"key":"2012-04-01","value":1}]}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 40 / 53
![Page 41: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/41.jpg)
I.Wojnick
i, NoSQL
Uzywanie widoków, cd.
$ curl -X GET http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/paw/_view/wszystkie
{"total_rows":5,"offset":0,"rows":[{"id":"5474fe40a47e9e554f03bb2def74f42d","key":null,"value":{"_id":"5474fe40a47e9e554f03bb2def74f42d",
"_rev":"2-8fafd9f0ee6bbcdf1753d5e310f02c75","kierunek":"PAW","tresc":"zajecia odwolane","data":"2012-03-20"}},
{"id":"5474fe40a47e9e554f03bb2def750eaa","key":null,"value":{"_id":"5474fe40a47e9e554f03bb2def750eaa",
...
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 41 / 53
![Page 42: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/42.jpg)
I.Wojnick
i, NoSQL
Dostep do dokumentów... raz jeszcze I
Dodatkowe parametry okreslajace zakres wartosci klucza:key, startkey, endkey, keys, skip, limit.http://wiki.apache.org/couchdb/HTTP_view_API
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_design/ogolny/_view/kierunek?key=null’
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs?key="5474fe40a47e9e554f03bb2def75508f"’
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs?startkey="5474fe40a47e9e554f03bb2def75508f"’
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 42 / 53
![Page 43: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/43.jpg)
I.Wojnick
i, NoSQL
Dostep do dokumentów... raz jeszcze II
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs?startkey="5474fe40a47e9e554f03bb2def75508f"&endkey="5474fe40a47e9e554f03bb2def755ef5"’
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs?limit=2’
curl -X GET ’http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docs?key="_design/paw"’
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 43 / 53
![Page 44: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/44.jpg)
I.Wojnick
i, NoSQL
Wiele dokumentow w jedym zapytaniu
http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 44 / 53
![Page 45: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/45.jpg)
I.Wojnick
i, NoSQL
Reduce raz jeszcze
Przykładowa funkcja typu reduce.
function (key, values, rereduce) {return sum(values);
}
rereduce moze przyjmowac wartosci:false, wartosci z funkcji map
reduce([ ... ],[value1,value2,value3],false)
true, wartosci z funkcji reduce
reduce(null,[value1,value2,value3],true)
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 45 / 53
![Page 46: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/46.jpg)
I.Wojnick
i, NoSQL
Reduce, PROBLEM!
1000 rezultatów z funkcji map:
function(doc){emit(null,
doc.nr);}
klucz wartoscnull 2null 8...
null 5
function(key,value){return value.length;
}
klucz wartoscnull 1000
Uwaga: moze nie działac!
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 46 / 53
![Page 47: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/47.jpg)
I.Wojnick
i, NoSQL
Jak na prawde działa reduce? I
function(doc){emit(null,
doc.nr);}
klucz wartoscnull 2...
klucz wartosc...
null 5
function(key,value){return value.length;
}
function(key,value){return value.length;
}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 47 / 53
![Page 48: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/48.jpg)
I.Wojnick
i, NoSQL
Jak na prawde działa reduce? II
klucz wartoscnull 500
klucz wartoscnull 500
function(key,value){return value.length;
}
klucz wartoscnull 2
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 48 / 53
![Page 49: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/49.jpg)
I.Wojnick
i, NoSQL
Rereduce, przykład
Zle:
function (keys,values){return values.length;
}
Dobrze:
function (keys,values,rereduce){if (rereduce==false) {return values.length;
} else {return sum(values);
}}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 49 / 53
![Page 50: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/50.jpg)
I.Wojnick
i, NoSQL
Jak na prawde działa rereduce? I
function(doc){emit(null,
doc.nr);}
klucz wartoscnull 2...
klucz wartosc...
null 5
function (key,value,rereduce){
if ...}
function (key,value,rereduce){
if ...}
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 50 / 53
![Page 51: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/51.jpg)
I.Wojnick
i, NoSQL
Jak na prawde działa rereduce? II
klucz wartoscnull 500
klucz wartoscnull 500
function (key,value,rereduce){
if ...}
klucz wartoscnull 1000
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 51 / 53
![Page 52: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/52.jpg)
I.Wojnick
i, NoSQL
Wbudowane funkcje reduce
_sum
_count
_stats
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 52 / 53
![Page 53: NoSQL Not Only SQL, CouchDB - Apache CouchDB has started ...home.agh.edu.pl/~wojnicki/wiki/_media/pl:paw:dcouchdb.pdf · NoSQL NoSQL – Not Only SQL, CouchDB Apache CouchDB has started.](https://reader030.fdocuments.us/reader030/viewer/2022032613/5a9b77337f8b9a9c5b8e2061/html5/thumbnails/53.jpg)
I.Wojnick
i, NoSQL
Futon
Interfejs WWW (?!)http://serwer.gdzies:5984/_utils
Przy testowaniu map/reduce, nalezy zrobic reload – dopierowtedy mozna właczyc reduce.
Igor Wojnicki (AGH, KIS) CouchDB 23 pazdziernika 2016 53 / 53