Czym dokładnie jest silnik bazy danych?

14

Kilka razy przejrzałem definicję na http://en.wikipedia.org/wiki/Database_engine :

Mechanizm bazy danych (lub „silnik pamięci”) jest podstawowym składnikiem oprogramowania używanym przez system zarządzania bazą danych (DBMS) do tworzenia, odczytu, aktualizacji i usuwania (CRUD) danych z bazy danych.

Nie rozumiem tylko, co zostało do zrobienia, czy CRUD nie jest wszystkim, co robią bazy danych?

Jeśli aparat bazy danych wykonuje te funkcje, co robi reszta bazy danych?

Lazer
źródło
Bezpośrednią odpowiedź na pytanie postawione pogrubioną czcionką ( co robi reszta bazy danych? ), Patrz odpowiedź Bryana. Aby uzyskać więcej jasności na temat działania silnika bazy danych, oprócz CRUD, zobacz odpowiedź Leigh.
nealmcb

Odpowiedzi:

15

CRUD ma na celu zdefiniowanie właściwości niezbędnych dla bazy danych, ponieważ dotyczy trwałego przechowywania. Nie ma na celu opisania wszystkiego, co mógłby zrobić silnik bazy danych.

Dla porównania, zasadniczo pojazd jest urządzeniem używanym do transportu. Chociaż jest to prawda, ta definicja z pewnością nie obejmuje wszystkich szczegółów związanych z nowoczesnym samochodem.

Silnik bazy danych może obsługiwać wielu użytkowników, transakcje , MVCC (Multiversion Concurrency Control) , bufory i pamięci podręczne, ACID (atomowość, spójność, izolacja, trwałość) , a także różne poziomy izolacji . Odczyt może pobierać dane z pamięci, zdalnych baz danych i wielu tabel na dysku przetwarzających je za pomocą SQL za pośrednictwem wielu jawnych i / lub niejawnych ścieżek kodu w celu przedstawienia ich żądającej aplikacji. Tworzenie może przydzielić pamięć, struktury udostępniania, przypisać wartości i wykonać własne przetwarzanie przed zapisaniem danych. Itp.

Leigh Riffel
źródło
To jest bardzo zwarta, ale kompletna odpowiedź. +1 !!!
RolandoMySQLDBA
BTW Fajna analogia na temat pojazdu do konkretnego typu pojazdu.
RolandoMySQLDBA,
Moim zdaniem Transakcje, gwarancja ACID, poziomy izolacji, kontrola współbieżności, bufory, pamięci podręczne są obsługiwane przez sam aparat bazy danych. Dlaczego tak mówię? ... Sprawdź to linux.org/threads/an-introduction-to-mysql-storage-engines.4220
Shatu
@Leigh, Czy współbieżność (brak) nie jest cechą silnika pamięci, a nie DBMS? Jeśli jest to cecha DBMS, to dlaczego MariaDB / MySQL nie może przeprowadzać transakcji dla niektórych silników pamięci, takich jak MyISAM?
Pacerier
@Pacerier - Może tak być w przypadku systemów, które oddzielają DBMS i silnik pamięci, dla innych rozróżnienie nie ma znaczenia.
Leigh Riffel
12

Niektóre bazy danych mogą obsługiwać wiele silników, w zależności od najlepszego dopasowania do zadania. Na przykład wiele moich aplikacji używa InnoDB do większości danych (ograniczenia klucza i blokowanie na poziomie wiersza), MyISAM do danych sesji (szybkie, mniej przetwarzania) i ArchiveDB do ścieżki audytu (tylko skompresowane i wstawione / zaznaczone, bez aktualizacji / usuwania).

„Reszta” oprogramowania bazy danych zapewnia wspólny interfejs do użytku przez interfejsy API lub terminale, pozwala na złożone działania (takie jak łączenia, podzapytania itp.) Oraz zarządza kondycją / statusem i konfiguracją dołączonych silników. Zasilanie i obsługa silnika ma wiele, a oprogramowanie bazy danych ukrywa całą tę złożoność.

Bryan Agee
źródło
Dzięki za odpowiedź na pytanie postawione pogrubioną czcionką!
nealmcb