La differenza tra istanza e database in SQL Server e in Oracle

Datamaze
13.09.23 11:04 AM Comment(s)

Questo articolo ha lo scopo di fare chiarezza ed evitare le ambiguità che possono esserci quando si parla di database e di istanza in diversi DBMS, in particolare in Oracle e in SQL Server.


Database e istanza in Oracle

Un’istanza Oracle è un insieme di processi/thread di background e un'area di memoria condivisa cui essi accedono; essa (la memoria) è il luogo in cui mantenere dati volatili e non persistenti che saranno poi scritti su disco. Un'istanza del database può esistere anche senza alcuno spazio di archiviazione su disco.


Il database invece è l’insieme dei dati e metadati che si decide di organizzare in maniera strutturata al fine di ricercare, elaborare e mettere a disposizione le informazioni oggetto di interesse; questi dati saranno scritti su file fisici specializzati in base alla funzione che svolgono: datafile, controlfile, redologs e tempfiles.

I due termini vengono talvolta usati in modo intercambiabile, ma abbracciano concetti molto diversi. La relazione tra di essi è che un database può essere montato ed aperto da molte istanze. Un'istanza può montare ed aprire un singolo database in qualsiasi momento. Infatti, un'istanza monterà ed aprirà al massimo un singolo database in tutta la sua vita.

Abbiamo visto quindi che un'istanza è un insieme di processi di sistema operativo o un singolo processo con molti thread, e della memoria; questi processi possono operare su un database che altro non è che è una collezione di file (file di dati, file temporanei, file di redo log e file di controllo). In qualsiasi momento, un'istanza avrà solo un insieme di file (un database) associato ad essa. Nella maggior parte dei casi, anche l'opposto è vero: un database avrà solo un'istanza che vi lavora. Tuttavia, nel caso speciale del RAC, Real Application Clusters, ossia un ambiente distribuito costituito da più computer, potremo avere molte istanze che montano e aprono contemporaneamente un singolo database, che risiede su un insieme di dischi fisici condivisi. Si avrà quindi una distribuzione del carico di elaborazione su architettura distribuita che garantisce alta affidabilità e soluzioni estremamente scalabili.
Oracle e SQL Server

Database e istanza in SQL Server

In SQL Server un’istanza del motore di database è una copia del file eseguibile sqlservr.exe eseguita come servizio del sistema operativo. Ogni istanza gestisce diversi database di sistema e uno o più database utente. Quindi, su un server, è possibile avere più di una istanza. Le applicazioni utilizzate dagli utenti vanno ad eseguire operazioni sui dati memorizzati nei database, connettendosi all’istanza, la quale gestisce le richieste delle applicazioni.

Un database è un insieme di tabelle con dati strutturati. Una tabella è composta da righe (record o tuple) e colonne (attributi). Ogni colonna contiene un tipo specifico di informazione, come date, nomi, importi o numeri.

Un computer (server) può avere, come abbiamo visto, una o più istanze di SQL Server installate. Ogni istanza di SQL Server può contenere uno o più database. All'interno di un database, ci sono uno o più gruppi di proprietà degli oggetti, chiamati schemi. All'interno di ogni schema ci sono oggetti di database come tabelle, viste e procedure memorizzate. Alcuni oggetti come certificati e chiavi asimmetriche sono contenuti all'interno del database, ma non sono contenuti all'interno di uno schema.

I database di SQL Server vengono archiviati nel sistema come file (estensione .mdf e .ndf) che possono essere organizzati in filegroups (raggruppamenti logici). 

Conclusioni

Istanza e database sono due concetti fondamentali nei sistemi di gestione di database relazionali, quindi è importante comprendere le differenze tra questi due concetti e le loro differenti declinazioni per poter utilizzare efficacemente un RDBMS.


di Alice Sella e Anna Bruno, pubblicato il 13 settembre 2023