Top Banner
66

Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Dec 17, 2018

Download

Documents

dangquynh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,
Page 2: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wprowadzenie do NoSqlMaksymilian Wiesiołek

Page 3: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Agenda

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

Page 4: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Agenda

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

Page 5: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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.

Page 6: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

ACID a 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

CAP

Consistency

Availability Partition tolerance

Page 7: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

CAP

Partition tolerance + Availability (PA)

Partition tolerance + Consistence (PC)

Split brain

Page 8: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

● Architektura,● Struktury danych,● Scales out not up,● fault tolerance,● MapReduce/EntryProcessor/Aggregator,● Garbage Collection.

Page 9: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Architektura

Not embedded

Java Client

Warstw

a logiczna

Page 10: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Architektura

Embedded

Java Client

Embedded NoSql

Page 11: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Struktury danych

Page 12: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Struktury danych

Kolumnowa

Page 13: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Struktury danych

Kolumnowa

● BigTable (Google),● Cassandra,● HBase (!)

○ atomowość na poziomie wiersza

Keys (id) family “user”

Family “product”

row (user) 1 first_name: “...”surname: “...”group: “...”

id: “...”name: “...”number: “...”

row (user) 2

Page 14: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Struktury danych

Grafy

Page 15: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Struktury danych

Grafy

● Neo4j

Page 16: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Struktury danych

Dokument (Json)

Page 17: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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”

}]

}

Page 18: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Struktury danych

Document (Json)

● MongoDb

https://github.com/mongodb/mongo-java-driver/blob/1d2e6faa80aeb5287a26d0348f18f4b51d566759/src/main/com/mongodb/ConnectionStatus.java#L213

try {

………………………......

} catch (Exception e) {

if (!((_ok) ? true : (Math.random() > 0.1))) {

return res;

}

………………………......

}

● CouchDb

Page 19: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Struktury danych

Key-Value

Page 20: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Struktury danych

Key-Value

● Riak,● Redis,● Coherence (Hazelcast),

Page 21: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Scales out not up

● Skalowalność,● większa infrastruktura,

900MB/1000MB 900MB/1000MB

900MB/1000MB

Page 22: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Scales out not up

● Skalowalność,● większa infrastruktura,

900MB/1000MB 900MB/1000MB

900MB/1000MB 0MB/1000MB

Page 23: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Scales out not up

● Skalowalność,● większa infrastruktura,

700MB/1000MB 700MB/1000MB

700MB/1000MB 600MB/1000MB

Page 24: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Fault tolerance

Brak prądu

Page 25: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - replikacja master/slave

Master

Slave 1 Slave 2

{1, 2, 3}

{1, 2, 3} {1, 2, 3}

Page 26: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - replikacja master/slave

Master

Slave 1 Slave 2

{1, 2, 3}

{1, 2, 3} {1, 2, 3}

+ {4, 5, 6}

Page 27: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - replikacja master/slave

Master

Slave 1 Slave 2

{1, 2, 3, 4, 5, 6}

{1, 2, 3} {1, 2, 3}

Page 28: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - replikacja master/slave

Master

Slave 1 Slave 2

{1, 2, 3, 4, 5, 6}

{1, 2, 3, 4, 5, 6} {1, 2, 3}

Page 29: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - replikacja master/slave

Master

Slave 1 Slave 2

{1, 2, 3, 4, 5, 6}

{1, 2, 3, 4, 5, 6} {1, 2, 3, 4, 5, 6}

PA

Page 30: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2} {3,4}

{5,6} {7,8}

Page 31: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2}{3,4}

{3,4}{1,2}

{5,6}{7,8}

{7,8}{5,6}

Page 32: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2}{3,4}

{3,4}{1,2}

{5,6}{7,8}

{7,8}{5,6}

Page 33: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2}{3,4}

{3,4,1,2}{7,8}

{5,6}{3,4,1,2}

{7,8}{5,6}

Page 34: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2}{3,4}

{3,4}{1,2}

{5,6}{7,8}

{7,8}{5,6}

Page 35: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - horizontal partitioning (partitioned cache)

Zbiór danych: {1,2,3,4,5,6,7,8}

{1,2}{3,4}

{3,4}{1,2}

{5,6}{7,8}

{7,8}{5,6}

PA

Page 36: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Fault tolerance - vertical partitioning?

user

user_group

user_role

product

product_history

Serwer 1 Serwer 2

Page 37: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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

Page 38: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

MapReduce/EntryProcessor/Aggregator

Przykład:

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”}

Page 39: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

MapReduce/EntryProcessor/Aggregator

Całkowity zbiór: {“a”, “ab”, “abc”, “bb”, “bac”, “c”, “z”}

{“a”, “ab”, “abc”} {“bb”, “bac”}

{“c”} {“z”}

Page 40: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

MapReduce/EntryProcessor/Aggregator

Operacja Map:Serwer nr 1:

result_1=3Serwer nr 2:

result_2=2

Operacja Reduce:result = result_1 + result_2

Page 41: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Garbage Collection

● Możliwe zbudowanie systemu bez pauz GC (stop-the-world),

Page 42: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Garbage Collection

STW

Page 43: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Wstęp do NoSql

Podsumowanie

● Architektura● Struktury danych,● Scales out not up,● fault tolerance,● MapReduce/EntryProcessor/Aggregator,● Garbage Collection.

Page 44: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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”)

Page 45: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Redis

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

Page 46: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

HBase

● struktura kolumnowa,● CAP: PC (wersjonowanie),

Page 47: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

HBase

Availability

Page 48: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

HBase

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

Page 49: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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?

Page 50: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Neo4j

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

Page 51: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Coherence

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

Page 52: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Rozwiązania hybrydowe

● Polyglot persistence● Redis (import danych oraz cache) + MongoDb (trwałość) + Neo4j (relacja

między danymi)

Page 53: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Sql a NoSql

Podsumowanie

● PostgreSql,● Redis,● Hbase,● MongoDb,● Neo4j,● Coherence,● Rozwiązania hybrydowe.

Page 54: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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ą)

Page 55: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Na co warto zwrócić uwagę

Nieparzysta ilość węzłów

Page 56: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

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.

Page 57: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Zagrożenia

Migracja obiektów

user

id

first_name2

surname

user

id

first_name2

surname

age

id=1,first_name2=Jan,surname=KowalskiSerializacja

Page 58: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Zagrożenia

Migracja obiektów

user

id

first_name

surname

Zmiana nazwy pola

user

id

first_name

Usuwanie pola

user

id

first_name

age

Dodawanie pola w środku

surname

Page 59: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Testowanie

● chaos monkey● Test integracyjne (little grid)

Page 60: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Co dalej?

● GridGain● Splunk

Page 61: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Podsumowanie

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

Page 62: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Książki

Page 63: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Książki

Page 64: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Książki

Page 65: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Pytania i odpowiedzi

Page 66: Wprowadzenie do NoSql - zielona-gora-jug.github.io · wstęp do NoSql PostgreSql, Redis Hbase, MongoDb, Neo4j, Agenda Coherence, Rozwiązania hybrydowe, Na co warto zwrócić uwagę,

Dzięki

kontakt: [email protected] Uwagi, poprawki, udoskonalenia

Podziękowania dla Tomka Kleszczyńskiego, Pawła Żalejko oraz Kamila Krupy za poprawki w prezentacji