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'.