Che cos'è esattamente un motore di database?


14

Ho esaminato più volte la definizione su http://en.wikipedia.org/wiki/Database_engine :

Un motore di database (o "motore di archiviazione") è il componente software sottostante che un sistema di gestione di database (DBMS) utilizza per creare, leggere, aggiornare ed eliminare i dati (CRUD) da un database.

Quello che non capisco è ciò che resta da fare, CRUD non è tutto ciò che fanno i database?

Se il motore di database esegue queste funzioni, cosa fa il resto del database?


Per una risposta diretta alla domanda posta in grassetto ( cosa fa il resto del database? ), Vedi la risposta di Bryan. Per maggiore chiarezza su ciò che fa un motore di database, oltre a CRUD, vedere la risposta di Leigh.
nealmcb,

Risposte:


15

CRUD ha lo scopo di definire le caratteristiche necessarie per un database in relazione all'archiviazione persistente. Non ha lo scopo di descrivere tutto ciò che potrebbe essere fatto da un motore di database.

Per fare un confronto, fondamentalmente un veicolo è un dispositivo utilizzato per il trasporto. Sebbene sia vera, questa definizione non include certamente tutti i dettagli di un'automobile moderna.

Un motore di database può gestire più utenti, transazioni , MVCC (Multiversion Concurrency Control) , buffer e cache, ACID (atomicità, coerenza, isolamento, durabilità) , nonché diversi livelli di isolamento . Una lettura può estrarre i dati dalla memoria, dai database remoti e da più tabelle su disco elaborandoli utilizzando SQL attraverso più percorsi di codice espliciti e / o impliciti al fine di presentarli all'applicazione richiedente. Una creazione può allocare l'archiviazione, fornire strutture, assegnare valori ed eseguire la propria elaborazione prima di archiviare i dati. Eccetera.


Questa è una risposta molto compatta, ma completa. +1 !!!
RolandoMySQLDBA,

A proposito Bella analogia sul veicolo rispetto al tipo specifico di veicolo.
RolandoMySQLDBA,

A mio avviso, Transazioni, garanzia ACID, livelli di isolamento, controllo della concorrenza, buffer, cache sono tutti gestiti dal Motore di database stesso. Perché lo dico io? ... Dai
Shatu,

@Leigh, la concorrenza (della mancanza di) non è una caratteristica del motore di archiviazione e non del DBMS? Se è una funzionalità del DBMS, perché MariaDB / MySQL non potrebbe effettuare transazioni per determinati motori di archiviazione come MyISAM?
Pacerier

@Pacerier - Questo può essere vero per i sistemi che fanno una separazione tra il DBMS e il motore di archiviazione, per altri la distinzione non ha senso.
Leigh Riffel,

12

Alcuni database possono eseguire molti motori, a seconda della soluzione migliore per il lavoro. Ad esempio, molte delle mie applicazioni utilizzano InnoDB per la maggior parte dei dati (vincoli chiave e blocco a livello di riga), MyISAM per dati di sessione (veloce, meno elaborazione) e ArchiveDB per audit trail (solo compressi e inserisci / seleziona, nessun aggiornamento / eliminazione).

Il "resto" del software di database fornisce un'interfaccia comune da utilizzare tramite API o terminali, consente azioni complesse (come join, sottoquery, ecc.) E gestisce l'integrità / lo stato e la configurazione dei motori inclusi. C'è molto da fare per l'alimentazione e la cura di un motore e il software del database nasconde tutta quella complessità.


Grazie per aver effettivamente risposto alla domanda posta in grassetto!
nealmcb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.