Nei database orientati agli oggetti (OODB), gli utenti possono impostare operazioni su un particolare database, che è composto da oggetti che possono essere di un'ampia varietà di tipi e per i quali sono impostate le operazioni. Possono gestire in modo efficiente informazioni binarie come oggetti multimediali. Un altro vantaggio aggiuntivo di OODB è che può essere programmato con lievi differenze procedurali senza influire sull'intero sistema.
Prerequisiti per la creazione dello standard
La storia dei database OODB orientati agli oggetti inizia alla fine del secolo scorso. Sono stati creati per soddisfare le esigenze di nuove applicazioni. Il presupposto era che i database orientati agli oggetti avrebbero rivoluzionato i sistemi software negli anni '90. Ora è chiaro che non è così. Tuttavia, la rinascita di questo concetto attraverso le comunità del software libero e l'identificazione di applicazioni adatte per esso motiva una revisione delle caratteristicheOODB, che è un' alternativa agli onnipresenti database relazionali.
Orientato agli oggetti offre la flessibilità per gestire alcuni o tutti i requisiti e non si limita ai tipi di dati e ai linguaggi di query dei database tradizionali. Una caratteristica fondamentale degli OODB è la capacità che forniscono allo sviluppatore, consentendogli di specificare sia la struttura di oggetti complessi che le operazioni dell'applicazione. Un altro motivo per creare OODB è il crescente utilizzo dei linguaggi per lo sviluppo di software.
I database sono diventati la base di molti sistemi informativi, ma i database tradizionali sono difficili da usare quando le applicazioni che vi accedono sono scritte in C++, Smalltalk o Java. Ad esempio, i database orientati agli oggetti 1C sono stati progettati in modo tale da poter essere integrati direttamente con le applicazioni che utilizzano linguaggi orientati agli oggetti adottando i loro concetti: Visual Studio. Net, C++, C, Microsoft SQL Server e altri
Il principale vantaggio di OODB è la completa eliminazione della necessità di RMs1 (impedenza) con conseguenti miglioramenti delle prestazioni.
Difetti:
- Meccanismi di consultazione molto primitivi, nessuna piattaforma accettata auto-standard.
- Impossibile memorizzare le procedure perché è possibile accedere agli oggetti solo nel client.
- Immaturità nel mercato.
- Nessun raggruppamento fisico di oggetti.
Paragma dell'oggetto
I database orientati agli oggetti sono database programmabili che memorizzano dati complessi e le relative relazioni direttamente senza assegnare righe e colonne, rendendoli più adatti per applicazioni che funzionano con batch di grandi dimensioni. Gli oggetti hanno relazioni molti-a-molti e sono accessibili tramite l'uso di puntatori ad essi associati per stabilire relazioni. Come ogni programmabile, OODB fornisce un ambiente di sviluppo delle applicazioni e un repository persistente pronto per lo sfruttamento. Memorizza e manipola informazioni che possono essere digitalizzate sotto forma di oggetti, fornisce un accesso rapido e offre grandi capacità di elaborazione.
Concetti di base utilizzati in un database orientato agli oggetti:
- identità dell'oggetto;
- tipo di costruttore;
- compatibilità linguistica;
- tipo gerarchie ed ereditarietà;
- elaborazione di oggetti complessi;
- polimorfismo e sovraccarico degli operatori;
- creazione di versioni.
Per considerare pienamente tutti gli aspetti che caratterizzano un database orientato agli oggetti, è importante notare tutti i paradigmi degli oggetti importanti:
- Encapsulation è una proprietà che ti consente di nascondere le informazioni per altri oggetti, prevenendo così accessi o conflitti errati.
- L'ereditarietà è una proprietà mediante la quale gli oggetti ereditano il comportamento in una gerarchia di classi.
- Il polimorfismo è una proprietà di un'operazione a cui può essere applicatodiversi tipi di oggetti.
- L'interfaccia o la firma di un'operazione include il nome e i tipi di dati dei suoi argomenti o parametri.
- L'implementazione o il metodo di un'operazione è specificato separatamente e può essere modificato senza influire sull'interfaccia. Le applicazioni utente possono lavorare con i dati chiamando operazioni specificate tramite i loro nomi e argomenti, indipendentemente da come sono state implementate.
Classi e funzionalità
Quando si considera il concetto di classi in OODB, è necessario distinguere tra i termini "classe" e "tipo". Un tipo viene utilizzato per descrivere un insieme di oggetti con un comportamento simile. In questo senso, dipende da quali operazioni possono essere richiamate sull'oggetto. Una classe è una raccolta di oggetti che condividono la stessa struttura interna, quindi definisce un'implementazione, mentre un tipo descrive come usarla.
Il termine istanziazione si riferisce al fatto che l'istanza di una classe può essere utilizzata per produrre un insieme di oggetti che hanno la stessa struttura e comportamento impostati dalla classe.
Una caratteristica molto importante per l'evoluzione degli oggetti è che può cambiare la sua classe, inclusi attributi e operazioni, pur mantenendo l'identità. Ciò richiederebbe un meccanismo per gestire l'integrità semantica risultante.
Ereditare il database orientato agli oggetti di un'organizzazione consente di definire una classe come una sottoclasse di una superclasse già esistente. Erediterà tutti gli attributi e i metodi da quest'ultimo e può facoltativamente definirepossedere. Questo concetto è un meccanismo importante per supportare il riutilizzo. Le stesse parti della struttura di due classi diverse possono essere definite solo una volta in una superclasse comune, quindi verrà scritto meno codice. Esistono alcuni sistemi che consentono a una classe di essere una sottoclasse di più di una superclasse. Questa funzione è chiamata eredità multipla invece di eredità singola.
Esempio di database orientato agli oggetti
Spesso è utile usare lo stesso nome per metodi diversi ma simili della superclasse multimediale dalle classi immagine e video. Molti file possono essere visualizzati da diversi visualizzatori. Spesso hanno bisogno di visualizzare tutte le foto e i video utilizzando il metodo "visualizza" e deve essere avviato il programma appropriato. Quando viene chiamata la funzione e viene passato un collegamento al video, viene avviato il lettore multimediale. Per implementare questa funzionalità, prima di tutto, è necessario definire l'operazione di "presentazione" nella superclasse media comune dalle classi immagine e video. Ciascuna delle sottoclassi ridefinisce l'operazione di ricerca per le proprie esigenze specifiche. Ciò si traduce in metodi diversi che hanno lo stesso nome dell'operazione. In questo caso, l'utilizzo di questa funzione ha un vantaggio importante.
Struttura OODB
Il paradigma orientato agli oggetti si basa sull'incapsulamento di dati e codice relativi a ciascun oggetto in un unico modulo. Concettualmente, tutte le interazioni tra esso e il resto del sistema vengono eseguite tramite messaggi. Da qui l'interfacciatra di loro è determinato dal set consentito.
In generale, ogni oggetto è associato ad un set:
- Variabili che contengono dati oggetto e corrispondono agli attributi del modello ER.
- Messaggi a cui risponde. Ciascuno può avere o meno parametri, uno o più.
- Metodi, ognuno dei quali è un codice che implementa i messaggi e restituisce un valore in risposta ad esso.
La messaggistica in un ambiente OO non implica l'uso di SMS fisici nelle reti di computer. Al contrario, si riferisce allo scambio di richieste tra oggetti, indipendentemente dai dettagli corretti della loro attuazione. A volte un'espressione chiama un metodo per attivare il fatto che un messaggio è stato inviato a un oggetto e utilizza l'esecuzione del metodo corrispondente.
Identità dell'oggetto
Il sistema di database orientato agli oggetti fornisce un'identificazione univoca per ogni oggetto indipendente memorizzato nel database. Di solito è implementato utilizzando un identificatore di oggetto univoco o OID generato dal sistema. Il valore OID è invisibile all'utente esterno, ma il sistema lo utilizza internamente per gestire i collegamenti tra gli oggetti.
La proprietà principale di un OID è di essere immutabile. Il valore OID per un particolare oggetto non dovrebbe mai cambiare. Ciò preserva l'identità del mondo reale rappresentato. È inoltre preferibile che ciascun OID venga utilizzato una sola volta, anche se viene rimosso dal database, il suo OID non deve essere assegnato a un altro. È anche spesso considerato inappropriato basarlo su un fisicol'indirizzo dell'oggetto in memoria, poiché riorganizzarli nel database può modificare l'OID. Tuttavia, alcuni sistemi utilizzano l'indirizzo fisico come OID per aumentare l'efficienza del recupero degli oggetti. Un framework orientato agli oggetti impone automaticamente vincoli relazionali, generalmente più applicabili: dominio, chiave, integrità dell'oggetto e integrità referenziale.
Tre principali costruttori
In OODB, valori o stati di oggetti complessi possono essere creati da altri utilizzando costruttori di determinati tipi. Un modo per rappresentarli è pensare a ciascuno come a una tripletta (i, c, v), dove i è l'identificatore univoco dell'oggetto (OID), c è il costruttore, cioè un puntatore a come è il valore dell'oggetto creato e v è il valore o lo stato dell'oggetto. Potrebbero esserci più costruttori a seconda del modello di dati e del sistema OO.
Tre costruttori di database orientati agli oggetti di base:
- atomi;
- tuple;
- set.
Altri usi più comuni sono elenchi e grafici. C'è anche il dominio D, che contiene tutti i valori atomici di base direttamente disponibili sul sistema. In genere includono numeri interi, numeri reali, stringhe di caratteri, date e qualsiasi altro tipo di dati che il sistema gestisce direttamente. Sia la struttura degli oggetti che le operazioni sono incluse nelle definizioni delle classi.
Compatibilità con i linguaggi di programmazione
I concetti fondamentali dei database orientati agli oggetti vengono utilizzati income strumenti di progettazione e codificati per funzionare con il database.
Ci sono diverse lingue possibili in cui questi concetti possono essere integrati:
- Espansione di un linguaggio per l'elaborazione dati come SQL aggiungendo tipi complessi e OOP. I sistemi forniscono estensioni orientate agli oggetti ai sistemi relazionali, chiamati sistemi relazionali orientati agli oggetti.
- Usare un linguaggio di programmazione orientato agli oggetti esistente ed estenderlo per lavorare con i database. Sono chiamati linguaggi di programmazione persistenti e consentono agli sviluppatori di lavorare direttamente con i dati senza dover passare attraverso un linguaggio di elaborazione dati come SQL. Sono chiamati persistenti perché i dati continuano ad esistere dopo la fine del programma che li ha creati.
Quando decidi quale opzione utilizzare, tieni presente che i linguaggi persistenti tendono ad essere potenti ed è relativamente facile commettere errori di programmazione che danneggiano il database. La complessità dei linguaggi rende difficili le ottimizzazioni automatiche di alto livello, come la riduzione dell'I/O del disco. In molte applicazioni, la possibilità di effettuare query dichiarative è importante, ma i linguaggi persistenti attualmente non consentono tali query senza problemi.
Gerarchia dei tipi di eredità
Gli schemi di database orientati agli oggetti in genere richiedono un numero elevato di classi. Tuttavia, diverse classi sono simili tra loro. Per consentire una rappresentazione diretta delle somiglianze tra loro, è necessario inserirein una gerarchia di specializzazioni. Questo concetto è simile ai modelli ER. Le specializzazioni di classe sono chiamate sottoclassi, che definiscono attributi e metodi aggiuntivi per una classe esistente. Gli oggetti creati con le sottoclassi ereditano tutto dal genitore. Alcune di queste caratteristiche ereditate potrebbero essere state prese in prestito da quelle più in alto nella gerarchia.
Gli oggetti sono considerati complessi perché richiedono una grande quantità di spazio di archiviazione e non fanno parte dei tipi di dati standard offerti di solito da Object Oriented Database Management (OODBS). Poiché la dimensione degli oggetti è significativa, SOOBMS può ricevere una parte di un oggetto e fornirla a un'applicazione prima di acquisire l'intero oggetto. Può anche utilizzare metodi buffer e cache per ottenere parti di un oggetto in anticipo, prima che un'applicazione possa accedervi.
OODB consente agli utenti di creare nuovi tipi che includono sia la struttura che le operazioni, in questo caso il sistema di tipi estensibili. È possibile creare librerie di nuovi tipi definendone la struttura e le operazioni. Molti di essi possono memorizzare e ricevere un oggetto strutturato di grandi dimensioni sotto forma di stringhe e caratteri o bit, che vengono passati "così com'è" al programma applicativo per l'interpretazione.
Il metodo può accedere direttamente agli attributi dell'oggetto target per nome, inclusi quelli ereditati dalle classi genitore, ma deve accedere agli attributi di altri oggetti con segnali secondari. Il concetto consente di associare lo stesso nome operatore o simbolo a cuidue o più diverse implementazioni di esso, a seconda del tipo di oggetti a cui si applica.
Costruzione di app
Molte applicazioni di database che utilizzano sistemi OO richiedono più versioni dello stesso oggetto. In genere, le attività di manutenzione vengono applicate a un sistema software al variare dei requisiti e comporta la modifica di alcuni moduli di sviluppo e implementazione. Se il sistema è già in esecuzione e se è necessario modificare uno o più moduli, lo sviluppatore deve creare una nuova versione di ciascuno di essi apportando le modifiche.
Nota che ci possono essere più di due versioni di un oggetto, nel caso ne siano necessarie due oltre al modulo originale. Le proprie versioni dello stesso modulo software possono essere aggiornate contemporaneamente. Questo è chiamato progettazione di database paralleli orientati agli oggetti. Tuttavia, arriva sempre un punto in cui è necessario unirli affinché l'OODB ibrido incorpori le modifiche apportate in modo che siano compatibili.
Condizioni orientate agli oggetti
Tutti i sistemi informatici devono avere le proprietà della loro architettura per essere presi in considerazione. Ad esempio, un sistema deve avere tabelle per essere considerato relazionale. OODB non fa eccezione e contiene alcune proprietà di base dell'architettura degli oggetti. Tuttavia, nel mondo reale, molte di queste proprietà vengono discusse e alcune, come l'ereditarietà multipla, sono considerate miglioramenti al modello di database orientato agli oggetti piuttosto checome parte della linea di base. Ad esempio, nel linguaggio orientato agli oggetti Smalltalk, l'ereditarietà multipla non è supportata, anche se è considerata parte dell'architettura degli oggetti.
I metodi per una classe definiscono un insieme di operazioni che possono essere eseguite su un oggetto. Ad esempio, quando viene applicato a un oggetto, restituisce un valore o esegue alcune operazioni per aggiornare i valori. A volte i metodi non lo restituiscono. Se il metodo fosse progettato per aggiornare il numero di passeggeri per un veicolo, non verrebbe restituito alcun valore, ma l'elemento dati nel target lo modificherebbe.
Gli oggetti sono un concetto fondamentale in OODB. In sostanza, gli oggetti sono una rappresentazione astratta delle cose del mondo reale che sono memorizzate in esso. Un oggetto è un'istanza di una classe nel senso che è escluso dalla sua definizione.
Puoi pensare a un oggetto come a un pacchetto autonomo composto da tre parti:
- Proprie informazioni personali, valori dei dati.
- Procedure private che manipolano i valori attraverso la definizione della classe.
- Apri l'interfaccia in modo che questo oggetto possa comunicare con gli altri.
Esempi OODB
L'uso di OODB semplifica la concettualizzazione perché è più naturale rappresentare le informazioni che devono essere archiviate. Per modellare la struttura o la logica di un database, l'uso dei diagrammi di classe consente di introdurre classi con le loro relazioni strutturali ed ereditarietà. Al fine di modellare parte della dinamica, dell'interazione ecomportamento tra oggetti, verrà utilizzato un diagramma di sequenza per rappresentare l'interazione tra oggetti che si trovano in una relazione temporanea, descrivendo i possibili stati in modo che possano essere trovati dato lo stato modificato dopo che l'evento si è verificato.
Di seguito è mostrato un esempio di database orientato agli oggetti.
Hanno un nome e una vita, che può essere temporanea o permanente. La chiave OODB è la capacità che forniscono allo sviluppatore di specificare quante strutture e operazioni verranno applicate. C'è flessibilità e supporto per la gestione di tipi di dati complessi. Puoi creare classi e sottoclassi, ad esempio, la base di clienti può avere una sottoclasse del collegamento di questo cliente e erediterà tutti gli attributi e le caratteristiche della classe originale, questo approccio ti consente di elaborare dati complessi in modo rapido e flessibile.