Sapientia - Erdélyi Magyar TudományEgyetem (EMTE)

Slides:



Advertisements
Hasonló előadás
A hálózat működése 1. A DHCP és az APIPA
Advertisements

A virtuális munka-környezet
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
Kliens-szerver architektúra
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Alap hálózat összerakása Packet Tracerben
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Delphi programozás alapjai
Programozás III KOLLEKCIÓK 2..
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Szárnyas Gábor október 11.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Adatbázis alapú rendszerek
Készítette: Sárközi Anikó
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Implementing Demeter: A Resource Management Tool used by Morgan Stanley’s Farm Engineering Team (In English) Maczika Száva Jenő MASRAAI.ELTE Programtervező.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
SQL 2012 TKOC Magas Rendelkezésreállás II. Király István Microsoft Certified Trainer Microsoft Certified Systems Engineer.
Magas Rendelkezésreállás I.
Takács Béla Eset: Egyenrangú (peer-to-peer) hálózat Mi kell hozzá? A számítógépekben (PC-kben) legyen hálózati kártya (Network Interface Card)
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Adatbázis adminisztrátori ismeretek
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Felhasználók és jogosultságok
Készítette: Tóth Ervin
SQL.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
Illés Zoltán ELTE Informatikai Kar
Logikai programozás 8.. Adatok: ISMÉTLÉS: ADATBÁZISKEZELÉS A külső adatok a hatására bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani,
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Adatbázisok tervezése, megvalósítása és menedzselése
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
PPKE ITK 2009/10 tanév 8. félév (tavaszi) Távközlő rendszerek forgalmi elemzése Tájékoztatás
Müller László vezető fejlesztő EQL Soft Informatikai és Tanácsadó Kft.
Szerver és kliens gép közötti kommunikáció Adattárolási modellek  OLTP: OnLine Transaction Processing az MSSQL Szervert egy időben egyszerre sok felhasználó.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
Programozás III KIVÉTEL.
Minuet: A Scalable Distributed Multiversion B-Tree Írta: Benjamin Sowell, Wojciech Golab, Mehul A. Shah Feldolgozta: Fokin Miklós, Hodosy Gábor, Tóth Tamás.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben 2.2 Műveletek a.
Illés Zoltán ELTE Informatikai Kar
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
Alapszolgáltatások A fájlszerver – milyen tárolókon?
Kiss Tibor System Administrator (MCP) ISA Server 2006.
A szállítási réteg az OSI modell 4. rétege. Feladata megbízható adatátvitel megvalósítása két hoszt között. Ezt úgy kell megoldani, hogy az független.
AZURE RÉGIÓK Szoftver szolgáltatás SaaS Platform szolgáltatás PaaS Infrastruktúra szolgáltatás IaaS.
1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Adatbázis alapú rendszerek
PHP függvények MySQL adatbázisok kezelésére
Script nyelvek előadás
Script nyelvek előadás
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE)
Script nyelvek előadás
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE)
Számítógépes Hálózatok
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE)
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE)
Cache példák 2019 (IMSC).
Előadás másolata:

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 11. Előadás: Write concern, sharding

Write concern szerver lemez update CPU Alkalmazás Memória Adatok Napló w = 1; j = false

Write concern QUIZ w j 1 false Nem várjuk ki a napló felírását a lemezre gyors, kissé veszélyes true Kivárjuk a napló felírását a lemezre lassú Nem ajánlott, nincs semmiféle visszajelzés Feltételezve, hogy a lemez perszisztens, milyen w és j értékek kellenek, hogy az insert vagy update utasítás mindenképpen felírásra kerül a lemezre? w=0; j=0 w=1; j=1 w=2; j=0 w=1; j=0

Hálózati hibák (Network errors) Applikáció MongoDB w=1; j=1 insert – nincs gond, mert max duplicate key error-t ad.

Quiz: hálózati hibák (Network errors) Mi lehet az oka, ha egy alkalmazás hibaüzenetet kap akkor is, ha az írás sikeres volt. Pipáljuk a helyes megoldásokat. A hálózati TCP kapcsolat az alkalmazás és a szerver között reszettelt, miután a szerver megkapta az írást, de azelőtt, mielőtt a választ el tudta volna küldeni A MongoDB szerver leállt az írás bejövetele és a rá adott válasz között A hálózat meghibásodott az írás ideje és az az időpont között, míg a kliens megkapta a választ Az írás megszegett egy elsődleges kulcs megszorítást a kollekción

Bevezetés a replikációba Availability – üzemkészség, használhatóság Fault tolerance – hibatűrő képesség Replika – halmaz (replica set) Primary (elsődleges) Secondary(másodlagos) Secondary(másodlagos) mongod mongod mongod Appliká-ció Esik a szerver – választás következik

Replika halmaz választás - választhatóság Csomópont típusok a replikációs halmazban: Regular (szokásos) - szavaz Arbiter (bíró) - szavaz Delayed Regular(késleltetett szokásos) (P=0) szavaz Hidden (rejtett) (P=0) – elemzésre van - szavaz

Write consistency (írás konzisztencia) Primary (elsődleges) Secondary(másodlagos) Secondary(másodlagos) mongod mongod mongod R R R W Appliká-ció 8

Replika halmaz készítése mkdir -p /data/rs1 /data/rs2 /data/rs3 mongod --replSet m101 --logpath "1.log" --dbpath /data/rs1 --port 27017 --oplogSize 64 --fork –smallfiles mongod --replSet m101 --logpath "2.log" --dbpath /data/rs2 --port 27018 --oplogSize 64 --smallfiles –fork mongod --replSet m101 --logpath "3.log" --dbpath /data/rs3 --port 27019 --oplogSize 64 --smallfiles --fork

Replikáció használata config = { _id: "m101", members:[ { _id : 0, host : "localhost:27017" ,priority:0, slaveDelay:5}, { _id : 1, host : "localhost:27018"}, { _id : 2, host : "localhost:27019"} ]}; rs.initiate(config); rs.status(); Nem futtathatjuk a 27017-es porton, mert az nem lehet elsődleges szerver. mongo --port 27018 (rs.slaveOk())

Replikáció használata - Quiz Mely utasítás a mongo shell-ből az, amelyik megengedi az olvasást a másodlagos szerverről? db.isMaster() db.adminCommand({'readPreference':'Secondary"}) rs.setStatus("Primary") rs.slaveOk()

Replika-halmaz belső információk M - P M - S M - S oplog oplog oplog local adatbázisban van az oplog. Create collection és insert document külön utasítások. Oplog – capped collection, vagyis fix maximális mérete van, s a legrégibb információk elvesznek belőle.

Replika-halmaz belső információk Mely mondatok a következőkből igazak a replikáció szempontjából. Jelöljük azokat, amelyek igazak. Írhatunk az elsődleges vagy a másodlagos csomópontnak és az adatbázis továbbítja az írást az elsődleges szervernek. A replikáció támogatja a többfajta motor egyszerre való használatát. Például, egy mmapv1 elsődleges és egy wiredTiger másodlagos szervert Az oplog másolatai mind az elsődleges mind a másodlagos szervereken megjelenik. Olvasni lehet mind az elsődlegesről, mind a másodlagosról alapértelmezetten. Az oplog egy capped kollekció (max méretű, csak a legfrisseb beférő információt tárolja).

Failover and rollback Feltételezzük, hogy az elsődleges leesik, s vannak a saját oplogban olyan írási műveletek, amelyek a másodlagos szervereken nincsenek meg. Főleg az a másodlagos számít, amelyikből elsődleges lett. Ha a volt elsődleges visszaáll, megnézi az aktuális szerver oplogját, s rájön, hogy vannak olyan írási műveletek a saját oplogjában, amelyek nincsenek az új szerveren. Akkor ezeket visszaforgatja. Ennek a problémának kiküszöbölése olyanformán lehet, hogy addig nem írunk az elsődleges szerverre, míg a többi szerver több, mint fele nem írta be.

Failover and rollback - QUIZ Mi történik, ha egy csomópont visszatér, mint egy másodlagos szerver, és semmit se ismer fel az elsődleges oplog-ból? Az egész adatbázist átveszi az elsődlegesről. Egy visszaforgatás fog bekövetkezni. Az új csomópont offline-ban marad (nem lépik vissza a replika halmazba) Az új csomópont elkezdi számolni a Pi számot nagyon nagy tizedesnyi pontossággal.

Connecting to a replica set from pymongo import pymongo import sys c = pymongo.MongoClient(host= ["mongodb://localhost:27017", "mongodb://localhost:27018", "mongodb://localhost:27019"], replicaSet="m101", w=1, j=True) db = c.m101 people = db.people

Connecting to a replica set from pymongo try: print "inserting" people.insert_one({"name":"Andrew Erlichson", "favorite_color":"blue"}) print "inserting" people.insert_one({"name":"Richard Krueter", "favorite_color":"red"}) print "inserting" people.insert_one({"name":"Dwight Merriman", "favorite_color":"green"}) except Exception as e: print "Unexpected error:", type(e), e print "completed the inserts"

Mi történik amikor hiba következik be? P S S APP - pymongo Esik a szerver, az alkalmazás nem tud se írni, se olvasni.

Naiv kezelés import pymongo import sys import time c = pymongo.MongoClient(host=["mongodb://localhost:27017", "mongodb://localhost:27018", "mongodb://localhost:27019"], replicaSet="m101") db = c.m101 things = db.things things.delete_many({}) # remove all the docs in the collection for i in range(0,500): things.insert_one({'_id':i}) print "Inserted Document: " + str(i) time.sleep(.1)

Hiba felfedezése for i in range(0,500): try: things.insert_one({'_id':i}) print "Inserted Document: " + str(i) time.sleep(.1) except Exception as e: print "Exception ",type(e), e

Hiba megfelelő kezelése beszúráskor for i in range(0,500): for retry in range (3): try: things.insert_one({'_id':i}) print "Inserted Document: " + str(i) time.sleep(.1) break except pymongo.errors.AutoReconnect as e: print "Exception ",type(e), e print "Retrying.." time.sleep(5) except pymongo.errors.DuplicateKeyError as e: print "duplicate..but it worked"

Hiba megfelelő kezelése olvasáskor for i in range(0,500): for retry in range (3): try: things.find_one({'_id':i}) print "read document: " + str(i) time.sleep(.1) break except pymongo.errors.AutoReconnect as e: print "Exception ",type(e), e print "Retrying.." time.sleep(5)

Hiba megfelelő kezelése módosításkor for i in range(0,500): for retry in range (3): try: things.update_one({'_id':i}, '$inc':{'votes':1}}) print "Updated Document: " + str(i) time.sleep(.1) break except pymongo.errors.AutoReconnect as e: print "Exception ",type(e), e print "Retrying.." time.sleep(5)

Hiba kezelése módosításkor Idempotens módosítás Nem idempotens módosítás $set $inc $push Update jött létre: Újrafuttatjuk Ellenőrizzük azt, hogy megtörtént-e az update azelőtt Nem futtatjuk újra Idempotenssé alakítjuk át.

Write Concern újratöltve w j wtimeout w=1, 2, 3 j=1 w=1 – acknoledge a szervertől w=2 – acknoledge az egyik slavetől is. w=3 mindhárom eleme a replika-szetnek j=1 – journal a szerverre

Olvasási preferenciák Primary Primary preferred Secondary Secondary preferred Nearest Eventually consistent read (lehteségesen konzisztens olvasás).

Replikáció implikációjának szemléje Seed list – szerverek listája Write concern: w, j, wtimeout Read preferences Errors can happen

Bevezetés a shardingba Sharding – skálázhatóság megteremtése. s1 s2 s3 s4 s5 mongos Range based – intervallum alapú Shard key – shard kulcs chunk –darab App mongo Minden shard lehet egy replika halmaz (15 szerver)

Elkészíteni egy shard környezetet m m m m m m m m m mongos config server 27017 config server Range based Hash based config server

Sharding implikációk Minden dokumentum tartalmazza a shard kulcsot Shard kulcs nem változtatható meg Az index a shard kulcscsal kezdődik Nincs shard kulcs, mindent vizsgálj Nincs egyedi (unique) kulcs, ha nincs benne a shard kulcs

Choosing a Shard Key