na podstawie bazy Oracle NoSQL

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

Instrukcja CREATE TABLE

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Podstawowe wykorzystanie Hibernate

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

Programowanie obiektowe

Tworzenie aplikacji w języku Java

Terytorialna analiza danych

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Administracja bazy danych Oracle 10g

Serwery LDAP w środowisku produktów w Oracle

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

2 Przygotował: mgr inż. Maciej Lasota

Projektowanie Baz Danych GiG-2-KG Ćw. 5. Podstawy języka SQL

Dokumentacja techniczna API systemu SimPay.pl

API System Partnerski

Specyfikacja API Runtime BAS 3.0

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

dr inż. Jarosław Forenc

Metody dostępu do danych

akademia androida Składowanie danych część VI

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

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

Język SQL, zajęcia nr 1

Klasy i obiekty cz II

Bazy danych. Dr inż. Paweł Kasprowski

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

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

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Algorytmy i struktury danych. wykład 1

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

System plików warstwa logiczna

ROZSZERZAJĄC FUNKCJONALNOŚCI MEMCACHED

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wymagania dotyczące projektu do przedmiotu: Systemy baz danych 2 / Bazy danych projekt 1 (P)

Programowanie strukturalne

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Programowanie w Ruby

Podstawy otwartych języków programowania Przechowywanie danych

Bazy danych - wykład wstępny

Wykład 2. SQL 1 Structured Query Lenguage

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Programowanie obiektowe

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Dr Michał Tanaś(

Programowanie w Ruby

Aktualizacja SMSFall v Data publikacji:

Wykład 8. SQL praca z tabelami 5

Platformy Programistyczne Podstawy języka Java

Projektowanie systemów baz danych

Oracle PL/SQL. Paweł Rajba.

Java Podstawy. Michał Bereta

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

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

DBPLUS Data Replicator Subtitle dla Microsoft SQL Server. dbplus.tech

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

Bazy Danych i Usługi Sieciowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

DPDInfoServices. Specyfikacja biznesowa. Version DPD Polska Sp. z O.O. Warszawa

Laboratorium 8 Diagramy aktywności

CouchDB. Michał Nowikowski

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Przewale wszystko 1.0

Wstęp do programowania. Różne różności

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

1. Pobierz plik z diagramem związków encji schematu Uczelnia (MS Visio) oraz plik ze skryptem tworzącym tabele i wypełniający je danymi, z zasobu:

Programowanie obiektowe

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

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Dokumentacja instalacyjna i konfiguracyjna Aplikacja ADR. Wersja dokumentu 1.0. Strona 1/9

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

System plików. Warstwowy model systemu plików

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Klastrowanie bazy IBM DB2. Adam Duszeńko

ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zaawansowane aplikacje WWW - laboratorium

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

Programowanie i struktury danych

INFORMATOR TECHNICZNY WONDERWARE. Narzędzie redundancji systemu alarmowania Alarm Hot Backup dla oprogramowania. Struktura systemu redundantnego

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Bazy danych NoSQL. wprowadzenie. Szymon Francuzik Poznań,

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Programowanie w języku Java. Bazy danych SQLite w Javie

Hurtownie danych - przegląd technologii

Transkrypt:

na podstawie bazy Oracle NoSQL

Rozproszona baza danych stworzona w oparciu o Oracle Berkeley DB Java Edition Podstawowa organizacja danych typu kluczwartość Klucz złożony z klucza głównego i podrzędnego Wartość to obiekt JSON lub zestaw bajtów

Baza klucz-wartość (KVStore) jest złożona z węzłów przechowywania (storage node) Węzeł przechowania fizyczna lub wirtualna maszyna z lokalną pamięcią fizyczną Węzły przechowywania przechowują 1 lub więcej węzłów replikacji (replication node), w zależności od pojemności

Na poziomie logicznym baza KVStore podzielona jest na kawałki (shard) Kawałek składa się z węzłów replikacji Każdy kawałek składa się z węzła Master, odpowiedzialnego za operacje zapisu, oraz co najmniej jednej Repliki, odpowiedzialnej za operacje odczytu Rola Master może być przypisana do dowolnego węzła i może być przenoszona Liczba węzłów w kawałku współczynnik replikacji (replication factor)

Pary klucz wartość są przechowywane w partycjach Raz umieszczonej pary nie można przenieść do innej partycji Liczba partycji ustalana przy tworzeniu bazy i nie może być potem zmieniana Każda partycja należy do jakiegoś kawałka, kawałek może posiadać wiele partycji Po dodaniu nowych węzłów przechowywania tworzone są nowe kawałki i partycje są rozdzielane pomiędzy nowe i stare kawałki

Strefa (zone) fizyczna lokalizacja umożliwiająca dobrą komunikację pomiędzy węzłami i odseparowana od innych stref Strefy mogą być podstawowe (primary) oraz uzupełniające (secondary) Węzły w strefach uzupełniających nie mogą zostać Masterami Topologia to kolekcja stref, węzłów i usług administracyjnych razem tworzących bazę danych

Wartości tablice bajtów Można serializować/deserializować obiekty używając schematów Avro

Natywnym API jest dla Oracle NoSQL DB API Javowe Oracle dostarcza też bibliotek klienckich dla: C Klucz-wartość Tablice JavaScript Python

Klasy klienta w pakiecie oracle.kv Uchwyt do bazy (KVStore) otrymujemy z klasy fabryki (KVStoreFactory) po podaniu konfiguracji (KVStoreConfig) String[] hhosts = {"n1.example.org:5088", "n2.example.org:4129"}; KVStoreConfig kconfig = new KVStoreConfig("exampleStore", hhosts); KVStore kvstore = KVStoreFactory.getStore(kconfig);

KVStoreConfig Pozwala ustawić parametry połączenia Spójność Trwałość Hosty Timeout dla żądań Nazwa bazy Parametry uwierzytelnienia (login, hasło, handler ponownej autentyfikacji)

Możliwe wyjątki przy zapisie: DurabilityException RequestTimeoutException FaultException Zapisywanie danych: konstruowanie klucza konstruowanie wartości wstawienie danych

Konstruowanie klucza: import oracle.kv.key; import java.util.arraylist; ArrayList<String> majorcomponents = new ArrayList<String>(); majorcomponents.add( Politechnika"); majorcomponents.add( PG"); Key mykey = Key.createKey(majorComponents);

Tworzenie wartości i zapis String data = Politechnika Gdańska"; Value myvalue = Value.createValue(data.getBytes()); kvstore.put(mykey, myvalue);

Inne możliwości zapisu: KVStore.putIfAbsent() KVStore.putIfPresent() KVStore.putIfVersion() Metody put zwracają wersję utworzonej wartości (zmienia się przy nadpisywaniu)

Wyjątki takie jak przy zapisie Usuwanie metodą delete() kvstore.delete(mykey); Metoda multidelete() pozwala kasować wiele wartości poprzez nie podawanie pełnego klucza podrzędnego (tylko część lub wcale) Metoda deleteifversion() kasuje tylko, jeśli kasowana wartość ma zadaną wersję

Możliwe wyjątki: ConsistencyException RequestTimeoutException FaultException Pobieranie jednej wartości: metoda get(key) Get zwraca obiekt ValueVersion, który opakowuje dwa obiekty: Value oraz Version. ValueVersion vv = kvstore.get(mykey); Value v = vv.getvalue(); String data = new String(v.getValue());

Można uzyskać metodą multiget() Trzeba podać pełny klucz główny Aby czytać wartości, które nie mają takich samych wszystkich elementów klucza głównego, można wykorzystać metodę storeiterator() Metoda ta pozwala podać tylko fragment klucza głównego, bądź wcale go nie podawać

Możliwe ustawienia spójności: Consistency.ABSOLUTE Consistency.NONE_REQUIRED Consistency.NONE_REQUIRED_NO_MASTER Consistency.Time cpolicy = new Consistency.Time(2, TimeUnit.SECONDS, 4, TimeUnit.SECONDS); Consistency.Version(matchVersion, 200, TimeUnit.NANOSECONDS); - ustawialne tylko dla pojedynczych wołań

Potwierdzenia Tylko węzeł Master Wszystkie węzły Większość węzłów Trwałość Bufor operacji (NO_SYNC ) Bufor zapisu (WRITE_NO_SYNC ) Zapisane na dysk (SYNC ) Durability(Durability.SyncPolicy.SYNC, // Master sync Durability.SyncPolicy.NO_SYNC, // Replica sync Durability.ReplicaAckPolicy.SIMPLE_MAJORITY);

Rekord definiowany następująco: { "type": "record", "namespace": "pl.edu.pg.eti.kvstoreexample", "name": "Uczelnia", "fields": [ { "name": "nazwa", "type": "string" }, { "name": "adres", "type": "string" }, { "name": "licznosc_kadry", "type": "int" } ] }

Dostępne typy proste: Null - No value. Boolean - A binary value. Int - A 32-bit signed integer. long - A 64-bit signed integer. float - A single precision (32 bit) IEEE 754 floatingpoint number double - A double precision (64-bit) IEEE 754 floating-point number. Bytes - A sequence of 8-bit unsigned bytes. string - A Unicode character sequence.

Oracle NoSQL wspiera schematy AVRO po zarejsestrowaniu schematu w Administration CLI: kv-> ddl add-schema -file uczelnia.avsc KVStore pozwala na pobranie AvroCatalog, który dla poszczególnych obiektów udostępnia mapowania GenericAvroBinding Z kolei to mapowanie można użyć do konwersi obiektów zgodnych ze schematem na wartość i odwrotnie