32
1 Hерелационe базe података

H ерелацион e баз e података

  • Upload
    rumer

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

H ерелацион e баз e података. Појам нерелационих база података. У савременом развоју софтвера термин нерелационе базе података се односи на системе за управљање колекцијама података које: немају строгу статичку структуру података немају исцрпну проверу услова интегритета - PowerPoint PPT Presentation

Citation preview

Page 1: H ерелацион e баз e  података

1

Hерелационe базe података

Page 2: H ерелацион e баз e  података

2

У савременом развоју софтвера термин нерелационе базе података се односи на системе за управљање колекцијама података које:◦ немају строгу статичку структуру података◦ немају исцрпну проверу услова интегритета◦ не користе упитни језик SQL

Појам нерелационих база података

Page 3: H ерелацион e баз e  података

3

Недостатак релационих база података: релативно висока цена читања

◦ због нередундантности и строге структуре података

◦ отежано дистрибуирање◦ пре свега због конзистентности података◦ скупа промена структуре◦ због повезаности структуре са употребом и

оптимизацијама

Page 4: H ерелацион e баз e  података

4

Данашње веб апликације сусрећу се са следећим проблемима:

конкурентни корисници◦ милиони

количина података◦ дневна производња терабајта и петабајта података

Обрада◦ свака активност корисника захтева неку обраду података

Оптерећење◦ непредвидив пораст оптерећења◦ неравномерно оптерећење

• велика динамичност◦ непрекидно додавање нових могућности◦ промена постојећих компоненти

Пример: Веб апликације

Page 5: H ерелацион e баз e  података

5

Нема јединствене дефиниције, али се може рећи: НРБП је БП која

◦ не почива на релационом моделу података или га се бар не држи чврсто

◦ лако се дистрибуира◦ хоризонтално је скалабилна

тј. лако подноси значајне промене шеме Друге честе карактеристике:

◦ без статичке схеме◦ лака репликација◦ једноставан API◦ евентуална конзистентност

почива на скупу принципа BASE а не ACID◦ омогућава огромне количине података

Дефиниција?

Page 6: H ерелацион e баз e  података

6

Често се НРБП означавају као NoSQL базе података◦ изворно, одступање од SQL-а, као симбола РБП◦ данас многе теже да имају језик налик на SQL...◦ ...па се често тумачи као “not only SQL”

Сложене структуре података у специфичним доменима◦ објектне базе података

Висок ниво дистрибуирања◦ различите нерелационе базе података

Неопходне високе перформансе◦ меморијске базе података

Огромне количине података ниске сложености◦ различите врсте матричних база података

NoSQL

Page 7: H ерелацион e баз e  података

7

Велики број нерелационих база података почива на моделу каталога◦ Основна колекција је каталог◦ Елемент каталога може бити проста или

сложена вредност◦ Структура сложене вредности зависи од

имплементације обично је неки вид торке

◦ Вредностима се приступа по кључу◦ Базу података чини скуп каталога

Обично се назива модел кључ-вредност

Модел каталога

Page 8: H ерелацион e баз e  података

8

Иако концепти могу да подсећају на РБП (каталог-табела, вредност-ред,...) заправо постоје значајне разлике◦структура вредности обично није строго

предефинисана обично је нетипизирана

◦не инсистира се на нередундантности◦практично ретко има природних

кључева◦не постоји реф. Интегритет◦ ...

Page 9: H ерелацион e баз e  података

9

Нерелациони СУБП Примарно намењен за ДБП Динамична шема Почива на проширеном моделу каталога Иницијално развијен од стране Facebook-а Пројекат отвореног кода Један од главних пројеката фондације

Apache Међу најраспрострањенијим НРСУБП-овима

Apache Cassandra

Page 10: H ерелацион e баз e  података

10

Cassandra почива на моделу каталога

Основни појмови су:◦Колона◦фамилија колона◦Суперколона◦фамилија суперколона◦Кључ◦простор кључева

Основни појмови

Page 11: H ерелацион e баз e  података

11

Колона◦ једна вредност, праћена временом последње

измене◦ појам колоне је близак појму атрибута код РБП◦ тројка (име, вредност, време измене)

{name: “prezime”,value: “Perić”,timestamp: 123456789}

◦ поједностављен запис:prezime: “Perić”

Page 12: H ерелацион e баз e  података

12

Суперколона◦ сложена вредност, без времена последње измене◦ садржи једну или више колона◦ не постоји еквивалент код РБП, нешто као сложени

атрибут{ name: “licniPodaci”, value: { ime: { name: “ime”, value: “Pera”,

timestamp: 123456789 },prezime: { name: “prezime”, value: “Perić”,

timestamp: 123456789 }, grad: { name: “grad”, value: “Niš”,

timestamp: 123456789 }}

}

Page 13: H ерелацион e баз e  података

13

Фамилија колона◦ структура која може да садржи већи број редова

(концептуално неограничено)◦ пресликава кључ у скуп колона

ред = скуп колона◦ појам фамилије колона је близак појму табеле код РБП◦ концептуално представља каталог редова

Autori : {ivoAndric: {// pojednostavljen zapis, bez naziva i TS ime: “Ivo”,

prezime: “Andrić”, ...

}, jovanJovanovic: { ime: “Jovan”, prezime: “Jovanović”, ... },}

Page 14: H ерелацион e баз e  података

14

Простор кључева◦структура која садржи више фамилија колона

или суперколона◦концептуално одговара појму базе података

или шеме код РБПCassandra има два нивоа угњеждености први ниво је обавезан

◦ чини га пар (име колоне, колона)◦ један ред (слог, record) се састоји од произвољног броја

парова◦ парови су уређени само по имену колоне◦ ред има облик каталога◦ ред МОРА да има бар једну колону

други ниво је опцион◦ уместо да други елемент пара буде колона, то може

бити колекција парова – суперколона

Page 15: H ерелацион e баз e  података

15

Имена колона представљају истовремено◦кључеве и◦вредности

сваки ред (или суперколона) може да садржи произвољно много колона◦називи колона могу да имају улогу вредности◦вредности колона могу да буду празне

Имена колона

Page 16: H ерелацион e баз e  података

16

Пример: твитови

Page 17: H ерелацион e баз e  података

17

Свака порука представља посебну колону◦ означена је временом писања◦ колоне су уређене по имену, па тиме и по

времену писања◦ вредности колона су празне

Пример: твитови једног корисника

Page 18: H ерелацион e баз e  података

18

Назив суперколоне означава веб локацију

Вредност суперколоне је колекција колона које идентификују поруке◦ вредности колона су празне

Пример: сви твитови са неким URL-oм

Page 19: H ерелацион e баз e  података

19

Препоручује се Linux, али може и Windows

Неке интерфејсе према програмским језицима је лакше конфигурисати за Linux

Предуслови◦ Java 1.6

Инсталација система Cassandra

Page 20: H ерелацион e баз e  података

20

Page 21: H ерелацион e баз e  података

21

Командни интерфејс се покреће командом:◦ .../bin/cassandra-cli[-host localhost -port 9160]

Из командног интерфејса се излази командама◦ quit;◦ exit;

Списак команди се може добити командом:◦ ?;

Синтакса изабране команде се може добити командом:◦ ? <команда>;

Командни интерфејс

Page 22: H ерелацион e баз e  података

22

Пре било каквог рада потребно је да се успостави веза са системом који се жели користити:◦ connect localhost/9160;

После тога се могу извршавати команде, нпр.:◦ show api version;◦ show keyspaces;◦ show schema;

Повезивање

Page 23: H ерелацион e баз e  података

23

Пример прављења новог простора кључева:◦ create keyspace Test

Избор простора кључева који се користи:◦ use Test;

Прављење фамилије колона:◦ create column family User with comparator = UTF8Type;

Од верзије 0.8 подразумева се да су кључеви бројеви, али се то може променити:◦ update column family User with

key_validation_class=UTF8Type; Додавање података (не разликује се додавање од

мењања):◦ set User[’mika']['fname'] = ’Mika';◦ set User[’mika']['lname'] = 'Mikić';◦ set User[‘laza']['fname'] = ‘Laza';◦ set User[‘laza']['lname'] = null;

Прављење простора кључева

Page 24: H ерелацион e баз e  података

24

Сви подаци из фамилији колона се могу приказати са:◦list user;

Један ред се може прочитати са:◦get User[‘mika’];

Једна вредност се може прочитати са:◦get user[‘mika’][‘fname’];

Читање података

Page 25: H ерелацион e баз e  података

25

Типови колона се не морају дефинисати, али ако су непознати, не могу се проверавати подаци који се уносе, нити читко исписивати подаци који се читају

Типови колона се могу одредити командом:update column family User withcolumn_metadata = [ {column_name: fname, validation_class: UTF8Type}, {column_name: lname, validation_class: UTF8Type},]; Сада се подаци другачије исписују:

◦ list user;◦ get User[mika];◦ get user[mika][fname];

Типови колона

Page 26: H ерелацион e баз e  података

26

Тражење је иницијално могуће само по кључу Да би било могуће тражење по другим колонама,

потребни су индекси Индекси се могу дефинисати одређивањем врсте

индекса за колону:update column family User withcolumn_metadata = [ {column_name: fname, validation_class: UTF8Type, index_type: KEYS}, {column_name: lname, validation_class: UTF8Type},];

Сада је могуће приступати подацима на основу вредности у индексираној колони:◦ get User where fname = Mika;

Индекси

Page 27: H ерелацион e баз e  података

27

При употреби индекса неопходно је бити пажљив

архитектура индекса се значајно разликује у односу на РБП

сваки индекс је заправо нова фамилија колона...

Архитектура индекса

Page 28: H ерелацион e баз e  података

28

1. Cassandra је Јava базирана апликација, тако да прво она мора бити инсталирана на машини. Најновија верзија JRE може се скинути са: http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. Download Cassandra бинарни фајл са адресе: http://cassandra.apache.org/download/

3. Разпакујте Cassandra source фајл. Нпр. на D:\cassandra

4. Поставити environment променљиве. (Go to System Properties -> Tab Advanced -> button Environment Variables ... И додајте system variables на)JAVA_HOME=c:\Program Files\Java\jre6\ (треба да буде пут ка jre директоријуму, не ка bin директоријуму ...)CASSANDRA_HOME=d:\cassandra

Инсталација у Windows окружењу

Page 29: H ерелацион e баз e  података

29

5. Модификујте config фајл d:\cassandra\conf\cassandra.yaml

Променити следеће:

<CommitLogDirectory>/var/lib/cassandra/commitlog</CommitLogDirectory>

у

<CommitLogDirectory>d:/cassandra/commitlog</CommitLogDirectory>

Такође креирајте и директоријум d:/cassandra/commitlog

Следеће шта треба да се уради је:

/var/lib/cassandra/data

промените у

<DataFileDirectory>d:/cassandra/data</DataFileDirectory>

И поново креирајте директоријум d:/cassandra/data

6. Сад можете стартовати Cassandra базуИдите у директоријум d:\cassandra\bin\ и куцајте start cassandra.bat

Page 30: H ерелацион e баз e  података

30

Кад стартујете сервер требало би да добијете изглед сличан следећем:

D:\cassandra\bin>cassandra.bat

Starting Cassandra ServerListening for transport dt_socket at address: 8888 INFO 13:47:17,274 DiskAccessMode 'auto' determined to be mmap, indexAccessModeis mmap INFO 13:47:17,808 Saved Token not found. Using 157384470883646000501029173271571041806 INFO 13:47:17,809 Saved ClusterName not found. Using Test Cluster INFO 13:47:17,815 Creating new commitlog segment d:/cassandra/commitlog\CommitLog-

1280922437815.log INFO 13:47:17,886 LocationInfo has reached its threshold; switching in a freshMemtable at CommitLogContext(file='d:/cassandra/commitlog\CommitLog-1280922437815.log', position=419) INFO 13:47:17,903 Enqueuing flush of Memtable-LocationInfo@1370440457(169 bytes, 4 operations) INFO 13:47:17,905 Writing Memtable-LocationInfo@1370440457(169 bytes, 4 operations) INFO 13:47:18,082 Completed flushing d:\cassandra\data\system\LocationInfo-1-Data.db INFO 13:47:18,122 Starting up server gossip INFO 13:47:18,196 Binding thrift service to localhost/127.0.0.1:9160 INFO 13:47:18,204 Cassandra starting up...

Page 31: H ерелацион e баз e  података

31

API https://github.com/sebgiroux/Cassandra-Cluster-Admin

Cassandra-Cluster-Admin - Cassandra cluster u Web browseru!

Page 32: H ерелацион e баз e  података

32