Silnik bazy danych

Silnik bazy danych (lub silnik pamięci masowej ) to podstawowy składnik oprogramowania używany przez system zarządzania bazą danych (DBMS) do tworzenia, odczytywania, aktualizowania i usuwania (CRUD) danych 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 systemu 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 systemów DBMS obsługuje wiele silników pamięci masowej w tej samej bazie danych. Na przykład MySQL obsługuje zarówno InnoDB , jak i MyISAM .

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

Nazwa Licencja Transakcyjne Zgodność Notatki
Aria GPL NIE MariaDB i MySQL
Sokół GPL Tak MySQL Przerwane
InnoDB GPL Tak MySQL i MariaDB Wartość domyślna dla MySQL i MariaDB
Pamięć GPL NIE MySQL i MariaDB
MójISAM GPL NIE MySQL Był domyślny dla MySQL
InfiniDB GPL NIE
TokuDB GPL Tak MySQL i MariaDB Używa indeksu drzewa fraktali
Przewodowy Tygrys GPL Tak MongoDB | Domyślnie dla MongoDB
XtraDB GPL Tak Serwer MariaDB i Percona dla MySQL
RocksDB / MyRocks GPL v2 lub Apache 2.0 Tak ArangoDB , Cassandra , MariaDB, MongoDB, MySQL

Dodatkowe typy silników obejmują:

Rozważania projektowe

Informacje w bazie danych są przechowywane jako bity ułożone jako struktury danych w pamięci masowej, które można efektywnie odczytywać i zapisywać przy uwzględnieniu właściwości sprzętu. Zwykle sama pamięć masowa jest zaprojektowana tak, aby spełniała wymagania różnych obszarów, które intensywnie wykorzystują pamięć masową, w tym baz danych. Działający DBMS zawsze wykorzystuje jednocześnie kilka typów pamięci (np. pamięć i pamięć zewnętrzna) z odpowiednimi metodami rozmieszczenia .

Zasadniczo 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 zachowywany jako początkowe punkty odniesienia (co również wymaga przechowywania); dostęp do większości danych odbywa się pośrednio z wykorzystaniem obliczeń przemieszczeń (odległość w bitach od punktów odniesienia) oraz struktur danych definiujących ścieżki dostępu (za pomocą wskaźników) do wszystkich potrzebnych danych w efektywny sposób, zoptymalizowany pod kątem potrzebnych operacji dostępu do danych.

Hierarchia przechowywania bazy danych

Podczas działania baza danych znajduje się jednocześnie w kilku typach pamięci, tworząc hierarchię pamięci . Ze względu na naturę 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 ulotnej pamięci masowej. Dane (fragmenty bazy danych), które są przetwarzane/manipulowane, znajdują się wewnątrz procesora, prawdopodobnie w pamięciach podręcznych procesora . Dane te są odczytywane/zapisywane w pamięci, zwykle przez magistralę komputerową (do tej pory zazwyczaj nietrwałe komponenty pamięci masowej). Pamięć komputera przekazuje dane (przesyłane do/z) zewnętrznej pamięci masowej, zwykle za pośrednictwem standardowych interfejsów pamięci masowej lub sieci (np. Fibre Channel , iSCSI ). Macierz pamięci masowej , wspólna zewnętrzna jednostka pamięci masowej, zwykle ma własną hierarchię pamięci masowej, począwszy od szybkiej pamięci podręcznej, zwykle składającej się z (nietrwałej i szybkiej) pamięci DRAM , która jest połączona (ponownie za pośrednictwem standardowych interfejsów) z dyskami, prawdopodobnie z różnymi prędkościami, jak dyski flash i dyski magnetyczne (nieulotne). Do napędów można podłączyć taśmy magnetyczne , na których zazwyczaj znajdują się najmniej aktywne części dużej bazy danych lub generacje kopii zapasowych baz danych.

Zwykle 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 wydajne manipulowanie danymi. Manipulowanie 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 i bardzo nieskuteczny w innych. Typ struktury danych jest wybierany podczas opracowywania systemu DBMS, aby jak najlepiej spełniał operacje wymagane dla typów danych, które zawiera. Typ struktury danych wybranej dla określonego zadania zwykle bierze również pod uwagę rodzaj pamięci, w której się ona znajduje (np. szybkość dostępu, minimalny rozmiar dostępnej porcji pamięci itp.). W niektórych systemach DBMS administratorzy baz danych mają swobodę wyboru spośród opcji struktur danych zawierających dane użytkownika ze względu na wydajność. Czasami struktury danych mają wybieralne parametry w celu dostrojenia wydajności bazy danych.

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

Orientacja danych i klastrowanie

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

Ogólnie rzecz biorąc, znaczną poprawę wydajności uzyskuje się, jeśli różne typy obiektów bazy danych, które są zwykle używane razem, są umieszczane w pamięci w pobliżu, tworząc „klaster”. Zwykle pozwala to na odzyskanie potrzebnych powiązanych obiektów z magazynu przy minimalnej liczbie operacji wejściowych (każda czasami znacznie czasochłonna). Nawet w przypadku baz danych w pamięci klastrowanie zapewnia przewagę wydajności ze względu na powszechne wykorzystanie dużych pamięci podręcznych do operacji wejścia-wyjścia w pamięci, z podobnymi wynikowymi zachowaniami.

Na przykład korzystne może być zgrupowanie rekordu „towaru” w magazynie ze wszystkimi odpowiednimi rekordami „zamówień”. 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ść polegającą na tym, że zmniejszają potrzebę sprawdzania każdego wpisu podczas wykonywania 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 przyległym odnośnikiem do lokalizacji wpisu, analogicznie do indeksu na końcu książki. Te same dane mogą mieć wiele indeksów (baza danych 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, zmniejszając koszty utrzymania wraz z rozwojem bazy danych i rozwojem 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 spowalniać konserwację danych. Te dwie właściwości określają, czy dany indeks jest wart swojej ceny.

Linki zewnętrzne