1 / 32

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

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

rumer
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Недостатак релационих база података: • релативно висока цена читања • због нередундантности и строге структуре података • отежано дистрибуирање • пре свега због конзистентности података • скупа промена структуре • због повезаности структуре са употребом и оптимизацијама

  4. Пример: Веб апликације Данашње веб апликације сусрећу се са следећим проблемима: • конкурентни корисници • милиони • количина података • дневна производња терабајта и петабајта података • Обрада • свака активност корисника захтева неку обраду података • Оптерећење • непредвидив пораст оптерећења • неравномерно оптерећење • велика динамичност • непрекидно додавање нових могућности • промена постојећих компоненти

  5. Дефиниција? Нема јединствене дефиниције, али се може рећи: • НРБП је БП која • не почива на релационом моделу података • или га се бар не држи чврсто • лако се дистрибуира • хоризонтално је скалабилна • тј. лако подноси значајне промене шеме • Друге честе карактеристике: • без статичке схеме • лака репликација • једноставан API • евентуална конзистентност • почива на скупу принципа BASE а не ACID • омогућава огромне количине података

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

  7. Модел каталога • Велики број нерелационих база података почива на моделу каталога • Основна колекција је каталог • Елемент каталога може бити проста или сложена вредност • Структура сложене вредности зависи одимплементације • обично је неки вид торке • Вредностима се приступа по кључу • Базу података чини скуп каталога • Обично се назива модел кључ-вредност

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

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

  10. Основни појмови • Cassandra почива на моделу каталога • Основни појмови су: • Колона • фамилија колона • Суперколона • фамилија суперколона • Кључ • простор кључева

  11. Колона • једна вредност, праћена временом последње измене • појам колоне је близак појму атрибута код РБП • тројка (име, вредност, време измене) { name: “prezime”, value: “Perić”, timestamp: 123456789 } • поједностављен запис: prezime: “Perić”

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

  13. Фамилија колона • структура која може да садржи већи број редова(концептуално неограничено) • пресликава кључ у скуп колона • ред = скуп колона • појам фамилије колона је близак појму табеле код РБП • концептуално представља каталог редова Autori : { ivoAndric: { // pojednostavljen zapis, bez naziva i TS ime: “Ivo”, prezime: “Andrić”, ... }, jovanJovanovic: { ime: “Jovan”, prezime: “Jovanović”, ... }, }

  14. Простор кључева • структура која садржи више фамилија колона илисуперколона • концептуално одговара појму базе података или шеме код РБП Cassandra има два нивоа угњеждености • први ниво је обавезан • чини га пар (име колоне, колона) • један ред (слог, record) се састоји од произвољног броја парова • парови су уређени само по имену колоне • ред има облик каталога • ред МОРА да има бар једну колону • други ниво је опцион • уместо да други елемент пара буде колона, то може бити колекција парова – суперколона

  15. Имена колона • Имена колона представљају истовремено • кључеве и • вредности • сваки ред (или суперколона) може да садржи произвољно много колона • називи колона могу да имају улогу вредности • вредности колона могу да буду празне

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

  17. Пример: твитови једног корисника • Свака порука представља посебну колону • означена је временом писања • колоне су уређене по имену, па тиме и по времену писања • вредности колона су празне

  18. Пример: сви твитови са неким URL-oм • Назив суперколоне означава веб локацију • Вредност суперколоне је колекција колона којеидентификују поруке • вредности колона су празне

  19. Инсталација система Cassandra • Препоручује се Linux, али може и Windows • Неке интерфејсе према програмским језицима је лакшеконфигурисати за Linux • Предуслови • Java 1.6

  20. Командни интерфејс • Командни интерфејс се покреће командом: • .../bin/cassandra-cli [-host localhost -port 9160] • Из командног интерфејса се излази командама • quit; • exit; • Списак команди се може добити командом: • ?; • Синтакса изабране команде се може добитикомандом: • ? <команда>;

  21. Повезивање • Пре било каквог рада потребно је да се успостави везаса системом који се жели користити: • connect localhost/9160; • После тога се могу извршавати команде, нпр.: • show api version; • show keyspaces; • show schema;

  22. Прављење простора кључева • Пример прављења новог простора кључева: • 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;

  23. Читање података • Сви подаци из фамилији колона се могу приказати са: • list user; • Један ред се може прочитати са: • get User[‘mika’]; • Једна вредност се може прочитати са: • get user[‘mika’][‘fname’];

  24. Типови колона • Типови колона се не морају дефинисати, али ако су непознати,не могу се проверавати подаци који се уносе, нити читкоисписивати подаци који се читају • Типови колона се могу одредити командом: update column family User with column_metadata = [ {column_name: fname, validation_class: UTF8Type}, {column_name: lname, validation_class: UTF8Type}, ]; • Сада се подаци другачије исписују: • list user; • get User[mika]; • get user[mika][fname];

  25. Индекси • Тражење је иницијално могуће само по кључу • Да би било могуће тражење по другим колонама, потребни су индекси • Индекси се могу дефинисати одређивањем врсте индекса за колону: update column family User with column_metadata = [ {column_name: fname, validation_class: UTF8Type, index_type: KEYS}, {column_name: lname, validation_class: UTF8Type}, ]; • Сада је могуће приступати подацима на основу вредности уиндексираној колони: • get User where fname = Mika;

  26. Архитектура индекса • При употреби индекса неопходно је бити пажљив • архитектура индекса се значајно разликује у односу на РБП • сваки индекс је заправо нова фамилија колона...

  27. Инсталација у Windows окружењу • Cassandra јеЈavaбазиранаапликација, тако да прво она мора бити инсталирана на машини. Најновија верзија JRE може се скинути са: http://www.oracle.com/technetwork/java/javase/downloads/index.html • Download Cassandra бинарни фајл са адресе: http://cassandra.apache.org/download/ • Разпакујте Cassandra source фајл. Нпр. наD:\cassandra • Поставити 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

  28. 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

  29. Кад стартујете сервер требало би да добијете изглед сличан следећем: D:\cassandra\bin>cassandra.bat Starting Cassandra Server Listening for transport dt_socket at address: 8888 INFO 13:47:17,274 DiskAccessMode 'auto' determined to be mmap, indexAccessModeismmap 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 fresh Memtable at CommitLogContext(file='d:/cassandra/commitlog\CommitLog-128092243781 5.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...

  30. API https://github.com/sebgiroux/Cassandra-Cluster-Admin Cassandra-Cluster-Admin - Cassandra cluster u Web browseru!

More Related