Wprowadzenie do NoSql. Maksymilian Wiesiołek

Podobne dokumenty
Hbase, Hive i BigSQL

NoSQL & relax with CouchDB

Bazy danych NoSQL. wprowadzenie. Szymon Francuzik Poznań,

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

Technologie Informacyjne

Definicja. Not Only SQL

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

Bazy danych NoSQL. Szymon Francuzik Poznań,

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

Nierelacyjne bazy danych

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

Bazy danych. Dr inż. Paweł Kasprowski

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

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

Hurtownie danych wykład 5

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

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

BAZY DANYCH WYKŁAD 5 NO-SQL DATABASE

Bazy danych 9. SQL Klucze obce Transakcje

przykłady problemów; realizacja dostaw części od producenta do klienta:

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

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

Zaawansowany kurs języka Python

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Wprowadzenie do baz NoSQL

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

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

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

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Systemy rozproszone danych strukturalnych

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Wprowadzenie do Hurtowni Danych

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

CouchDB. Michał Nowikowski

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wprowadzenie do Hurtowni Danych

CZĘŚĆ I. WARSTWA PRZETWARZANIA WSADOWEGO

Bazy danych 6a. Transakcje. P. F. Góra

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Transakcje jednocześnie ACID

Bazy danych - ciągłość działania, spójność danych i disaster recovery. Daniel Polek-Pawlak Jarosław Zdebik

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

Rozwiązania bazodanowe EnterpriseDB

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Microsoft SQL Server Podstawy T-SQL

Wprowadzenie do Apache Spark. Jakub Toczek

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

1 Instalowanie i uaktualnianie serwera SQL Server

SR - kolos 1 opracowanie

Searching for SNPs with cloud computing

Administracja bazami danych

SAS Access to Hadoop, SAS Data Loader for Hadoop Integracja środowisk SAS i Hadoop. Piotr Borowik

Narzędzia i trendy Big Data

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

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

Zapytanie ofertowe

Tematy projektów Edycja 2014

SQL/MySQL. Rafał Kern

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

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

Bazy danych. Andrzej Łachwa, UJ, /15

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

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Bazy danych i usługi sieciowe

Opisy efektów kształcenia dla modułu

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

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

Nowe technologie baz danych

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Systemy Rozproszone. Zagadnienia do egzaminu.

Właściwości transakcji

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

PHP: bazy danych, SQL, AJAX i JSON

Przechowywanie danych

Java Persistence API - zagadnienia zaawansowane

Oracle PL/SQL. Paweł Rajba.

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

Zarządzanie transakcjami

Need for speed. Kliknij, aby edytować style wzorca tekstu jak sobie radzić z dużą ilością użytkowników i danych

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

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Internetowe bazy danych

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

ZAŁĄCZNIK NR 5 - GRUPA PRODUKTÓW 5: OPROGRAMOWANIE BAZODANOWE

070 TRANSAKCJE. Prof. dr hab. Marek Wisła

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

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Słonie pracują w stadzie

EXSO-CORE - specyfikacja

Adam Cankudis IFP UAM

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

Transkrypt:

Wprowadzenie do NoSql Maksymilian Wiesiołek

Agenda O mnie, ACID a CAP, wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j,

Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę, Zagrożenia, Testowanie, Co dalej? książki, Pytania odpowiedzi.

O mnie Maksymilian Wiesiołek programista z ponad 6 letnim doświadczeniem (BigData i aplikacje mobilne), Zainteresowania/hobby BigData, uczenie maszynowe (TensorFlow, Andrew Ng), algorytmy i struktury danych (Robert Sedgewick), światowy kryzys ekonomiczny (Inside Job; Liar s Poker, Michael Lewis), HFT (Flash Boys, Michael Lewis), magnetyzm (Walter Lewin), squash.

ACID a CAP CAP ACID Atomicity (atomowość), wszystko albo nic, Consistency (spójność), zapewnienie spójności, Isolation (read uncommitted, read committed, repeatable read, serializable), Durability, trwałość i aktualność danych po zatwierdzeniu transakcji Consistency Availability Partition tolerance

CAP Partition tolerance + Availability (PA) Partition tolerance + Consistence (PC) Split brain

Wstęp do NoSql Architektura, Struktury danych, Scales out not up, fault tolerance, MapReduce/EntryProcessor/Aggregator, Garbage Collection.

Not embedded Wstęp do NoSql t lien ac Jav Warstwa logiczna Architektura

Embedded Wstęp do NoSql Architektura Java Client Embedded NoSql

Wstęp do NoSql Struktury danych

Wstęp do NoSql Struktury danych Kolumnowa

Struktury danych BigTable (Google), Cassandra, HBase (!) atomowość na poziomie wiersza Kolumnowa Keys (id) family user Family product row (user) 1 first_name:... surname:... group:... id:... name:... number:... row (user) 2

Wstęp do NoSql Struktury danych Grafy

Struktury danych Grafy Neo4j

Wstęp do NoSql Struktury danych Dokument (Json)

Struktury danych Document (Json) MongoDb atomowość poprzez blokowanie całego dokumentu, { users: [ user: { id: 1, first_name: Jan, surname: Kowalski }, user: { id: 2, first_name: John, surname: Doe } ] }

Struktury danych MongoDb https://github.com/mongodb/mongo-java-driver/blob/1d2e6faa8 0aeb5287a26d0348f18f4b51d566759/src/main/com/mongodb/ ConnectionStatus.java#L213 Document (Json) try {... } catch (Exception e) { if (!((_ok)? true : (Math.random() > 0.1))) { return res; }... } CouchDb

Wstęp do NoSql Struktury danych Key-Value

Struktury danych Key-Value Riak, Redis, Coherence (Hazelcast),

Skalowalność, większa infrastruktura, Wstęp do NoSql Scales out not up 900MB/1000MB 900MB/1000MB 900MB/1000MB

Skalowalność, większa infrastruktura, Wstęp do NoSql Scales out not up 900MB/1000MB 900MB/1000MB 900MB/1000MB 0MB/1000MB

Skalowalność, większa infrastruktura, Wstęp do NoSql Scales out not up 700MB/1000MB 700MB/1000MB 700MB/1000MB 600MB/1000MB

Fault tolerance Brak prądu

Master Wstęp do NoSql {1, 2, 3} Fault tolerance - replikacja master/slave {1, 2, 3} {1, 2, 3} Slave 1 Slave 2

Master Wstęp do NoSql + {4, 5, 6} {1, 2, 3} Fault tolerance - replikacja master/slave {1, 2, 3} {1, 2, 3} Slave 1 Slave 2

Master Wstęp do NoSql {1, 2, 3, 4, 5, 6} Fault tolerance - replikacja master/slave Slave 1 {1, 2, 3} Slave 2 {1, 2, 3}

Master Wstęp do NoSql {1, 2, 3, 4, 5, 6} Fault tolerance - replikacja master/slave Slave 1 {1, 2, 3, 4, 5, 6} Slave 2 {1, 2, 3}

Master Wstęp do NoSql PA {1, 2, 3, 4, 5, 6} Fault tolerance - replikacja master/slave Slave 1 {1, 2, 3, 4, 5, 6} Slave 2 {1, 2, 3, 4, 5, 6}

Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {5,6} {7,8}

Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {3,4} {1,2} {5,6} {7,8} {7,8} {5,6}

Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {3,4} {1,2} {5,6} {7,8} {7,8} {5,6}

Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {3,4,1,2} {7,8} {5,6} {3,4,1,2} {7,8} {5,6}

Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {3,4} {1,2} {5,6} {7,8} {7,8} {5,6}

PA Zbiór danych: {1,2,3,4,5,6,7,8} Wstęp do NoSql Fault tolerance - horizontal partitioning (partitioned cache) {1,2} {3,4} {3,4} {1,2} {5,6} {7,8} {7,8} {5,6}

Wstęp do NoSql us e uc od pr r t Fault tolerance - vertical partitioning? t_ uc hi up ro od pr _g er us or st y us er _r ole Serwer 1 Serwer 2

Wstęp do NoSql MapReduce/EntryProcessor/Aggregator Przesłanie algorytmu do danych a nie danych do algorytmu, EntryProcessor/Aggregator - nazewnictwo z Coherence to samo co MapReduce

Przykład: Wstęp do NoSql MapReduce/EntryProcessor/Aggregator Całkowity zbiór: { a, ab, abc, bb, bac, c, z } Cel: Obliczyć sumę wszystkich elementów z zakresu: a-b. Serwer nr 1: Zbiór: { a, ab, abc } Serwer nr 2: Zbiór: { bb, bac } Serwer nr 3: Zbiór: { c } Serwer nr 4: Zbiór: { z }

Całkowity zbiór: { a, ab, abc, bb, bac, c, z } Wstęp do NoSql MapReduce/EntryProcessor/Aggregator { a, ab, abc } { c } { bb, bac } { z }

Wstęp do NoSql Operacja Map: Serwer nr 1: result_1=3 Serwer nr 2: result_2=2 MapReduce/EntryProcessor/Aggregator Operacja Reduce: result = result_1 + result_2

Wstęp do NoSql Garbage Collection Możliwe zbudowanie systemu bez pauz GC (stop-the-world),

Wstęp do NoSql Garbage Collection STW

Wstęp do NoSql Podsumowanie Architektura Struktury danych, Scales out not up, fault tolerance, MapReduce/EntryProcessor/Aggregator, Garbage Collection.

PostgreSql ACID, scales up Rozproszone transakcje i joiny nie skalują się Zaawansowane indeksowanie, niestandardowe typy danych, Rozszerzenia Zapytania geograficzne (wyszukiwanie po koordynatach), ponad 40 lat rozwoju (1970, Berkeley, Interactive Graphics and Retrieval System )

Redis magazyn danych (data store), brak MapReduce, key-value, bardzo szybki CAP: P, ewentualnie A, ewentualnie P snapshot Replikacja master/slave

HBase struktura kolumnowa, CAP: PC (wersjonowanie),

HBase Availability

HBase atomowość na poziomie wiersza, brak indexowania, brak sortowania, procz klucza (domyslnie)

MongoDb struktura - dokument, CAP: PC (blokowanie całego dokumentu) replikacja master/slave dobrze się sprawdza kiedy struktura danych jest nieznana i często się zmienia, CERN z tego korzystał, czy nadal?

Neo4j struktura graf CAP: PA skalowanie: replikacja master/slave zależność między danymi

Coherence HashMap, bardzo drogi, Hazelcast, dużo funkcjonalności CAP: PA (replikacja master/slave, horizontal partitioning) migracja obiektów

Rozwiązania hybrydowe Polyglot persistence Redis (import danych oraz cache) + MongoDb (trwałość) + Neo4j (relacja między danymi)

Sql a NoSql Podsumowanie PostgreSql, Redis, Hbase, MongoDb, Neo4j, Coherence, Rozwiązania hybrydowe.

Na co warto zwrócić uwagę MapReduce/EntryProcessor, powinien się szybko wykonywać, Integracja z DI (Spring), Narzędzie do budowania projektu (Maven,Gradle), Automatyczne instalacja instancji na wszystkich węzłach tworzących klaster (Ansible), Monitorowanie każdego węzła (JMX), Liczba węzłów powinna być liczbą nieparzystą (niektóre rozwiązania radzą sobie z parzystą liczbą)

Na co warto zwrócić uwagę Nieparzysta ilość węzłów

Zagrożenia Operacje bazodanowe w MapReduce/EntryProcessor/Aggregator, Transakcje wielopoziomowe (zapis do bazy + dodanie wiadomości do JMS), Przesył danych po sieci (między węzłami), wykonywanie algorytmu tam gdzie są dane, Wywołanie MapReduce/EntryProcessor w MapReduce/EntryProcessor może doprowadzić do zakleszczenia (deadlock), migracja obiektów.

user id Zagrożenia first_name2 surname Migracja obiektów user id first_name2 surname age Serializacja id=1,first_name2=jan, surname=kowalski

Zmiana nazwy pola Zagrożenia Migracja obiektów Usuwanie pola user user id id first_name first_name surname Dodawanie pola w środku user id first_name age surname

Testowanie chaos monkey Test integracyjne (little grid)

Co dalej? GridGain Splunk

Podsumowanie ACID a CAP, Wstęp do NoSql, Sql a NoSql, Na co warto zwrócić uwagę, Zagrożenia, Testowanie, Co dalej?

Książki

Książki

Książki

Pytania i odpowiedzi

Dzięki kontakt: maksymilian.wiesiolek@gmail.com Uwagi, poprawki, udoskonalenia Podziękowania dla Tomka Kleszczyńskiego, Pawła Żalejko oraz Kamila Krupy za poprawki w prezentacji