Bazy danych NoSQL. Szymon Francuzik szymon.francuzik@cs.put.poznan.pl. Poznań, 29.10.2012

Podobne dokumenty
Bazy danych NoSQL. wprowadzenie. Szymon Francuzik Poznań,

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Wst p Model Danych Saklowalno± + replikacja Spójno± Ograniczenia. Cassandra. Paweª Róg. Pozna«, maj 2011

BAZY DANYCH. NIERELACYJNE BAZY DANYCH NoSQL I ASOCJACYJNE STRUKTURY DANYCH. Adrian Horzyk. Akademia Górniczo-Hutnicza

NoSQL & relax with CouchDB

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

*Grafomania z. Neo4j. Praktyczne wprowadzenie do grafowej bazy danych.

Definicja. Not Only SQL

Hbase, Hive i BigSQL

Wprowadzenie do NoSql. Maksymilian Wiesiołek

Big Data i 5V Nowe wyzwania w świecie danych Krzysztof Goczyła

NoSQL: Riak. dr inż. Sebastian Ernst Katedra Informatyki Stosowanej

Hurtownie danych wykład 5

Wprowadzenie do baz NoSQL

Bazy danych 12. Bazy NoSQL. P. F. Góra

Pojęcie bazy danych. Funkcje i możliwości.

Wprowadzenie do Hurtowni Danych

(Apache) CouchDB. Krzysztof Kulewski 2008

Technologie Informacyjne

011 ASPEKTY BAZ NOSQL. Prof. dr hab. Marek Wisła

BAZY DANYCH WYKŁAD 5 NO-SQL DATABASE

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

Nierelacyjne bazy danych

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

010 NOSQL. Prof. dr hab. Marek Wisła

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

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

CZĘŚĆ I. WARSTWA PRZETWARZANIA WSADOWEGO

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Architektura Doświadczenia i wnioski. Amazon Dynamo. Tomasz Klukowski

Bazy danych Wprowadzenie Wykład dla IV i V roku matematyki

na podstawie bazy Oracle NoSQL

Tematy projektów Edycja 2014

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

1. WPROWADZENIE PRZEBADANE TECHNOLOGIE ŚRODOWISKO BADAWCZE ZAPISYWANIE I ODCZYTYWANIE W OBRĘBIE JEDNEJ INSTANCJI...

Narzędzia i trendy Big Data

CouchDB. Michał Nowikowski

Bazy danych - wykład wstępny

Systemy rozproszone danych strukturalnych

Wrocławska Wyższa Szkoła Informatyki Stosowanej. Bazy danych. Dr hab. inż. Krzysztof Pieczarka.

Zaawansowany kurs języka Python

ZACHOWANIE SPÓJNOŚCI DANYCH W WYBRANYCH SYSTEMACH NOSQL

Baza danych. Modele danych

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

Bazy danych Wykład zerowy. P. F. Góra

Wybrane działy Informatyki Stosowanej

Projektowanie: architektura baz danych

Aplikacje webowe z wykorzystaniem Node.js oraz Express

NoSQL. Technologie zarządzania treścią. dr inż. Robert Perliński

Nowe technologie baz danych

Seminarium Bazy Danych I. BigTable. Piotr Świgoń Uniwersytet Warszawski

Big Data to skalowalność i prostota obsługi wielkich ilości danych!

Bazy danych. Dr inż. Paweł Kasprowski

Budowanie interfejsów do baz danych

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Współczesne systemy baz danych

Wprowadzenie do Hurtowni Danych

Adam Cankudis IFP UAM

Technologia informacyjna

Więzy integralności referencyjnej i klucze obce. PYTANIE NA EGZAMIN LICENCJACKI

Wybrane działy Informatyki Stosowanej

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

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

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Administracja bazami danych

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Baza danych. Baza danych to:

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

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

Bazy danych 11. Systemy rozproszone, twierdzenie CAP i bazy NoSQL. P. F. Góra

Bazy danych i usługi sieciowe

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Karta (sylabus) modułu/przedmiotu Mechanika i Budowa Maszyn Studia I stopnia

Tworzenie aplikacji bazodanowych

Hurtownie danych. 31 stycznia 2017

Systemy Rozproszone. Zagadnienia do egzaminu.

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

Wykład XII. optymalizacja w relacyjnych bazach danych

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

PERSPEKTYWY ZASTOSOWANIA BAZ DANYCH NoSQL W INTELIGENTNYCH SYSTEMACH TRANSPORTOWYCH

WPROWADZENIE DO BAZ DANYCH

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Programowanie obiektowe

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

Architektura rozproszonych magazynów danych

Procesowanie i partycjonowanie Analysis Services od podszewki (300) Adrian Chodkowski Adrian.Chodkowski@outlook.com

ZSE - Systemy baz danych MODELE BAZ DANYCH. Ewolucja technologii baz danych

Przegląd grafowych baz danych. Paweł Bednarz

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

Specjalizacja magisterska Bazy danych

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Transkrypt:

Bazy danych NoSQL Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Poznań, 29.10.2012 Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 1 / 45

Plan prezentacji 1 Definicja 2 Motywacje 3 Klasyfikacja NoSQL 4 Amazon Dynamo Przeznaczenie Realizacja 5 Cassandra Przeznaczenie Rozpraszanie API 6 RavenDB Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 2 / 45

RDBMS Relacyjne systemy zarządzania bazami danych: relacyjny model danych Edgar Codd (IBM) 1970 język SQL transakcje ACID Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 3 / 45

Model relacyjny Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 4 / 45

ACID Atomicity (atomowość) Consistency (spójność) Isolation (izolacja) Durability (trwałość) Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 5 / 45

Definicja NoSQL Wikipedia: NoSQL jest klasą systemów zarządzania bazą danych nie pasujących do powszechnie stosowanego modelu relacyjnych baz danych: brak języka SQL (w szczególności brak operacji JOIN) nierelacyjny model danych nie musi zapewniać ACID rozproszona, odporna na awarie architektura Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 6 / 45

Wydajność atomowość spójność izolacja trwałość Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 7 / 45

Skalowalność Możliwość zwiększania wydajności systemu wraz z rosnącym zapotrzebowaniem. skalowanie wertykalne (ang. scale up) skalowanie horyzontalne (ang. scale out) sharding (partycjonowanie poziome) partycjonowanie pionowe repliki do odczytu Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 8 / 45

CAP Theorem (Brewer s conjecture) Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 9 / 45

PACELC Partition yes no Availability Consistency Latency Consistency Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 10 / 45

Alternatywa dla ACID BASE: Basically Available Soft-state Eventual consistency Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 11 / 45

Model danych relacyjny model danych nie zawsze wygodny normalizacja vs. efektywność brakujące dane trudności przy zmianie schematu danych Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 12 / 45

Motywacje Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 13 / 45

Podział ze względu na reprezentację danych klucz-wartość hierarchiczna struktura klucz-wartość ( BigTable-like ) dokumentowe grafowe Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 14 / 45

Bazy klucz-wartość przechowują pary klucz-wartość dostęp do danych jedynie po kluczu przykłady: Berkeley DB Riak Dynamo Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 15 / 45

Bazy z hierarchiczną strukturą klucz-wartość wzorowane na BigTable (Google) każdy wiersz może mieć przyporządkowany inny zestaw kolumn częściowo ustrukturalizowane przykłady: HBase Cassandra SimpleDB row-key1 columnfamily1 supercolumn1 supercolumn2 col1 col2 col1 col3... val1 val2 val3 val4... row-key2 supercolumn1 supercolumn2 columnfamily row1 supercolumn1 row2 column1 column2 supercolumn2 column3 Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 16 / 45

Bazy z hierarchiczną strukturą klucz-wartość Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 17 / 45

Dokumentowe bazy danych przechowuje dokumenty zamiast wierszy/rekordów dokument: wpis w bazie składający się z pól (nazwa-wartość) możliwość odwoływania się po polach nie będących kluczem podstawowym przykłady: CouchDB MongoDB ThruDB { imie: "Jan", nazwisko: "Kowalski", nr_indeksu: 98765, oceny: [5, 4.5, 3, 4] dzienny: true } db.students.find({nazwisko: "Kowalski"}) Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 18 / 45

Grafowe bazy danych węzły, krawędzie (łuki), własności szybki dostęp do powiązanych danych przykłady: HyperGraphDB Neo4J Trinity Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 19 / 45

Amazon Dynamo baza typu klucz-wartość stworzona do zarządzania stanem usług oferowanych przez Amazon: koszyk zakupów: dziesiątki milionów zapytań, do 3 mln transakcji zakupu dziennie sesje klientów: setki tysięcy równoległych sesji inne usługi: katalog produktów, system rekomendacji rozproszona architektura serwery rozproszone po całym świecie spójność ostateczna Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 20 / 45

Cele niezawodność (dostępność) nawet kosztem spójności skalowalność pozioma commodity hardware SLA ograniczenia na czas odpowiedzi Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 21 / 45

Dlaczego nie RDBMS dostęp do danych poprzez klucz podstawowy nie potrzeba modelu relacyjnego brak operacji odwołujących się do kilku elementów nie potrzeba transakcji RDBMS wymaga specjalistów i drogiego sprzętu ograniczona dostępność w przypadku awarii słaba skalowalność pozioma brak wsparcia dla automatycznego partycjonowania Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 22 / 45

Interfejs komunikacja po HTTP operacje: get(key) odsyła wartość oraz kontekst put(key, context, value) Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 23 / 45

Partycjonowanie danych consistent hashing (MD5 128b) Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 24 / 45

Replikacja konfigurowalna liczba replik lista preferencji sloppy quorum Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 25 / 45

Uspójnianie stanu uspójnianie przy odczycie anti-entropy hinted handoff Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 26 / 45

Wielowersyjność obiektów wersja obiektu opisywana przez zegar wektorowy: TS 1 : {(S 1,3), (S 2,5), (S 3,1)} TS 2 : {(S 1,3), (S 2,4), (S 3,2)} TS 3 : {(S 1,3), (S 2,6), (S 3,2)} przechowywanie wersji powstałych współbieżnie do czasu uspójnienia przez klienta przy odczycie klient otrzymuje wszystkie dostępne wersje obiektu zymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 27 / 45

Cassandra hierarchiczna struktura klucz wartość Facebook indeksowanie na potrzeby przeszukiwania skrzynki użytkownika setki milionów użytkowników 600+ rdzeni rozmiar indeksu: 120+ TB open source Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 28 / 45

Struktura danych przestrzeń kluczy (keyspace) rodzina kolumn (column family) zdefiniowane statycznie super kolumny (super columns) kolumny (columns) wiersz (row) pojedynczy element z przypisanymi kolumnami/super-kolumnami row-key columnfamily1 columnfamily1 supercolumn1 supercolumn2 col21 col22 col1 col2 col1 col3... val5 val6 val1 val2 val3 val4... Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 29 / 45

Reprezentacja danych klucz i wartość reprezentowana jako tablica bajtów kolumny i super-kolumny posortowane po nazwach lub czasie modyfikacji indeksowanie kluczy Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 30 / 45

Indeksowanie Adam index_by_users_interactions Marek Kasia... m100 m252 m124 m511 m600... - - - -... Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 31 / 45

Partycjonowanie danych consistent hashing dynamiczne równoważenie obciążenia dwie strategie podziału: random partitioner order preserving partitioner Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 32 / 45

Replikacja możliwość konfigurowania liczby replik strategia rozmieszczania replik: przydział prosty świadoma topologi sieci: rack aware, datacenter aware Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 33 / 45

Kontrola poziomu spójności Zapisy: any one quorum local_quorum each_quorum all Odczyty: one quorum local_quorum each_quorum all Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 34 / 45

Uspójnianie replik uspójnianie przy odczycie anti-entropy hinted handoff Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 35 / 45

Interfejs Thrift RPC framework for cross-language service development wspierane języki: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml gotowe biblioteki dla wybranych języków programowania Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 36 / 45

Example Code v a r c l i e n t F a c t o r y = new K e y e d C a s s a n d r a C l i e n t F a c t o r y ( new C a s s a n d r a C l i e n t P o o l F a c t o r y ( ). C r e a t e ( ), new K e y e d C a s s a n d r a C l i e n t F a c t o r y. C o n f i g ( ) ) ; v a r c l i e n t = c l i e n t F a c t o r y. Make ( new Endpoint ( " l o c a l h o s t ", 9 1 6 0 ) ) ; v a r k e y s p a c e = c l i e n t. GetKeyspace ( " Keyspace1 " ) ; v a r path = new ColumnPath ( " Standard1 ", n u l l, " g r e e t i n g " ) ; k e y s p a c e. I n s e r t ( "0", path, " H e l l o World! " ) ; Column column = k e y s p a c e. GetColumn ( "0", path ) ; C o n s o l e. W r i t e L i n e ( column. Value ) ; Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 37 / 45

RavenDB dokumentowa JSON schema-less transakcje Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 38 / 45

Skalowalność replikacja sharding Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 39 / 45

Interfejs.NET Client HTTP RESTful API Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 40 / 45

.NET Client Example BlogPost p o s t = new BlogPost ( ) { T i t l e = " H e l l o RavenDB", C a t e g o r y = "RavenDB", Content = " This i s a b l o g about RavenDB", Comments = new BlogComment [ ] { new BlogComment ( ) { T i t l e=" U n r e a l i s t i c ", Content=" example1 " }, new BlogComment ( ) { T i t l e=" Nice ", Content=" example2 "}} } ; s e s s i o n. S t o r e ( p o s t ) ; s e s s i o n. SaveChanges ( ) ; Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 41 / 45

RESTful Example PUT / docs / B l o g P o s t s /1 HTTP/ 1. 1 Accept Encoding : d e f l a t e, g z i p Content Type : a p p l i c a t i o n / j s o n ; c h a r s e t=u t f 8 Host : 1 2 7. 0. 0. 1 : 8 0 8 0 Content Length : 378 { " T i t l e " : " H e l l o RavenDB", " C a t e g o r y " : "RavenDB", " Content " : " This i s a b l o g about RavenDB", "Comments" : [ {" T i t l e " : " U n r e a l i s t i c ", " Content " : " This example i s u n r e a l i s t i c " }, {" T i t l e " : " Nice ", " Content " : " This example i s n i c e "} ] } Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 42 / 45

Bibliografia http://nosql-database.org/ Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 43 / 45

Bibliografia http://nosqltapes.com/ Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 44 / 45

Bibliografia http://nosqlsummer.org/ Szymon Francuzik szymon.francuzik@cs.put.poznan.pl Bazy () danych NoSQL Poznań, 29.10.2012 45 / 45