BD1 15


Bazy danych 1
1 Obiektowość
Obiektowość (object-orientation, object-orientedness) [16] Teoretyczna, ideologiczna i praktyczna koncep-
cja bazująca na wyróżnianiu obiektów o dobrze określonych granicach oraz semantyce; dotyczy ona progra-
mów, danych i rzeczywistości opisywanej przez dane. Naczelną misją obiektowości jest walka z nadmierną zło-
żonością metodyk, projektów, języków, systemów i zastosowań. Tę misję obiektowość realizuje poprzez nacisk
na mechanizmy abstrakcji, mechanizmy kompozycji/dekompozycji złożonych struktur (obiektów), mechani-
zmy hermetyzacji i ukrywania niepotrzebnej informacji, oraz własności sprzyjające abstrakcji i ponownemu
użyciu. Do tych pojęć i mechanizmów zaliczane są obiekty, tożsamość, klasy, typy, hermetyzacja, polimorfizm
i pózne wiązanie. Uważa się, że dzięki tym mechanizmom obiektowość bardziej sprzyja naturalnym men-
talnym i psychologicznym uwarunkowaniom podmiotów rzeczywistości informatycznej (klientów, analityków,
projektantów, programistów, użytkowników, itd.)
Propozycja: Object-relational DBMSs: The Next Great Wave, Stonebraker M., Morgan Kaufmann
Publishers Inc., 1996
yródło: Systemy baz danych, Thomas Conoly, Carolyn Begg, RM, Warszawa 2004
Obiektowość i bazy danych:
" Systemy Bazodanowe Zorientowane Obiektowo (OODBMS, ang. Object Oriented Database Manage-
ment Systems)  systemy bazodanowe zaprojektowane od podstaw jako obiektowe,
" Obiektowo  Relacyjne Systemy Bazodanowe (ORDBMS, ang. Object-Relational Database Manage-
ment Systems)  zwane też postrelacyjnymi lub hybrydowymi, systemy powstałe najczęściej poprzez
rozszerzenie istniejących relacyjnych systemów bazodanowych o cechy obiektowe,
" Mapowania Obiektowo-Relacyjne (ORM, Object-relational mapping)  odwzorowanie modelu obiekto-
wego (występującego w języku programowania) na model relacyjny (występującego w bazie danych).
1.1 Obiektowe bazy danych
Manifest obiektowych baz danych [1]:
1. Musi być możliwe definiowanie obiektów złożonych.
2. Konieczna jest implementacja tożsamości obiektów.
3. Musi być możliwe stosowanie hermetyzacji.
4. System musi realizować typy lub klasy.
1
5. Musi istnieć możliwość dziedziczenia przez typy lub klasy po poprzednikach.
6. Musi być zaimplementowane wiązanie dynamiczne.
7. Język manipulowania danymi musi być obliczeniowo zupełny.
8. Zbiór typów danych musi być rozszerzalny.
9. Musi być zapewniona trwałość danych.
10. System musi mieć możliwość sprawnego przetwarzania bardzo dużych baz danych.
11. System musi obsługiwać wielodostęp.
12. System musi być w stanie odtworzyć dane po awarii sprzętu lub oprogramowania
13. System musi zawierać prosty mechanizm zapytań.
Manifest systemów baz danych trzeciej generacji [1] opublikowany przez CADF (ang. Committee for
Advanced DBMS Functions):
1. SZBD trzeciej generacji musi mieć bogaty system typów.
2. Dziedziczenie to dobry pomysł.
3. Funkcje, dołączenie procedur bazy danych, metod oraz hermetyzacja to również dobre rozwiązanie.
4. Unikalne identyfikatory rekordów powinny być przypisywane przez SZBD tylko wówczas, gdy brak
zdefiniowanego przez użytkownika klucza głównego.
5. Reguły (wyzwalacza, więzy) powinny być podstawowymi elementami przyszłych systemów. Nie powinny
być przy tym powiązane z żadnymi konkretnymi funkcjami lub kolekcjami.
6. Dostęp do bazy danych z programu powinien być możliwy tylko za pośrednictwem nieproceduralnego
języka dostępu wysokiego poziomu.
7. Powinny istnieć przynajmniej dwa sposoby określania kolekcji: przez wyliczenie elementów oraz poprzez
zapytanie określające elementy kolekcje.
8. Bardzo ważne są modyfikowalne perspektywy.
9. Wskazniki efektywności nie mają nic wspólnego z modelem danych i nie mogą być jego elementem
składowym.
10. SZBD trzeciej generacji muszą być dostępne z wielu języków programowania wysokiego poziomu.
11. Pożądane są trwałe wersje wielu różnych języków wysokiego poziomu. Wszystkie one powinny być
dostępne dla jednego SZBD poprzez rozszerzenia kompilatora i odpowiednio zaprogramowany system
uruchamiania.
12. Na dobre i na złe, SQL, pozostaje  ogólnoludzkim językiem baz danych .
13. Zapytania i ich wyniki powinny stanowić najniższy poziom komunikacji pomiędzy klientem a serwerem.
1.1.1 ODMG
ODMG (ang. Object Data Management Group wcześniej Object Database Management Group) jest or-
ganizacjÄ… utworzonÄ… przez firmy (Sun Microsystems, eXcelon Corporation, Objectivity Inc., POET Software,
Computer Associates, Versant Corporation) rozwijajÄ…ce obiektowe bazy danych majÄ…cÄ… na celu stworzenie
standardu dla systemów obiektowych baz danych. Jednakże w 2001 została ona rozwiązana, a wiązania dla
języka Java zostały następnie zastąpione przez standard Java Data Objects (JDO). W 2006 roku została
utworzona kolejna organizacja o nazwie Object Database Technology Working Group (ODBTWG), której
celem jest opracowanie nowej wersji standardu.
2
1.1.2 JDO
Standard JDO (ang. Java Data Object) zapewnia niezależny interfejs pomiędzy bazą danych, a apli-
kacją bez potrzeby mapowania klas. JDO może współpracować z relacyjnymi bazami danych, obiektowy-
mi bazami danych, repozytoriami XML, systemami plików itp. Implantacja wykonana przez DataNucleus
(http://www.datanucleus.org/) współpracuje z Oracle, MySQL, Derby, HSQLDB, Informix, PostgresSQL,
SQLServer, DB2 Sybase, H2, GAE/ J Datastore, HBase, Cassandra, Neo4j, XLS, ODF, OOXML, XML,
JSON, AmazonS3, GoogleStorage, MongoDB, NeoDatis, LDAP, db4o, VMForce.
1.2 Obiektowo-relacyjne bazy danych
Typy obiektowe w Oracle
Uproszczona składania typu obiektowego [5]:
CREATE [OR REPLACE] TYPE [schemat.]nazwa_typu [AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (
atrybut1 typ_danych,
[atrybut2 typ_danych,]
[metoda1]
[metoda2]);
/
Uproszczona składnia ciała typu obiektowego [5]:
CREATE [OR REPLACE] TYPE BODY [schemat.]nazwa_typu {IS | AS}
[STATIC | MEMBER] PROCEDURE ciało_procedury
[STATIC | MEMBER | CONSTRUCTOR] FUNCTION ciało_funkcji
[MAP | ORDER] MEMBER FUNCTION ciało_funkcji
/
Atrybuty [6]:
" musi być co najmniej jeden atrybut,
" atrybuty muszą znajdować się przed metodami,
" typ atrybutu:
 dowolny typ bazy danych oprócz: ROWID, UROWID, LONG, LONG RAW, NCHAR, NCLOB,
NVARCHAR2
 typ PL/SQL oprócz BINARY INTEGER, BOOLEAN, PLS INTEGER, RECORD, REF CUR-
SOR,
 typ wbudowany,
 typ zdefiniowany przez użytkownika,
" nie można stosować ograniczenia NOT NULL,
" nie można używać wartości domyślnych.
Metody [6]:
[STATIC | MEMBER] PROCEDURE specyfikacja_procedury
[STATIC | MEMBER | CONSTRUCTOR] FUNCTION specyfikacja_funkcji
[MAP | ORDER] MEMBER FUNCTION ciało_funkcji,
deklaracja_dyrektywy
Metody:
" składowe (MEMBER),
" statyczne (STATIC),
" konstruktory (CONSTRUCTOR) - dla każdego typu obiektowego istnieje predefiniowany konstruktor
o takiej samej nazwie i atrybutach jak typ.
3
Metody służące do porównywania i sortowania:
" MAP - służy do przekształcenia obiekt na typ umożliwiający sortowanie, zwraca DATE, NUMBER,
VARCHAR2, CHAR, REAL, jeżeli używane jest dziedziczenie metoda MAP może wystąpić w typach
pochodnych tylko jeżeli występowała w typie bazowym,
" ORDER - przyjmuje jeden parametr typu obiektowego i zwraca wartość typu NUMBER, wartość zwra-
cana jest wynikiem porównania obiektu przekazanego jako parametr z danym obiektem, jeżeli używane
jest dziedziczenie metoda ORDER musi znajdować się w typie bazowym, a typy pochodne nie mogą jej
przesłaniać.
Przykład:
CREATE OR REPLACE TYPE zespolona AS OBJECT (
re NUMBER(5,2),
im NUMBER(5,2),
CONSTRUCTOR FUNCTION zespolona(re NUMBER, im NUMBER)
RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION zespolona(re NUMBER)
RETURN SELF AS RESULT,
MEMBER PROCEDURE dodaj (z zespolona),
MEMBER PROCEDURE drukuj
);
/
CREATE OR REPLACE TYPE BODY zespolona AS
CONSTRUCTOR FUNCTION zespolona(re NUMBER, im NUMBER)
RETURN SELF AS RESULT IS
BEGIN
SELF.re := re;
SELF.im := im;
RETURN;
END;
CONSTRUCTOR FUNCTION zespolona(re NUMBER)
RETURN SELF AS RESULT IS
BEGIN
SELF.re := re;
SELF.im := 0;
RETURN;
END;
MEMBER PROCEDURE dodaj (z zespolona) IS
BEGIN
SELF.re := SELF.re + z.re;
SELF.im := SELF.im + z.im;
END;
MEMBER PROCEDURE drukuj IS
BEGIN
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE( RE= || SELF.re ||  , IM= || SELF.im);
END;
END;
/
SET SERVEROUTPUT ON
DECLARE
z1 zespolona := zespolona(1,2);
z2 zespolona := zespolona(3);
BEGIN
z1.drukuj;
z2.drukuj;
4
z1.dodaj(z2);
z1.drukuj;
END;
/
1.3 Mapowanie obiektowo-relacyjne
Mapowanie obiektowo relacyjne (ORM, ang. Object-Relational Mapping) może zostać wykonane samo-
dzielnie lub przy pomocy odpowiedniego oprogramowania, takiego jak np. Hibernate, DataNucleus, TopLink,
LINQ to SQL, ActiveRecord.
Mapowanie obiektowo-relacyjne powinno realizować odwzorowanie:
" poszczególnych klas,
" związków dziedziczenia (Concrete Table, Single Table, Joined Table),
" związków asocjacji (OneToOne, OneToMany, ManyToMany).
2 NoSQL
NoSQL ( not only SQL ) [15]:
" zdolność do skalowania horyzontalnego przepustowości  prostych operacji na wielu serwerach,
" zdolność do replikacji i rozpraszania (podziału) danych pomiędzy wiele serwerów,
" prosty interfejs poziomu wywołania albo protokół,
" słabszy model współbieżności niż ACID, np. BASE
BASE = Basically Available, Soft state, Eventually consistent
ACID = Atomicity, Consistency, Isolation, Durability
" wydajne użycie rozproszonych indeksów oraz pamięci RAM do przechowywania danych,
" zdolność do dodawania nowych atrybutów do rekordów danych.
Podstawowe rodzaje składów danych NoSQL [15]:
" klucz  wartość (ang. key value stores) np. Dynamo, memcached,
" dokumentów (ang. document stores) np. MongoDB,
" zorientowane kolumnowo (ang. column oriented stores) np. BigTable,
" oparte na grafach (ang. graph stores/graph databases) np. Neo4j.
Literatura
[1] Thomas Connolly, Carolyn Begg,  Systemy baz danych , Wydawnictwo RM, 2004
[2] Jeffrey D. Ullman, Jennifer Widom,  Podstawowy wykład z systemów baz danych , WNT, 2001
[3] Jeffrey D. Ullman, Jennifer Widom,  Systemy baz danych Pełny wykład , WNT, 2006
[4] Kevin Loney, Bob Bryla,  Oracle Database 10g Podręcznik administratora baz danych , Helion, 2008
[5] Scott Urman, Ron Hardman, Michael McLaughlin,  Oracle Database 10g Programowanie w języku
PL/SQL , Helion, 2008
[6] Ramez Elmasri, Shamkant B. Navathe,  Wprowadzenie do systemów baz danych , Helion, 2005
[7] Jose A. Ramalho,  Oracle 8i , Mikom, 2001
5
[8]  Oracle®Database SQL Language Reference 11g Release 1 (11.1) B28286-02 (b28286.pdf)
[9]  Oracle®Database SQL Language Quick Reference 11g Release 1 (11.1) B28285-02 (b28285.pdf)
[10] Joe Celko,  SQL Zaawansowane techniki programowania , PWN, 2008
[11] Jason Price,  Oracle Database 11g i SQL Programowanie , Helion, 2009
[12] Oracle®Database PL/SQL Language Reference 11g Release 1 (11.1) B28370-02 (B28370.pdf)
[13] Jason Price, Oracle Database 11g i SQL Programowanie, Helion, 2009
[14]  Oracle Database 11g. Przewodnik dla poczÄ…tkujÄ…cych , I. Abramson, M. Abbey, M. Corey, M. Malcher,
Helion, 2010
[15]  Oracle®Database SQL Reference 11g Release 2 (11.2) , E26088-03
[16] Kazimierz Subieta,  Słownik terminów z zakresu obiektowości , Akademicka Oficyna Wydawnicza PLJ,
Warszawa 1999
6


Wyszukiwarka

Podobne podstrony:
BD1
BD1
bd1
BD1
BD1
BD1
BD1
bd1
bd1
BD1
BD1
bd1

więcej podobnych podstron