Silnik bazy danych - Database engine

Silnik bazy danych (lub silnik składowania ) to podstawowy składnik oprogramowania, że system zarządzania bazami danych (DBMS) wykorzystuje do Crud (CRUD) dane z bazy danych . Większość systemów zarządzania bazami danych zawiera własny interfejs programowania aplikacji (API), który umożliwia użytkownikowi interakcję z ich podstawowym silnikiem bez przechodzenia przez interfejs użytkownika DBMS.

Termin „silnik bazy danych” jest często używany zamiennie z „ serwerem bazy danych ” lub „systemem zarządzania bazą danych”. „Instancja bazy danych” odnosi się do procesów i struktur pamięci działającego silnika bazy danych .

Silniki pamięci masowej

Wiele nowoczesnych DBMS obsługuje wiele silników pamięci masowej w tej samej bazie danych. Na przykład MySQL obsługuje InnoDB oraz MyISAM .

Niektóre silniki pamięci masowej są transakcyjne .

Nazwa Licencja Transakcyjny
Aria GPL Nie
Sokół GPL tak
InnoDB GPL tak
MójISAM GPL Nie
InfiniDB GPL Nie
TokuDB GPL tak
WiredTiger GPL tak
XtraDB GPL tak
RocksDB GPL v2 lub Apache 2.0 tak

Dodatkowe typy silników obejmują:

Rozważania projektowe

Informacje w bazie danych są przechowywane w postaci bitów ułożonych jako struktury danych w pamięci, które mogą być wydajnie odczytywane i zapisywane zgodnie z określonymi właściwościami sprzętu. Zazwyczaj sama pamięć masowa jest zaprojektowana tak, aby spełniała wymagania różnych obszarów intensywnie wykorzystujących pamięć masową, w tym baz danych. DBMS działa zawsze jednocześnie wykorzystuje kilka rodzajów pamięci (na przykład pamięci oraz pamięci zewnętrzne) z odpowiednimi metodami układu.

W zasadzie przechowywanie bazy danych można postrzegać jako liniową przestrzeń adresową , w której każdy bit danych ma swój unikalny adres w tej przestrzeni adresowej. W praktyce tylko bardzo mały procent adresów jest przechowywany jako początkowe punkty odniesienia (co również wymaga przechowywania); dostęp do większości danych odbywa się pośrednio za pomocą obliczeń przemieszczeń (odległość w bitach od punktów odniesienia) oraz struktur danych, które definiują ścieżki dostępu (za pomocą wskaźników) do wszystkich potrzebnych danych w sposób efektywny, zoptymalizowany pod kątem potrzebnych operacji dostępu do danych.

Hierarchia przechowywania bazy danych

Działająca baza danych znajduje się jednocześnie w kilku typach pamięci, tworząc hierarchię pamięci . Z natury współczesnych komputerów większość części bazy danych wewnątrz komputera, na którym znajduje się DBMS, znajduje się (częściowo zreplikowana) w pamięci ulotnej. Dane (części bazy danych), które są przetwarzane/manipulowane, znajdują się wewnątrz procesora, prawdopodobnie w pamięci podręcznej procesora . Dane te są odczytywane z/zapisywane do pamięci, zazwyczaj przez magistralę komputerową (do tej pory zazwyczaj ulotne składniki pamięci). Pamięć komputera komunikuje dane (przesyłane do/z) pamięci zewnętrznej, zwykle za pośrednictwem standardowych interfejsów pamięci lub sieci (np. Fibre Channel , iSCSI ). Macierz pamięci , wspólna jednostka pamięci zewnętrznej, typowo ma hierarchii pamięci własnej, z szybkiej pamięci podręcznej, zwykle składający się z (ulotną i szybko) DRAM , która jest połączona (ponownie za pomocą standardowych interfejsów) na nośnik, ewentualnie z różnymi prędkościami jak dyski flash i magnetycznych dysków (nieulotna). Napędy mogą być podłączone do taśm magnetycznych , na których zazwyczaj mogą znajdować się najmniej aktywne części dużej bazy danych lub generować kopie zapasowe bazy danych.

Zazwyczaj istnieje obecnie korelacja między szybkością przechowywania a ceną, podczas gdy szybsze przechowywanie jest zwykle niestabilne.

Struktury danych

Struktura danych to abstrakcyjna konstrukcja, która osadza dane w dobrze zdefiniowany sposób. Wydajna struktura danych umożliwia efektywne manipulowanie danymi. Manipulacja danymi może obejmować wstawianie, usuwanie, aktualizowanie i pobieranie danych w różnych trybach. Pewny typ struktury danych może być bardzo skuteczny w niektórych operacjach, a bardzo nieskuteczny w innych. Typ struktury danych jest wybierany podczas opracowywania DBMS, aby jak najlepiej spełnić operacje wymagane dla typów danych, które zawiera. Typ struktury danych wybrany do określonego zadania zazwyczaj uwzględnia również rodzaj pamięci, w której się znajdują (np. szybkość dostępu, minimalny rozmiar dostępnego fragmentu pamięci itp.). W niektórych SZBD administratorzy baz danych mają swobodę wyboru spośród opcji struktur danych, które zawierają dane użytkownika ze względu na wydajność. Czasami struktury danych mają parametry, które można wybrać, aby dostroić wydajność bazy danych.

Bazy danych mogą przechowywać dane w wielu typach struktur danych. Typowe przykłady to:

Orientacja danych i grupowanie

W przeciwieństwie do konwencjonalnej orientacji wierszowej, relacyjne bazy danych mogą być również zorientowane kolumnowo lub korelacyjne w sposób, w jaki przechowują dane w dowolnej określonej strukturze.

Ogólnie rzecz biorąc, znaczną poprawę wydajności uzyskuje się, gdy różne typy obiektów bazy danych, które są zwykle używane razem, są umieszczane w pamięci masowej w pobliżu, będąc „w klastrach”. Zwykle pozwala to na odzyskanie potrzebnych powiązanych obiektów z pamięci przy minimalnej liczbie operacji wejściowych (każda czasami znacznie czasochłonna). Nawet w przypadku baz danych w pamięci klastrowanie zapewnia większą wydajność dzięki powszechnemu wykorzystaniu dużych pamięci podręcznych do operacji wejścia-wyjścia w pamięci, z podobnym wynikającym zachowaniem.

Na przykład korzystne może być zgrupowanie rekordu „artykułu” w magazynie ze wszystkimi odpowiednimi rekordami „zamówienia”. Decyzja o tym, czy klastrować określone obiekty, czy nie, zależy od statystyk wykorzystania obiektów, rozmiarów obiektów, rozmiarów pamięci podręcznych, typów pamięci itp.

Indeksowanie bazy danych

Indeksowanie to technika używana przez niektóre silniki pamięci masowej w celu poprawy wydajności bazy danych. Wiele typów indeksów ma wspólną właściwość, która ogranicza potrzebę sprawdzania każdego wpisu podczas uruchamiania zapytania. W dużych bazach danych może to skrócić czas/koszt zapytania o rzędy wielkości. Najprostszą formą indeksu jest posortowana lista wartości, które można przeszukiwać za pomocą wyszukiwania binarnego z przylegającym odnośnikiem do lokalizacji wpisu, analogicznie do indeksu na końcu książki. Te same dane mogą mieć wiele indeksów (baza pracowników może być indeksowana według nazwiska i daty zatrudnienia).

Indeksy wpływają na wydajność, ale nie na wyniki. Projektanci baz danych mogą dodawać lub usuwać indeksy bez zmiany logiki aplikacji, redukując koszty utrzymania w miarę wzrostu bazy danych i ewoluującego wykorzystania bazy danych. Indeksy mogą przyspieszyć dostęp do danych, ale zajmują miejsce w bazie danych i muszą być aktualizowane za każdym razem, gdy dane są zmieniane. Indeksy mogą zatem przyspieszyć dostęp do danych, ale spowolnić ich konserwację. Te dwie właściwości określają, czy dany indeks jest wart kosztów.

Bibliografia

Zewnętrzne linki