Bazy danych NoSQL Część II. Maciej Zakrzewicz Politechnika Poznańska, Instytut Informatyki,

Podobne dokumenty
Szkolenie wycofane z oferty. Apache Cassandra - modelowanie, wydajność, analiza danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Projektowanie systemów baz danych

Technologie Informacyjne

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Język SQL, zajęcia nr 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Hbase, Hive i BigSQL

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Nowe technologie baz danych

Wykład 8. SQL praca z tabelami 5

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Bazy Danych i Usługi Sieciowe

Oracle11g: Wprowadzenie do SQL

Autor: Joanna Karwowska

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Bazy danych - Materiały do laboratoriów VIII

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych i usługi sieciowe

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych 7. SQL podstawy

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Bazy danych NoSQL. wprowadzenie. Szymon Francuzik Poznań,

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Paweł Rajba

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Wykład 5. SQL praca z tabelami 2

Bazy danych Ćwiczenia projektowe

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych. Polecenia SQL

Relacyjne bazy danych. Podstawy SQL

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Tabela wewnętrzna - definicja

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

SQL/MySQL. Rafał Kern

ACESS- zadania z wykorzystaniem poleceń SQL

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Systemy GIS Tworzenie zapytań w bazach danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Indeksowanie w bazach danych

Fizyczna struktura bazy danych w SQL Serwerze

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wykład 05 Bazy danych

SQL Server. Odtwarzanie baz danych.

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Wydajność hurtowni danych opartej o Oracle10g Database

Oracle PL/SQL. Paweł Rajba.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

15. Funkcje i procedury składowane PL/SQL

Relacyjne bazy danych. Podstawy SQL

Instalacja MySQL.

Internetowe bazy danych

SQL (ang. Structured Query Language)

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 5: PHP: praca z bazą danych MySQL

Podstawowe informacje o bazach danych. Technologie Informacyjne

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Widok Connections po utworzeniu połączenia. Obszar roboczy

Rozproszone bazy danych. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Język SQL. Rozdział 8. Język manipulowania danymi DML

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych i usługi sieciowe

Aspekty aktywne baz danych

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

BAZA DANYCH SIECI HOTELI

P o d s t a w y j ę z y k a S Q L

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Administracja bazami danych

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Modelowanie wymiarów

Klastrowanie bazy IBM DB2. Adam Duszeńko

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Definicja. Not Only SQL

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Partycjonowanie tabel (1)

SQL 4 Structured Query Lenguage

Bazy danych 6. Klucze obce. P. F. Góra

SIECI KOMPUTEROWE I BAZY DANYCH

Wykład 4. SQL praca z tabelami 1

Transkrypt:

Bazy danych NoSQL Część II Maciej Zakrzewicz Politechnika Poznańska, Instytut Informatyki, http://zakrzewicz.pl 1

Apache Cassandra Rozproszony, zdecentralizowany, kolumnowy (columnoriented) system bazy danych Inspirowany przez Google Bigtable, opracowany w Facebook (udostępniony w 2008) Wydajna obsługa bardzo dużych wolumenów danych strukturalnych Skalowalność, wysoka niezawodność, brak pojedynczego punktu awarii (ang. single point of failure) Stosowany przez m.in. Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix 2

Architektura rozproszona Wszystkie węzły odgrywają taką samą rolę Każdy węzeł jest niezależny Każdy węzeł może przyjmować żądania zapisu i odczytu danych, niezależnie od fizycznej lokalizacji danych Po awarii węzła, jego zadania mogą realizować inne węzły 3

Replikacja Dane podlegają rozproszeniu i replikacji pomiędzy węzłami Po wykryciu, że węzeł posiada nieaktualne dane, Cassandra odnajdzie i zwróci najbardziej aktualny obraz danych, a następnie przystąpi do zaktualizowania danych nieaktualnych (read repair) Węzły są zorganizowane w ring Konfiguracja w cassandra.yaml 4 [tutorialspoint.com]

Twierdzenie Brewera - CAP W dużym systemie rozproszonym możliwe jest spełnienie tylko dwóch z trzech ważnych charakterystyk: Consistency (spójność) wszystkie węzły mają dostęp do jednakowych, aktualnych danych Availability (dostępność) każde żądanie doczeka się odpowiedzi Partition Tolerance (odporność na podział) system potrafi działać pomimo utraty niektórych węzłów 5

Konfiguracja poziomu spójności Własnośc Consistency (spójność) jest konfigurowalna: ONE zwraca dane z najbliższej repliki QUORUM zwraca najświeższy stan danych spośród większości węzłów (replik) ALL zwraca najświeższy stan danych spośród wszystkich węzłów (replik) 6

Składniki architektury Operacje zapisu wykonywane są w buforze memtable w pamięci operacyjnej, zabezpieczonym natychmiastowymi zapisami w dzienniku commit log Gdy rozmiar memtable przekrocza zadany poziom,jego dane zostają zapisane w pliku dyskowym SSTable szybkie zapisy sekwencyjne rozproszone, replikowane Węzeł: miejsce składowania danych Centrum danych: kolekcja powiązanych węzłów Klaster: jedno lub wiele centrów danych 7 [datastax.com]

Filtr Blooma Wykorzystywany przez Cassandrę do szybkiego sprawdzenia, czy plik SSTable zawiera wiersz o podanej wartości klucza Filtr Blooma (B.H. Bloom, 1970) pozwala wstępnie stwierdzić, czy element należy do zbioru możliwe fałszywe trafienia pozytywne (false positives) niemożliwe pominięcia (false negatives) Ma postać wektora bitowego, w którym oznaczane są wartości funkcji haszowych przetwarzających wartości klucza Dokładność regulowana m.in. przez rozmiar wektora ALTER TABLE emp_data WITH bloom_filter_fp_chance = 0.1; 8

Filtr Blooma przykład działania [kellabyte.com] 9

Partycjonowanie danych Partycjonowanie (i replikowanie) danych pomiędzy węzłami obsługiwane przez Partitioner rodzaj funkcji haszowej Dostępne Partitionery (wybór w pliku konfiguracyjnym cassandra.yaml) Murmur3Partitioner (domyślny): równomiernie rozprasza dane za pomocą funkcji haszowej MurmurHash RandomPartitioner: równomiernie rozprasza dane za pomocą funkcji MD5 ByteOrderedPartitioner: rozprasza dane w sposób uporządkowany w oparciu o wartość klucza 10

Narzędzia Cassandra cassandra serwer bazy danych Cassandra cqlsh klient Cassandra umożliwiający interakcyjne wykonywanie poleceń w języku CSQL 11

Przestrzeń kluczy - Keyspace Kontener przechowujący dane współczynnik replikacji liczba węzłów przechowujących kopie tych samych danych strategia lokalizacji replik sposób rozlokowania replik w ringu, np. simple strategy, old network topology strategy, network topology strategy Przestrzeń kluczy zawiera listę rodzin kolumn rodzina kolumn zawiera kolekcję wierszy wiersz zawiera uporządkowane kolumny 12

Język CSQL CREATE KEYSPACE tworzy przestrzeń kluczy USE wybiera aktywną przestrzeń kluczy ALTER KEYSPACE zmienia ustawienia przestrzeni kluczy DROP KEYSPACE usuwa przestrzeń kluczy CREATE COLUMNFAMILY TABLE tworzy rodzinę kolumn w przestrzeni kluczy ALTER COLUMNFAMILY TABLE zmienia ustawienia grupy kolumn DROP COLUMNFAMILY TABLE usuwa grupę kolumn TRUNCATE usuwa wszystkie dane z grupy kolumn CREATE INDEX tworzy indeks na kolumnie grupy kolumn DROP INDEX usuwa indeks 13

Język CSQL INSERT wstawia wiersz do rodziny kolumn UPDATE modyfikuje kolumnę w wierszu DELETE usuwa wiersz z rodziny kolumn BATCH wykonuje zestaw poleceń DML SELECT odczytuje dane z rodziny kolumn WHERE dokonuje selekcji wierszy ORDER BY wskazuje kolejność odczytywania wierszy do wyszukiwania w oparciu o kolekcje służy operator CONTAINS 14

Pozostałe polecenia CQLSH CAPTURE umożliwia zapis wyniku zapytania do pliku CONSISTENCY wyświetla/ustawia poziom spójności COPY eksportuje zawartość tabeli do pliku DESCRIBE KEYSPACES wyświetla istniejące przestrzenie kluczy DESCRIBE TABLES wyświetla wykaz istniejących tabel w aktywnej przestrzeni kluczy DESCRIBE TABLE wyświetla strukturę tabeli DESCRIBE TYPES wyświetla wykaz typów zdefiniowanych przez użytkownika DESCRIBE TYPE wyświetla strukturę typu zdefiniowanego przez użytkownika SHOW wyświetla informacje o bieżącej sesji SOURCE wykonuje polecenia z pliku 15

Tworzenie przestrzeni kluczy język CQL cqlsh> create keyspace Employees with replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; cqlsh> describe keyspaces; system_schema system_auth system system_distributed system_traces employees cqlsh> use employees; cqlsh:employees> 16

Rodzina kolumn Column family Analogia tabeli Rodziny kolumn są definiowane, lecz ich kolumny mogą być dynamicznie dodawane w dowolnej chwili Posiada atrybuty: keys_cached liczba lokalizacji buforowania SSTable rows_cached liczba rekordów buforowanych w pamięci preload_row_cache czy bufor ma być wstępnie ładowany 17

Buforowanie SSTable 18

Kolumna Posiada trzy składowe: nazwę wartość znacznik czasowy Superkolumna specjalny rodzaj kolumny, zawiera kolekcję zagnieżdżonych kolumn 19

Typy danych Kolumny typu kolekcja: set np. set<text> {'f@baggins.com', 'baggins@gmail.com'} list np. list<text> [ 'rivendell', 'rohan' ] map np. map<timestamp,text> { '2012-9-24' : 'enter mordor, '2012-10-2 12:00' : 'throw ring into mount doom' } 20

Tworzenie rodziny kolumn język CQL cqlsh:employees> create table emp_data( id int, firstname text, lastname text, primary key (id)); klucz główny obowiązkowy cqlsh:employees> insert into emp_data (id, firstname,lastname) values (1, 'John', 'Smith'); 21

Zapisywanie/modyfikacja danych - CQL cqlsh:employees> select * from emp_data; id firstname lastname ----+-----------+---------- 1 John Smith cqlsh:employees> update emp_data set firstname='susan', lastname='brown' where id=2; cqlsh:employees> select * from emp_data; id firstname lastname ----+-----------+---------- 1 John Smith 2 Susan Brown update tworzy wiersz, jeśli nie istniał! 22

Operacje CAS (Compare and Set) Tzw. light transactions insert into emp_data (id, firstname,lastname) values (1, 'John', 'Smith') if not exists; update emp_data set lastname='jones' where id=1 if lastname='smith'; 23

Dodawanie/usuwanie kolumny język CQL cqlsh:employees> alter table emp_data add salary float; cqlsh:employees> alter table emp_data drop salary; 24

Tworzenie indeksu język CQL cqlsh:employees> create index f_ind on emp_data(firstname); (Indeks jest wymagany aby dokonywać selekcji w oparciu o kolumnę) 25

Wykonywanie kopii bezpieczeństwa Migawki (snapshots) plików SSTable wszystkich przestrzeni kluczy wybranej przestrzeni kluczy wybranej rodziny kolumn pełne lub przyrostowe Narzędzie nodetool: nodetool -h localhost -p7199 snapshot employees 26

Odtwarzanie po awarii Zatrzymaj węzeł Usuń wszystkie pliki z katalogu commitlog Usuń wszystkie pliki *.db w data/keyspace_name/keyspace_namekeyspace_name (lecz nie w katalogach /snapshots i /backups) Odnajdź najnowszy katalog migawki w data/keyspace_name/table_name-uuid/snapshots/snapshot_name Skopiuj jego zawartość do do katalogu data/keyspace_name/table_name-uuid Zrestartuj węzeł Uruchom nodetool repair 27

Monitorowanie serwera Współczynniki wydajnościowe: nodetool proxyhistograms nodetool status nodetool info 28

Modelowanie danych Cassandra vs. RDBMS Relacyjny model danych dla RDBMS [safaribooksonline.com] 29

Modelowanie danych Cassandra vs. RDBMS Relacyjny model danych dla Cassandra [safaribooksonline.com] 30

Casandra - dokumentacja http://docs.datastax.com http://www.tutorialspoint.com/cassandra/ http://www.planetcassandra.org/ https://www.safaribooksonline.com/library/view/c assandra-the-definitive/9781449399764/ 31