Narzędzia użytkownika

Narzędzia witryny


pl:ztb:bazy_nosql

Bazy NoSQL

Wstęp i wymagania

Celem ćwiczenia jest zapoznanie się z wybranymi technologiami NoSQL.

Do wynkonania ćwiczenia niezbędna jest znajomość:

Problem do rozwiązania

Generowanie statystyk występowania liter.

Zaliczenie

Warunkiem zaliczenia jest wykonanie poniższych ćwiczeń i prezentacja wyników prowadzącemu zajęcia.

CouchDB

Przydatne polecenia

Eksperymenty z widokami dobrze jest przeprowadzać za pomocą futon: http://nosql.kis.agh.edu.pl:5984/_utils

Ćwiczenie 1

Sporządź przynajmniej po 2 dokumenty w każdej z poniższych kategorii w formacie JSON:

  1. ogłoszenia: data, treść,
  2. asortyment: nazwa towaru, opis towaru, sugerowana cena,
  3. wiadomosc: tresc, od kogo, dla kogo, data sporządzenia.

Utworz bazę danych w instancji CouchDB dostępnej pod adresem: http://nosql.kis.agh.edu.pl:5984/ Nazwa bazy danych moze byc np. Twoim nazwiskiem. Umieść wszystkie dokumenty w tej samej bazie.

Zaprogramuj widok, który policzy ile razy w dokumentach występowała każda z liter alfabetu (dużę i małe litery powinny być nierozróżnialne).

Podpowiedź: funckja emit() może być użyta więcej niż raz w funkcji map.

Podpowiedź: do testowania JavaScriptu przydaje się konsola w przeglądarce.

Riak

UWAGA :!: ćwiczenia z Riak proszę wykonywać na maszynie deepthought.kis.agh.edu.pl.

Przydatne polecenia

Wylistowanie wszystkich wiader:

GET /buckets?buckets=true

Wylistowanie wszystkich kluczy w wiadrze:

GET /buckets/bucket/keys?keys=true

Umieszczenie rekordu w bazie Riaka:

curl -v -XPUT \
     -d '<wartość>' \
     http://nosql.kis.agh.edu.pl:8098/riak/<wiadro>/<klucz>

Umieszczenie danych w formacie JSON:

curl -v -XPUT \
     -H "Content-Type: application/json" \
     -d '<wartość>' \
     http://nosql.kis.agh.edu.pl:8098/riak/<wiadro>/<klucz>

Umieszczenie rekordu w bazie Riaka z oczytem danych z pliku:

curl -v -XPUT \
     -d @<nazwa_pliku> \
     http://nosql.kis.agh.edu.pl:8098/riak/<wiadro>/<klucz>

Umieszczenie rekordu z określeniem tagów 2i (secondary indexes):

curl -XPUT \
     -H 'x-riak-index-nazwa1_bin: wartosc_tagu' \
     -H 'x-riak-index-nazwa2_int: 9999999' \
     -d '<wartość>' \
     http://nosql.kis.agh.edu.pl:8098/buckets/<wiadro>/keys/<klucz>

Definiowanie zadania MapReduce:

curl -X POST -H "content-type: application/json" \
    http://nosql.kis.agh.edu.pl:8098/mapred --data @-<<\EOF
{"inputs":[["<wiadro>","<klucz1>"],["<wiadro>","<klucz1>"],["<wiadro>","<klucz1>"]]
,"query":[{"map":{"language":"javascript","source":"
 
// funkcja map w JavaScript 
 
"}},{"reduce":{"language":"javascript","source":"
 
// funkcja reduce w JavaScript
 
"}}]}
EOF

Ćwiczenie 2

Proszę utworzyć kilka plików tekstowych zawierających teksty (np. skopiowane z Wikipedii) w różnych językach - wystarczy po 1-2 akapity na plik.

Serwer Riak znajduje się pod adresem http://nosql.kis.agh.edu.pl:8098/.

Proszę umieścić te pliki jako obiekty w wiadrze o nazwie imie_nazwisko, z wybranymi kluczami. Proszę do każdego elementu (obiektu) dodać tag 2i (secondary indexes o nazwie lang_bin, zawierający informację o języku tekstu (proponuję wartości pl oraz en).

Następnie proszę napisać skrypt MapReduce, który zliczy liczbę wystąpień poszczególnych znaków we wszystkich plikach w określonym języku. Klucze obiektów do przetworzenia powinny zostać wybrane na podstawie ich wartości tagu lang_bin, a więc poprzez umieszczenie odpowiednich wartości pól index oraz key w sekcji input zapytania MR.

Wynikiem powinna być tablica JSON, zawierająca litery jako klucze, oraz liczby całkowite jako wartości.

pl/ztb/bazy_nosql.txt · ostatnio zmienione: 2021/01/08 14:09 (edycja zewnętrzna)