Oracle ja NoSQL. Riku Nykänen

Samankaltaiset tiedostot
Oracle-tietokanta. Riku Nykänen 1/2010

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Maiju Mykkänen Susanna Sällinen

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla

CLOUDBACKUP TSM varmistusohjelmiston asennus

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Action Request System

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

MySQL Maestro. Aleksi Korpela IST4SO Markus Lamminaho IST4SO

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Uutta Remote Support Platform 3.0 -versiossa

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

LINUX-HARJOITUS, MYSQL

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Visma Liikkuvan työn ratkaisut

Työasemien hallinta Microsoft System Center Configuration Manager Jarno Mäki Head of Training Operations M.Eng, MCT, MCSE:Security, MCTS

SQL Buddy JAMK Labranet Wiki

Sovellusarkkitehtuurit

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (14) Outi Virkki Tiedonhallinta

Visma Liikkuvan työn ratkaisut Päivitysohje. Pääkäyttäjän opas

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Power BI Tech Conference Power BI. #TechConfFI. Johdanto

SELECT-lauseen perusmuoto

Valppaan asennus- ja käyttöohje

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

HELIA 1 (11) Outi Virkki Tiedonhallinta

Tietokantakurssit / TKTL

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

MYSQL-TIETOKANNAN JA OBJEKTIEN LUOMINEN JA HALLINTA ERI MYSQL- TYÖKALUILLA JOUNI HUOTARI

HAME PostGIS-tietokanta

Firebird JAMK Labranet Wiki

Tietokanta (database)

Makrojen mystinen maailma lyhyt oppimäärä

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

PRINTER DRIVER PÄÄKÄYTTÄJÄN OPAS

Fakta versio Forecast versio

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Aditro Tikon ostolaskujen käsittely versio SP1

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Tietohakemisto ja Transaktionkäsittely

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Visual Case 2. Miika Kasnio (C9767)

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

Aditro Tikon ostolaskujen käsittely versio 6.2.0

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Microsoft SQL Server -tietokannan hallinta. Jouni Huotari

SSH Secure Shell & SSH File Transfer

Webpalvelin muistitikulle - Ohje

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Kieliversiointityökalu Java-ohjelmistoon. Ohje

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

TIETOKANNAT JOHDANTO

ORACLE-PERUSTEET. Jouni Huotari

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

SAP. Lasse Metso

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Risto Pelin Microsoft Project 2002 projekti- ja yritystason järjestelmänä

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Visma Avendon asennusohje

ELM GROUP 04. Teemu Laakso Henrik Talarmo

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

HELIA 1 (14) Outi Virkki Tiedonhallinta

BaseMidlet. KÄYTTÖOHJE v. 1.00

HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE

SQL - STRUCTURED QUERY LANGUAGE

MySQL ja PostgreSQL Seminaarityö

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Käyttöjärjestelmät. 1pJÄKÄ1 KÄYTTÖJÄRJESTELMÄN HALLINTA, 12 OSP

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Transkriptio:

Oracle ja NoSQL Riku Nykänen 28.3.2012

Sisältö Oracle-tietokanta Oraclen historiaa Tietokannan rakenne ja arkkitehtuuri Oraclen ominaisuuksia Tietokannan hallintatyökalut No SQL NoSQL: mitä ja miksi? CAP teoreema Cassandra Tietotyypit Tietokannan luonti, tiedon lisääminen ja haku

Oracle lyhyesti Perustettu 1977 Ensimmäisenä tuotteena tietokanta Kasvanut innokkaasti yritysostoilla Viimeisimmät merkittävät hankinnat MySQL ja Sun Aiemmin tuotteina vain ohjelmistoja ja palveluita, mutta nykyisin myös laitteita Valmiiksi integroituja laite- ja ohjelmistoratkaisuja

Oraclen tuotteita Tietokantojen lisäksi Oracle on paljon muita tuotteita lähinnä yritysten ja suurten organisaatioiden käyttöön Lisäksi nykyisin Oracle omistaa Java-kielen oikeudet Oraclen käyttöjärjestelmiä: Oracle Linux ja Solaris Tuoteryhmiä: Middleware Collaboration Suite Financial Applications Oracle Project Portfolio Management Oracle E-Business Suite

Oraclen tietokannan erikoispiirteitä Suorituskykyorientoitunut Paljon omia laajennuksia SQL-kielessä Data dictionary -näkymät PL/SQL-kieli Java- ja XML-tuki

Oraclen tietokantatuotteita Oracle 11g R2 Express, Standard, Enterprise TimesTen BerkleyDB MySQL NoSQL BigData Appliance Exadata Database Machine

Oracle-tietokannan rakenne Yksi Oracle-sovellus voi sisältää useita tietokantainstansseja Tietokantainstansseja voidaan hallita itsenäisesti Yksi tietokantainstanssi voi pitää sisällään useita skeemoja sisältää omat käyttäjänsä (voidaan linkittää myös käyttöjärjestelmän käyttäjiin) käyttää omia tallennustiedostoja Jokainen tietokantainstanssi voi sisältää useita taulualueita, jotka taas voivat käyttää useita tietokantatiedostoja

Oraclen muistialueet Program Global Area (PGA) Yhden Oracle-prosessin käyttämä muistialue Jokaisella palvelin prosessilla on oma, jakamaton PGAmuistialueensa System Global Area (SGA) Jaettu muistialue, joka sisältää tietoa yhdestä tietokantainstanssista Useat käyttäjät voivat jakaa muistialueen avulla tietoa tietokannan tilasta Suuri SGA alue vähentää tietojen kirjoittamista ja lukemista levyltä eli parantaa suorituskykyä

Arkkitehtuuri Windowsissa tietokantaprosessi koostuu useista säikeistä (tai taustaprosesseista) Prosessi käynnistyy automaattisesti Windows-palveluna Jokaisella samalla koneella toimivalla tietokantaprosessilla on omat taustaprosessit Kuva Oracle

Joitakin SGA alueella jaettuja tietoja Buffer cache Kaikkien käyttäjäprosessien jakama välimuisti, josta kaikki tietokannan tieto luetaan ja kirjoitetaan Shared pool Uudelleen käytettävät SQL-lauseet (valmiiksi käännettyjä) Käyttäjien, taulujen ja indeksien tietoja Tietoja käyttöoikeuksista Tietoja tallennetuista proseduureista Redo log buffer Tallentaa suoritetut transaktiot ennen kuin varsinaisia tietokantatiedostoja päivitetään

DBA-käyttäjätunnukset SYS-käyttäjä Luodaan tietokannan luonnin yhteydessä automaattisesti Saa automaattisesti DBA-käyttäjäroolin Kaikki perustaulut ja näkymät luodaan SYS-käyttäjälle SYS-käyttäjän tauluja ja näkymiä saa muokata vain järjestelmä SYSTEM-käyttäjä Luodaan tietokannan luonnin yhteydessä automaattisesti Saa automaattisesti DBA-käyttäjäroolin Hallinnollinen käyttäjätunnus, joka voi luoda tauluja

Hallinnolliset käyttäjäroolit DBA-rooli Luodaan automaattisesti tietokannan luonnin yhteydessä Sisältää suurimman osan tietokannan hallintaan tarvittavista oikeuksista => ei tulisi missään tilanteessa myöntää tavalliselle käyttäjälle Ei sisällä SYSDBA- tai SYSOPER-rooleja SYSDBA- ja SYSOPER-roolit Luodaan automaattisesti tietokannan luonnin yhteydessä Molemmilla rooleilla oikeus käynnistää ja pysäyttää tietokantainstanssi Voivat hallita tietokantaa, vaikka se ei olisi auki

Oraclen dynaamiset ja staattiset näkymät Yli tuhat erilaista näkymää, joista löytyy tietoa tietokannasta ja sen objekteista Dokumentoitujen näkymien lisäksi löytyy myös dokumentoimattomia näkymiä DICTIONARY-näkymästä löytyy kaikkien dokumentoitujen näkymien nimi ja kuvaus Näkymät jakaantuvat pääasiassa staattisiin ja dynaamisiin näkymiin

Staattiset näkymät Sisäänrakennettustaattisia näkymiä on kolmea tyyppiä ALL_<tarkenne> DBA_<tarkenne> USER_<tarkenne> Taulujen metatiedot löytyvät esimerkiksi ALL_TABLES tai USER_TABLES näkymistä USER_TABLES-näyttää vain kirjautuneen käyttäjän tiedot Kaikkien tietokannan objektien tiedot löytyvät ALL_OBJECTS-näkymästä

V$-näkymät Dynaamisia näkymiä, jotka sisältävät tietoa tietokannasta ja sen tilasta Joitakin käytetyimpiä näkymiä V$PARAMETER, V$DATABASE, V$INSTANCE, V$SGA, V$SGASTAT V$SESSION, V$TRANSACTION, V$LOCK V$SQL, V$SQLAREA, V$SQLTEXT V$LOG, V$LOGFILE

SQL-funktioita TO_CHAR: muuttaa päiväyksen merkkijonoksi TO_CHAR(sysdate, 'DD-MON-YYYY HH24:MI:SS') TO_DATE: muuttaa merkkijonon päiväykseksi TO_DATE('260120101500', 'DDMMYYYYHH24MI') SYSDATE: nykyinen päiväys ja kellonaika Matemaattisia funktioita: FLOOR, CEIL, MOD, POWER, SIGN,... Merkkijonofunktioita: UPPER, LOWER, TRIM, CONCAT, REPLACE

Muita erikoisuuksia Jokaisessa taulussa sarake ROWID Jokaiselle riville yksikäsitteinen tunniste (saman tietokannan sisällä) Nopein tapa hakea yksittäinen rivi taulusta DUAL-taulu Yhden sarakkeen taulu, jossa yksi rivi Löytyy jokaisesta Oracle-tietokannasta SELECT SYSDATE FROM DUAL

PL/SQL-proseduurit PL/SQL on proceduraalinen ohjelmointikieli, jota Oracle-tietokannat tukevat versiosta 7.3 alkaen PL/SQL:llä voidaan tehdä funktioita tietokantaan, joita voidaan suorittaa osana SQL-kyselyitä tai SQL*Plus-työkalulla Proseduureilla voidaan suorittaa loogisia operaatioita, jotka eivät ole SQL-kielessä mahdollisia Proseduureille mahdollista antaa parametreja ja saada paluuarvoja

PL/SQL esimerkki DECLARE var_salary number(6); var_emp_id number(6) = 1000; BEGIN SELECT salary INTO var_salary FROM employee WHERE emp_id = var_emp_id; dbms_output.put_line(var_salary); dbms_output.put_line( 'The employee ' var_emp_id ' has salary ' var_salary); END; /

Java-funktiot Java-luokkia ja funktioita on mahdollista tallentaa tietokantaan kuten PL/SQL-proseduureja Java-luokat toteutetaan tietokannan ulkopuolella Java-luokka ladataan tietokantaan loadjavakomennolla Tämän jälkeen funktio julkaistaan tallennettuna proseduurina Sen jälkeen funktiota voidaan kutsua esim SQL*Plus:sta SQL> EXECUTE add_new_book('jon Ronson', 'The Men Who Stare At Goats'); Esimerkkejä: http://www.oracle.com/technology/sample_code/tech/ja va/jsp/dbwebservices.html

Oracle-tietokannan sovelluksia Database Configuration Assistant Net Configuration Assistant Enterprise Manager Administration Assistant SQL Developer SQL*Plus isql*plus

Oracle DBCA Database Configuration Assistant on työkalu uuden tietokantainstanssin luomiseen tai olemassa olevan asetusten muuttamiseen

Oracle DBCA DBCA kyselee instanssin luomiseen tarvittavat tiedot Wizard-tyyppisesti Asetukset on mahdollista tallentaa malliksi DBCA on mahdollista käynnistää komentorivillä ja antaa parametrit response-tiedostossa

Tietokannan luonti DBCA:lla Valitse tietokannantyyppi General Purpose or Transaction Processing Custom Database Data Warehouse Anna tietokannalle nimi (Global Database Name) ja määritä SID (Oracle System Identifier) Määritä hälytysten vastaanottajat Anna pääkäyttäjien salasanat Määritä tallennuspaikka Määritä palautusasetuset (optionaalinen, Flash Recovery Area) Valitse mahdolliset esimerkkiskeemat Määritä oletusasetukset Määritä tietoturva-asetukset Määritä tallennustiedostojen sijainnit Lopuksi luo tietokanta (voit myös tallentaa asetukset malliksi)

Oracle Net Listener Oracle Net Listener on Oracletietokantapalvelimen komponentti, joka kuuntelee asiakassovellusten yhteydenmuodostuspyyntöjä Yhteysosoitteet konfiguroidaan yleensä asiakassovelluksen tnsnames.oratiedostossa Tiedostoa voi muokata myös Net Configuration Assistant-työkalulla

Enterprise Manager Selainkäyttöinen hallintasovellus Käytännössä lähes kaikki tietokannan hallintaoperaatiot on mahdollista tehdä EM:n kautta Löytyy osoitteesta http://palvelin:5500/em 5500 oletusportti

Enterprise Managerin toimintoja Dashboard-tilanäyttö Asetusten hallinta Varmuuskopioiden hallinta ja ottaminen Logien näyttäminen Resurssien- ja käyttäjienhallinta Skeemojen selaaminen ja muokkaaminen SQL Worksheet SQL-komentojen suorittamiseen...

Oracle Administration Assistant Graafisella käyttöliittymällä varustettu hallintasovellus Lähinnä käyttäjien, ryhmien ja roolien hallintaan

Oracle SQL*Plus SQL*Plus on klassinen Oracle-tietokantojen käyttöliittymä, jolla voidaan suorittaa SQLkomentoja SQL*Plus:n ominaisuuksia tekstipohjainen käyttöliittymä SQL-skriptien suorittaminen tulosteen tallentaminen tiedostoon (myös HTML-muodossa)

SQL*Plus käynnistäminen Käynnistettynä Windowsin aloitusvalikosta SQL*Plus ottaa yhteyden oletustietokantaan Komentoriviltä käynnistettäessä on mahdollista antaa käyttäjä ja tietokanta parametrina: sqlplus käyttäjä/salasana@tietokanta SQL-tiedoston antaminen parametriksi: sqlplus me/passme@db @c:\script.sql Kirjautuminen käyttöjärjestelmän tunnuksella sqlplus /

SQL*Plus käyttö Komentokehoitteeseen voi kirjoittaa minkä tahansa SQL-lauseen tai SQL*Plus komennon SQL-lauseen loppuun lisättävä ; merkki loppuun SELECT SYSDATE FROM DUAL; / ajaa edellisen komennon uudestaan @tiedosto ajaa tiedoston sisältämät SQL-lauseet!komento suorittaa käyttöjärjestelmän komennon QUIT ja EXIT komennot sulkevat sovelluksen

SQL*Plus:n komentoja CONNECT SYS AS SYSDBA Ota yhteys pääkäyttäjänä SET PAGESIZE 100 Aseta sivun 100 riviä Kenttien otsikkorivit tulostuvat jokaiselle sivulle kerran SET LINESIZE 100 Aseta rivinleveydeksi 100 merkkiä SPOOL <tiedoston nimi> Tallenna kaikki komennot ja tulostukset tiedostoon SPOOL OFF Lopeta tallennus

SQL*Plus:n komentoja DESC TABLE/VIEWNAME Näyttää taulun tai näkymän rakenteen SHOW PARAMETERS Näyttää käytössä olevat parametrit SET TIMING ON/OFF Näyttää SQL-lauseen suoritusajan SET PAUSE ON/OFF Näyttää PAGESIZE:n muokaisen määrän rivejä kerrallaan SET AUTO ON/OFF Aseta autocommit päälle/pois

isql*plus Selainkäyttöinen versio SQL*Plus sta Palvelu täytyy käynnistää palvelimella: isqlplusctl start Tämän jälkeen isql*plus on käytettävissä selaimella osoitteessa: http://palvelimennimi:5560/isqlplus

Oracle Datapump (export/import) dpexp-sovelluksella voidaan viedä tietokannasta pois tietoa, esimerkiksi toiseen tietokantaan dpimp-sovelluksella voidaan tuoda tietoa tietokantaan

Lisää luettavaa Oracle 11R2 http://www.oracle.com/pls/db112/homepage 2-day DBA http://www.oracle.com/pls/db112/to_toc?pathname =server.112/e10897/toc.htm Oracle Technology Network http://www.oracle.com/technology/index.html

NoSQL

Mikä NoSQL? NoSQL tietokannanhallintajärjestelmien luokka, johon kuuluu sekalainen joukko tietokantoja Tyypillisiä NoSQL-tietokantojen ominaisuuksia Eivät käytä SQL kyselykielenä (jotkut tukevat) Ei tiukkoja skeeman määrityksiä Ei-ACID (atomicity, consistency, isolation, durability) Avain-arvo tyyppiset rakenteet Tukevat suuria datamassoja

Miksi NoSQL? Aika

Hajautetut tietokannat Kun käyttäjämäärät ja tiedon määrä kasvavat, tietokanta on käytännössä pakko hajauttaa Tietokantainstansseja voidaan yhdistää tietokantaklustereiksi Perinteisissä tietokannoissa tiedonvaihto tietokantainstanssien kesken (replikointi) on vaatinut paljon ennakkosuunnittelua ja konfigurointia Perinteisessä replikoinnissa on usein ns master-node, joka ohjaa replikointia Useimmissa NoSQL-tuotteissa kaikki solmut ovat tasa-arvoisia Hajautuksessa ongelmia aiheuttavat yhteyksien viiveet ja katkeamiset sekä tiedon yhtenäisyyden säilyttäminen

CAP teoreema Teoreeman mukaan et voi saada kaikkia kolmea ominaisuutta Yhtenäisyys Saatavuus (käytettävyys) Partitioitumisen kestävyys Voit valita kaksi ja säilyttää viiveen kohtuullisena Availability Consistency Cassandra Partition tolerance

Cassandra Cassandra on yksi yleisimmin käytetyistä NoSQLtietokannoista Cassandraa käyttävät mm Twitter, Netflix, Reddit.. Apache-projekti: http://cassandra.apache.org/ Tärkeimpiä ominaisuuksia Vikasietoinen Lineaarisesti skaalautuva eli soveltuu suurille tietomassoille Aidosti hajautettu (ei SPF:iä) Klusterointi helppoa Soveltuu pienistä todella suuriin petatavujen kokoisiin tietokantoihin

Tiedon rakenteen määrittäminen Cassandrassa tietorakenteet eivät suoraan vastaa relaatiotietokantojen rakenteita Tärkeimmät rakenteet ovat Column SuperColumn ColumnFamily SuperColumnFamily Keyspace

Column Column on pari (tuple), johon liittyy aikaleima Käytännössä yksi column muodostaa nimi-arvoparin, jolla on aikaleima Esimerkki columnista JSON-notaatiolla { "name": "email", "value": "riku.nykanen@relator.fi", "timestamp": "123456789" }

SuperColumn SuperColumn on pari (tuple), jonka arvon muodostaa joukko Column eja Käytännössä SuperColumn on kartta (map) Columneista Esimerkki SuperColumnista JSON-notaatiolla { "name": "osoite", } "value": { "katusoite": {"name": "katusoite, "value : "Kauppakatu27B18, "timestamp": "123456789 }, "postitoimipaikka": {"name": "postitoimipaikka, "value": "Jyväskylä", "timestamp": "123456789 }, "postinumero": {"name": "postinumero, "value": 40100", "timestamp": "123456789"}}

ColumnFamily ja SuperColumnFamily ColumnFamily vastaa relaatiotietokantojen taulua Se kokoaa joukon column eja yhteen ja voi sisältää rajattoman määrän näitä joukkoja (rivejä) SuperColumnFamily eroaa ColumnFamily:sta siten, että pelkkien nimi-arvo-parien (column) sijasta rivi muodostuu joukosta SuperColumneita (eli kartasta) Relaatiotietokannassa SuperColumnFamily täytyy yleensä esittää useampana tauluna ja viittauksina niiden välillä

ColumnFamily esimerkki User = { riku.nykanen: { firstname: Riku", lastname: Nykänen", country: Finland" }, admin: { lastname: Administrator", country: Finland", }, }

SuperColumnFamily esimerkki UserLicenses = { riku.nykanen: { office: { name: MS Office, key: ABCDE-12345 }, sophos: { name: Sophos AV, key: A123, expdate: 1.1.2014 }, vmware: { name: VMware workstation, key: 12345 }, }, admin: { sophossrv: { name: Sophos Server, key: ABC123 }, vmwareesx: { name: VMware ESXi, key: 123, expdate: 1.6.2015 }, }, }

Keyspace Keyspace vastaa tietokantainstanssia Se alle voidaan luoda column eja ja family jä Tyypillisesti yhden sovelluksen käyttämät tiedot ovat saman keyspacen alla (kuten relaatiotietokannoissa yhdessä tietokannassa) Yksi Cassandra asennus voi sisältää useamman keyspacen Replikointia kontrolloidaan keyspace:ittäin

Relaatiotietokanta vs Cassandra http://www.datastax.com/docs/1.0/ddl/about-data-model#comparing-the-cassandra-data-model-to-a-relational-database

Relaatiotietokanta vs Cassandra http://www.datastax.com/docs/1.0/ddl/about-data-model#comparing-the-cassandra-data-model-to-a-relational-database

Cassandra CLI Muista ; komennon loppuun!

Cassandra CLI Yhteydenmuodostus tietokantaan komennolla connect connect localhost/9160; Keyspacen valinta komennolla use (vrt MySQL) use demospace; Poistuminen komennolla quit tai exit

Tietokannan luominen create keyspace appdata; use appdata; create column family User with comparator = UTF8Type and column_metadata = [ {column_name: firstname, validation_class: UTF8Type}, {column_name: lastname, validation_class: UTF8Type} ];

Columnin lisääminen update column family User with column_metadata = [ {column_name: firstname, validation_class: UTF8Type}, {column_name: lastname, validation_class: UTF8Type}, {column_name: country, validation_class: UTF8Type, index_type: KEYS} {column_name: logincount, validation_class: LongType} ];

Rivien lisääminen set User[utf8( admin')]['lastname'] = 'Administrator'; set User[utf8( admin')]['country'] = 'Finland'; assume User keys as utf8; set User['riku.nykanen']['firstname'] = 'Riku'; set User['riku.nykanen']['lastname'] = 'Nykänen'; set User['riku.nykanen']['country'] = 'Finland';

[default@demo] get User where firstname='riku'; No indexed columns present in index clause with operator EQ Haku [default@demo] list User;... [default@demo] get User where country='finland'; ------------------- RowKey: riku.nykanen => (column=country, value=finland, timestamp=1332760256857000) => (column=firstname, value=riku, timestamp=1332760256767000) => (column=lastname, value=nykänen, timestamp=1332760256815000) ------------------- RowKey: admin => (column=country, value=finland, timestamp=1332760255465000) => (column=lastname, value=administrator, timestamp=1332760255432000) 2 Rows Returned. Elapsed time: 81 msec(s).

CQL Cassandra Query Language SQL:n kaltainen kyselykieli Helpottaa relaatiokannoista NoSQL:n siirtymistä

Cassandra API Ohjelmointirajapintoja löytyy useille eri kielille: Java, C++,.NET, Python, Scala, Perl, PHP... http://wiki.apache.org/cassandra/clientoptions Ei tue ODBC/JDBC-ajureita erilaisten tietomallien vuoksi Paras dokumentaatio löytyy Datastaxin sivuilta http://www.datastax.com/docs

Oracle NoSQL Useita eroja Cassandraan Tietomalli perustuu enemmän avain-arvo-pareihin Ei sisällä esim SuperColumnFamily:n tapaista tyyppiä Luvataan ACID-ominaisuudet Klusterointi hyvin saman tyyppistä Canssandran kanssa

Oracle NoSQL Key Features (Oraclen mukaan) Simple Data Model Key-value pair data structure, keys are composed of Major & Minor keys Easy-to-use Java API with simple Put, Delete and Get operations Scalability Automatic, hash-function based data partitioning and distribution Intelligent NoSQL Database driver is topology and latency aware, providing optimal data access Predictable behavior ACID transactions, configurable globally and per operation Bounded latency via B-tree caching and efficient query dispatching High Availability No single point of failure Built-in, configurable replication Resilient to single and multistorage node failure Disaster recovery via data center replication Easy Administration Web console or command line interface System and node management Shows system topology, status, current load, trailing and average latency, events and alerts

Harjoitus Luo Cassadra-CLI:llä tietokanta, jonne voi tallentaa henkilöiden osoitetietoja Hae tietokannasta tietoja CQL-työkalula

Cassandra CLI bugi Jos keyspacen luominen epäonnistuu virheeseen cassandra.yaml tiedoston puuttumisesta, korjaa CLI:n suoritushakemisto Mene Start-menussa Cassandra CLI Utilityn päälle valitse hiiren oikealla näppäimellä Properties. Muuta Start in hakemiston viimeiseksi osaksi \conf\ (oletuksena \bin\)