nosql & relax with couchdbpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf ·...

21
NoSQL - nierelacyjne systemy baz danych Relax with CouchDB Podsumowanie NoSQL & relax with CouchDB Adam Dziedzic PyWaw #23 8 kwiecie ´ n 2013 Adam Dziedzic Bazy danych NoSQL

Upload: others

Post on 14-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

NoSQL & relax with CouchDB

Adam Dziedzic

PyWaw #23

8 kwiecien 2013

Adam Dziedzic Bazy danych NoSQL

Page 2: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Agenda

1 NoSQL - nierelacyjne systemy baz danychWprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

2 Relax with CouchDBCouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

3 PodsumowanieWarsaw NoSQL User GroupNoSQL - podsumowanieSpecjalna czastka

Adam Dziedzic Bazy danych NoSQL

Page 3: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

NoSQLnierelacyjne systemy baz danych

NoSQLNoSQL = Not only SQL (nie tylko SQL)

Systemy zarzadzania bazami danych, które nie opierajasie na tradycyjnym modelu relacyjnym.

Cechy:

rezygnacja z własciwosci ACID i innych cech relacyjnych(np. złaczen)łatwe skalowanie horyzontalnebrak pojedynczego punktu awariielastyczne schematy danych (agregaty)

Adam Dziedzic Bazy danych NoSQL

Page 4: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

Dlaczego NoSQL?Big data - wielkie zbiory danych

Dynamo

Cassandra

Voldemort

Bigtable

Adam Dziedzic Bazy danych NoSQL

Page 5: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

Teoria CAPConsistency (Spójnosc), Availability (Dostepnosc), Partition tolerance (Rozproszenie)

Adam Dziedzic Bazy danych NoSQL

Page 6: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

Rodzaje baz danych NoSQL (taksonomia)podstawowe trzy rodzaje

1. Klucz-wartość

2. Bazy dokumentowe

3. Bazy kolumnowe

Inne? (grafowe, obiektowe, hierarchiczne) Bigtable

Adam Dziedzic Bazy danych NoSQL

Page 7: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

Polyglot persistence

http://bit.ly/ZHDQ1B

Polyglot Persistence

Why now?

Adam Dziedzic Bazy danych NoSQL

Page 8: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Wprowadzenie do NoSQLRodzaje i porównanie baz NoSQLPolyglot persistence

Polyglot persistence

http://bit.ly/12w8xys

Adam Dziedzic Bazy danych NoSQL

Page 9: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

CouchDB - główne komponentyRELAX, Ubuntu One, BBC, CERN

Apache CouchDB has started. Time to relax.

Adam Dziedzic Bazy danych NoSQL

Page 10: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

CouchDB - główne komponentybudowa wewnetrzna

Adam Dziedzic Bazy danych NoSQL

Page 11: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

CouchDB - główne komponentyod strony uzytkownika

Adam Dziedzic Bazy danych NoSQL

Page 12: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

CouchDB - wewnetrzna strukturadrzewo B+, plik append-only

zapisy nie blokuja odczytówdowolna liczba odczytówtrwały zapis danychduza zajetosc dysku - baza wymaga kompresji

Adam Dziedzic Bazy danych NoSQL

Page 13: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Konsekwencje pliku append-onlyCiekawostka

4 dokumenty w bazie (rozmiar w bajtach - czerwony kolor)-rw-r–r– 1 adam adam 16479 2012-06-04 18:25adam.couchpo usunieciu dokumentów: 0 dokumentów-rw-r–r– 1 adam adam 36962 2012-06-04 18:27adam.couchpo kompresji (compaction)-rw-r–r– 1 adam adam 4188 2012-06-04 18:29adam.couch

Adam Dziedzic Bazy danych NoSQL

Page 14: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Futonadministracja, replikacja, kompresja

Adam Dziedzic Bazy danych NoSQL

Page 15: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Design documentsMapReduce: liczba slotów PDU-s

function(doc) {if (doc.doc_type == ’pdu’ && doc.slotCount){emit(doc._id, doc.slotCount);

}}function(keys, values, rereduce){ return sum(values); }

incremental views: funkcje MapReduce (~ perspektywyzmaterializowane)validation functions: sprawdz wymagane polashows functions: konwertuj dokument do wybranegoformatu (np. HTML)

Adam Dziedzic Bazy danych NoSQL

Page 16: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Jak Python rozmawia z CouchDB?moduły biblioteki python-couchdb

couchdb.clientadministracja: tworzenie bazy, usuwanie, replikacja,compaction (usuwanie poprzednich wersji dokumentów)

couchdb.mapping

odwzorowanie dokumentów w formacie JSON na obiekty wjezyku Python (uwaga na pole _rev - artyfakt)

couchdb.design

zarzadzanie design document (funkcje walidacji, formatowanie)

couchdb.viewstworzenie zapytan do bazy w formie funkcji MapReduce

Adam Dziedzic Bazy danych NoSQL

Page 17: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Konfiguracja urzadzen: PDU (Power Distribution Unit)

Adam Dziedzic Bazy danych NoSQL

Page 18: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

CouchDBpython-couchdbProjekt w CERN wykorzystujacy CouchDB

Schemat danych dla CouchDBkonfiguracja urzadzenia <-> dokument w bazie CouchDB

Diagram: Logical

Author: adam

Created on: 2012-05-31 17:09:51 CEST

Modified on: 2012-12-04 15:24:06 CET

Design: DataModelConfiguration

DOCUMENT

* _id * title * doc_type

DEVICE

o hardware_model o serial_number o vendor

RACK_MEMBER

TAPE_LIBRARY

* is_active * ping_timeout

EOD

o dip_address o plc_address

RACK

* cooling_system_type

UPSTEMPERATURE_SENSOR

BLADE_ENCLOSURE

RMS

* is_active * ping_timeout

DISK_ARRAY

SERVER

PDU

* firmware_version * mac_address * smtp_server_name * smtp_server_port * email_from_address * syslog_primary_host * syslog_secondary_host * syslog_port * email_notifications_enabled * email_primary_to o email_secondary_to o dhcp_fqdn o autofw_updates o temp_humid_sensor_oid o outlet_power_oid o %_oid (% - can be replaced)

NETWORK_DEVICE

SWITCHROUTER

Adam Dziedzic Bazy danych NoSQL

Page 19: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Warsaw NoSQL User GroupNoSQL - podsumowanieSpecjalna czastka

Warsaw NoSQL User Group

CASE Co należy zrobić?

ANALIZAKtóra bazę wybrano i dlaczego?

UŻYCIEModel danych, wydajność, rozmiar danych.

DOŚWIADCZENIEMoje wnioski z użycia danej bazy.

Adam Dziedzic Bazy danych NoSQL

Page 20: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Warsaw NoSQL User GroupNoSQL - podsumowanieSpecjalna czastka

NoSQL - podsumowanie

bazy danych NoSQL dla wielkich zbiorów danych ispecjalnych form danych (graf, czesta replikacja)teoria CAP i rozproszone bazy danychrodzaje baz NoSQL

klucz-wartoscdokumentowekolumnowe

wykorzystanie bazy dokumentowej CouchDBbazy relacyjne wciaz uzyteczne w ok. 90% przypadkachpolyglot persistence - własciwa baza do danego problemu

Adam Dziedzic Bazy danych NoSQL

Page 21: NoSQL & relax with CouchDBpywaw.org/media/slides/pywaw-23-nosql-relax-with-couchdb_1.pdf · Title: NoSQL & relax with CouchDB Author: Adam Dziedzic Subject: Bazy danych NoSQL Created

NoSQL - nierelacyjne systemy baz danychRelax with CouchDB

Podsumowanie

Warsaw NoSQL User GroupNoSQL - podsumowanieSpecjalna czastka

Dziekuje za uwage

Adam Dziedzic Bazy danych NoSQL