TZT - Laboratorium 11 Baza danych Cassandra – typy danych

Transkrypt

TZT - Laboratorium 11 Baza danych Cassandra – typy danych
TZT - Laboratorium 11
Baza danych Cassandra – typy danych, tworzenie tabel, zapytania
Zadanie 1 – przygotowania
Uruchamiamy Cassandrę, uruchamiamy cqlsh, można sobie uruchomiać DevCenter.
Tworzymy sobie przestrzeń kluczy lab11, w której będziemy robić poniższe zadania.
Zadanie 2 – prosta tabela, proste zapytania
Proszę utworzyć tabelę aktorzy zawierającą 4 kolumny:
• id,
• imie,
• nazwisko,
• data_ur.
Id ma być kluczem głównym i najlepiej typem liczbowym.
Proszę dodać do tabeli przynajmniej 4 aktorów z różnymi danymi. Id kolejnych wierszy przydzielamy
od wartości 1. Dwóch z nich proszę dodać wykorzystując format JSON, pozostałych dwóch dowolnie.
Piszemy zapytania:
• wszystkie dane z tabeli,
• liczba aktorów w tabeli,
• imię pierwszego aktora w tabeli, na dwa sposoby, kolumna wynikowa powinna mieć nazwę
„Imię aktora”,
• listę wszystkich aktorów bez pierwszego i ostatniego, może być potrzebna funkcja token()
• wszystkie informacje o pierwszym i przed ostatnim aktorze,
• imię, nazwisko i datę urodzenia aktorów starszych niż podana data, opcja ALLOW FILTERING
Zadanie 3 – tabela z typów prostych
Tworzymy tabelę filmy z następującymi polami (na razie 6):
• gatunek,
// np. przygodowy, dramat, komedia, sci-fi, ...
• produkcja,
// np. USA, Polska, Niemcy, Francja, Japonia, ...
• tytul,
• cena,
• premiera,
// data światowej premiery (albo polskiej jeśli to polski film :)
• rezyser.
// imię i nazwisko reżysera
Proszę dobrać właściwe typy danych, na razie proste, w większości będą to dane znakowe, napisy.
Klucz główny to pierwsze trzy pola, przy czym pierwsze dwa mają być kluczem partycjonowania, a
kolumna tytuł będzie kluczem grupowania.
Dane do pobrania i zaimportowania poleceniem COPY z cqlsh:
http://icis.pcz.pl/~rperlinski/files/filmy.csv
Zapytania:
• wszystkie dane w klasycznym układzie kolumnowym i w zapisie JSON,
• wszystkie informacje o trzech pierwszych filmach z listy (LIMIT),
• wszystkie informacje o pierwszym filmie z każdej partycji (PER PARTITION LIMIT),
• tylko 3 filmy, przy czym każdy z innej partycji,
• liczba wszystkich filmów i liczba wszystkich filmów posiadających cenę,
• lista wszystkich partycji czyli dwie pierwsze kolumny klucza głównego bez powtarzania się,
•
•
•
•
tytuły filmów i reżyserzy polskich komedii,
jw. ale posortowane malejąco po tytule filmu,
dramaty produkcji polskiej i japońskiej,
proste statystyki, jak poniżej:
Liczba filmów | SredniaCena | CenaMinimalna | CenaMaksymalna
---------------+-------------+---------------+---------------3 |
40.71 |
29 |
63.15
Zadanie 4 – różne zapytania
Wyświetlamy jeszcze czas utworzenia danych w kolumnach rezyser i cena oraz ich długość czasu
życia (powinno być bezterminowo czyli null).
Zmieniamy cenę filmu „Miś” ustawiając ją na 31.98 (o złotówkę więcej) i ustalając jej czas życia na 10
min. Po każdej sekundzie powinien być widoczny spadek jej wartości.
Korzystając z polecenia UPDATE dodajemy do tabeli filmy dodatkowy wiersz.
Korzystając z polecenia INSERT aktualizujemy cenę filmu „Bruce Wszechmogący” z null na 32.35.
Zadanie 5 – trochę zmian
Dodajemy do tabeli filmy mapę o nazwie pola aktorzy, której klucze będą odpowiadały id aktorów z
tabeli aktorzy, a wartości będą imionami i nazwiskami aktorów.
Dodajemy do dwóch wierszy aktorów z danego filmu, korzystając z zapisu standardowego jak i z
formatu JSON. W zapisie z formatu JSON znacznie lepiej użyć UPDATE niż INSERT.
Zadanie 6 – BATCH
Korzystając z polecenia BATCH proszę dodać dwóch aktorów do tabeli aktorzy i przykładowy film z
udziałem dwóch dodawanych aktorów. Po wykonaniu polecenia proszę sprawdzić czas utworzenia
wszystkich dodanych danych.
Można tutaj zrobić sobie skrypt, np. skrypt.cql i uruchamiać go poleceniem SOURCE narzędzia cqlsh,
np.: SOURCE 'skrypt.cql'.