Baza danych - Database

Z Wikipedii, wolnej encyklopedii
Instrukcja SQL select i jej wynik

Baza danych jest zorganizowana zbiór danych , zazwyczaj przechowywane i udostępniane w formie elektronicznej z systemu komputerowego. Tam, gdzie bazy danych są bardziej złożone, często są tworzone przy użyciu formalnego projektowania i technik modelowania .

System zarządzania bazą danych (DBMS) to oprogramowanie, które współdziała z użytkownikami końcowymi , aplikacjami i samą bazą danych w celu przechwytywania i analizowania danych. Oprogramowanie DBMS zawiera dodatkowo podstawowe funkcje służące do administrowania bazą danych. Całość bazy danych, DBMS i powiązanych aplikacji można określić jako „system baz danych”. Często termin „baza danych” jest również używany w luźnym odniesieniu do dowolnego DBMS, systemu baz danych lub aplikacji powiązanej z bazą danych.

Informatycy mogą klasyfikować systemy zarządzania bazami danych według modeli baz danych , które obsługują. Relacyjne bazy danych stały się dominujące w latach 80. Te dane modelują jako wiersze i kolumny w szeregu tabel , a zdecydowana większość używa języka SQL do pisania i wykonywania zapytań dotyczących danych. W 2000 roku popularne stały się nierelacyjne bazy danych, nazywane NoSQL, ponieważ używają różnych języków zapytań .

Terminologia i przegląd

Formalnie „baza danych” odnosi się do zbioru powiązanych danych i sposobu ich organizacji. Dostęp do tych danych jest zwykle zapewniany przez „system zarządzania bazami danych” (DBMS) składający się ze zintegrowanego zestawu oprogramowania komputerowego, które umożliwia użytkownikom interakcję z jedną lub większą liczbą baz danych i zapewnia dostęp do wszystkich danych zawartych w bazie danych (chociaż ograniczenia mogą istnieć ograniczające dostęp do określonych danych). DBMS zapewnia różne funkcje, które umożliwiają wprowadzanie, przechowywanie i wyszukiwanie dużych ilości informacji oraz zapewnia sposoby zarządzania sposobem organizacji tych informacji.

Ze względu na bliski związek między nimi termin „baza danych” jest często używany w odniesieniu zarówno do bazy danych, jak i do systemu DBMS używanego do manipulowania nią.

Poza światem profesjonalnej technologii informatycznej termin baza danych jest często używany w odniesieniu do dowolnego zbioru powiązanych danych (takich jak arkusz kalkulacyjny lub indeks kart), ponieważ wymagania dotyczące rozmiaru i użytkowania zazwyczaj wymagają użycia systemu zarządzania bazą danych.

Istniejące DBMS zapewniają różne funkcje, które umożliwiają zarządzanie bazą danych i jej danymi, które można podzielić na cztery główne grupy funkcjonalne:

  • Definicja danych - tworzenie, modyfikacja i usuwanie definicji definiujących organizację danych.
  • Aktualizacja - wstawianie, modyfikacja i usuwanie rzeczywistych danych.
  • Pobieranie - dostarczanie informacji w postaci bezpośrednio używalnej lub do dalszego przetwarzania przez inne aplikacje. Odzyskane dane mogą zostać udostępnione w zasadniczo takiej samej formie, w jakiej są przechowywane w bazie danych lub w nowej postaci uzyskanej poprzez zmianę lub połączenie istniejących danych z bazy danych.
  • Administracja - rejestrowanie i monitorowanie użytkowników, egzekwowanie bezpieczeństwa danych, monitorowanie wydajności, utrzymywanie integralności danych, kontrola współbieżności i odzyskiwanie informacji uszkodzonych przez jakieś zdarzenie, takie jak nieoczekiwana awaria systemu.

Zarówno baza danych, jak i jej DBMS są zgodne z zasadami określonego modelu bazy danych . „System baz danych” odnosi się łącznie do modelu bazy danych, systemu zarządzania bazą danych i bazy danych.

Fizycznie serwery baz danych to dedykowane komputery, które przechowują rzeczywiste bazy danych i obsługują tylko system DBMS i powiązane oprogramowanie. Serwery baz danych są zwykle komputerami wieloprocesorowymi , z dużą pamięcią i macierzami dyskowymi RAID używanymi do stabilnego przechowywania. Sprzętowe akceleratory baz danych, połączone z jednym lub większą liczbą serwerów przez kanał o dużej szybkości, są również używane w środowiskach przetwarzania dużych ilości transakcji. DBMS znajdują się w sercu większości aplikacji bazodanowych . Systemy DBMS mogą być zbudowane wokół niestandardowego jądra wielozadaniowego z wbudowaną obsługą sieci , ale nowoczesne systemy DBMS zazwyczaj polegają na standardowym systemie operacyjnym, który zapewnia te funkcje.

Ponieważ systemy DBMS stanowią znaczący rynek , dostawcy komputerów i pamięci masowych często uwzględniają wymagania DBMS w swoich własnych planach rozwoju.

Bazy danych i systemy DBMS można podzielić na kategorie zgodnie z obsługiwanymi przez nie modelami baz danych (takimi jak relacyjne lub XML), typami komputerów, na których działają (od klastra serwerów do telefonu komórkowego), językiem zapytań ( s) używane do uzyskiwania dostępu do bazy danych (takiej jak SQL lub XQuery ) i ich wewnętrznej inżynierii, która wpływa na wydajność, skalowalność , odporność i bezpieczeństwo.

Historia

Rozmiary, możliwości i wydajność baz danych i ich odpowiednich systemów DBMS wzrosły o rzędy wielkości. Te wzrosty wydajności zostały włączone do postępu technologicznego w dziedzinie procesorów , pamięci komputera , pamięci komputera i sieci komputerowych . Koncepcja bazy danych stała się możliwa dzięki pojawieniu się nośników danych o bezpośrednim dostępie, takich jak dyski magnetyczne, które stały się szeroko dostępne w połowie lat sześćdziesiątych; wcześniejsze systemy opierały się na sekwencyjnym przechowywaniu danych na taśmie magnetycznej. Późniejszy rozwój technologii baz danych można podzielić na trzy epoki w oparciu o model lub strukturę danych: nawigacyjną , SQL / relacyjną i postrelacyjną.

Dwa główne wczesne modele danych nawigacyjnych to model hierarchiczny i model CODASYL ( model sieciowy ). Charakteryzowały się one użyciem wskaźników (często fizycznych adresów dysków) do śledzenia relacji między rekordami.

Model relacyjny , zaproponowany po raz pierwszy w 1970 roku przez Edgara F. Codda , odszedł od tej tradycji, nalegając, aby aplikacje szukały danych według treści, a nie podążając za linkami. Model relacyjny wykorzystuje zestawy tabel w stylu księgi rachunkowej, z których każda jest używana dla innego typu jednostki. Dopiero w połowie lat 80. sprzęt komputerowy stał się wystarczająco wydajny, aby umożliwić szerokie wdrażanie systemów relacyjnych (DBMS plus aplikacje). Jednak na początku lat dziewięćdziesiątych systemy relacyjne dominowały we wszystkich aplikacjach do przetwarzania danych na dużą skalę , a od 2018 roku nadal dominują: IBM DB2 , Oracle , MySQL i Microsoft SQL Server to najczęściej wyszukiwane systemy DBMS . Dominujący język baz danych, ustandaryzowany SQL dla modelu relacyjnego, wpłynął na języki baz danych dla innych modeli danych.

Obiektowe bazy danych zostały opracowane w latach 80. XX wieku w celu przezwyciężenia niedogodności wynikających z niedopasowania impedancji obiektowo-relacyjnej , co doprowadziło do powstania terminu „post-relacyjny”, a także do rozwoju hybrydowych obiektowo-relacyjnych baz danych .

Następna generacja postrelacyjnych baz danych pod koniec 2000 roku stała się znana jako bazy danych NoSQL , wprowadzając szybkie magazyny wartości klucza i bazy danych zorientowane na dokumenty . Konkurencyjna „ nowa generacja”, znana jako bazy danych NewSQL, próbowała nowych implementacji, które zachowały model relacyjny / SQL, jednocześnie starając się dorównać wysokiej wydajności NoSQL w porównaniu z dostępnymi komercyjnie relacyjnymi systemami DBMS.

Lata 60-te, nawigacyjne DBMS

Podstawowa struktura nawigacyjnego modelu bazy danych CODASYL

Wprowadzenie terminu baza danych zbiegło się w czasie z pojawieniem się pamięci masowej z bezpośrednim dostępem (dyski i bębny) od połowy lat sześćdziesiątych XX wieku. Termin ten stanowił kontrast z systemami taśmowymi z przeszłości, umożliwiając współdzielone interaktywne użytkowanie zamiast codziennego przetwarzania wsadowego . Oxford English Dictionary cytuje raport 1962 przez rozwój systemu Corporation of California jako pierwszy użył terminu „danych bazy” w specyficznym sensie technicznym.

Wraz ze wzrostem szybkości i możliwości komputerów pojawiło się wiele systemów baz danych ogólnego przeznaczenia; do połowy lat sześćdziesiątych wiele takich systemów weszło do użytku komercyjnego. Zainteresowanie standardem zaczęło rosnąć, a Charles Bachman , autor jednego z takich produktów, Integrated Data Store (IDS), założył Database Task Group w ramach CODASYL , grupy odpowiedzialnej za stworzenie i standaryzację COBOL-a . W 1971 roku Database Task Group dostarczyła swój standard, który ogólnie stał się znany jako podejście CODASYL i wkrótce na rynek weszło wiele komercyjnych produktów opartych na tym podejściu.

Podejście CODASYL oferowało aplikacjom możliwość poruszania się po połączonym zestawie danych, który został uformowany w dużą sieć. Aplikacje mogą znajdować rekordy za pomocą jednej z trzech metod:

  1. Użycie klucza podstawowego (znanego jako klucz CALC, zwykle implementowany przez haszowanie )
  2. Poruszanie się po relacjach (zwanych zestawami ) z jednego rekordu do drugiego
  3. Skanowanie wszystkich rekordów w kolejności

Późniejsze systemy dodały B-drzewa, aby zapewnić alternatywne ścieżki dostępu. Wiele baz danych CODASYL dodało również deklaratywny język zapytań dla użytkowników końcowych (w odróżnieniu od nawigacyjnego API). Jednak bazy danych CODASYL były złożone i wymagały znacznego przeszkolenia i wysiłku, aby stworzyć użyteczne aplikacje.

IBM miał również własny DBMS w 1966 roku, znany jako Information Management System (IMS). IMS był rozwinięciem oprogramowania napisanego dla programu Apollo na System / 360 . IMS był generalnie podobny w koncepcji do CODASYL, ale używał ścisłej hierarchii w modelu nawigacji danych zamiast modelu sieci CODASYL. Obie koncepcje stały się później znane jako nawigacyjne bazy danych ze względu na sposób, w jaki uzyskiwano dostęp do danych: termin został spopularyzowany przez prezentację Bachmana w 1973 r. W ramach nagrody Turinga The Programmer as Navigator . IMS jest klasyfikowany przez IBM jako hierarchiczna baza danych . IDMS i Cincom Systems ' TOTAL bazy danych są klasyfikowane jako baz danych sieciowych. IMS pozostaje w użyciu od 2014 roku.

Lata 70-te, relacyjny DBMS

Edgar F. Codd pracował w IBM w San Jose w Kalifornii , w jednym z oddziałów firmy, które zajmowało się głównie opracowywaniem systemów dysków twardych . Był niezadowolony z modelu nawigacyjnego podejścia CODASYL, w szczególności z braku funkcji „wyszukiwania”. W 1970 roku napisał szereg artykułów, w których nakreślił nowe podejście do budowy baz danych, którego kulminacją był przełomowy model relacyjny danych dla dużych banków danych współdzielonych .

W artykule opisał nowy system przechowywania i pracy z dużymi bazami danych. Zamiast zapisywania rekordów na jakiejś połączonej liście rekordów w dowolnym formacie, jak w CODASYL, pomysł Codda polegał na zorganizowaniu danych jako liczby „ tabel ”, z których każda byłaby używana dla innego typu encji. Każda tabela zawierałaby stałą liczbę kolumn zawierających atrybuty jednostki. Jedna lub więcej kolumn każdej tabeli zostało wyznaczonych jako klucz podstawowy, za pomocą którego można było jednoznacznie zidentyfikować wiersze tabeli; odsyłacze między tabelami zawsze używały tych kluczy podstawowych, a nie adresów dysków, a zapytania łączyłyby tabele w oparciu o te relacje kluczy, używając zestawu operacji opartych na matematycznym systemie rachunku relacyjnego (od którego model bierze swoją nazwę). Podział danych na zestaw znormalizowanych tabel (lub relacji ) miał na celu zapewnienie, że każdy „fakt” był przechowywany tylko raz, co uprościło operacje aktualizacji. Tabele wirtualne zwane widokami mogą przedstawiać dane na różne sposoby dla różnych użytkowników, ale widoki nie mogą być bezpośrednio aktualizowane.

Codd użył terminów matematycznych do zdefiniowania modelu: relacji, krotek i domen, a nie tabel, wierszy i kolumn. Terminologia, która jest teraz znana, pochodzi z wczesnych wdrożeń. Codd później skrytykował tendencję praktycznych wdrożeń do odchodzenia od matematycznych podstaw, na których oparto model.

W modelu relacyjnym rekordy są „łączone” za pomocą kluczy wirtualnych, które nie są przechowywane w bazie danych, ale są definiowane w razie potrzeby między danymi zawartymi w rekordach.

Użycie kluczy głównych (identyfikatorów zorientowanych na użytkownika) do reprezentowania relacji między tabelami, a nie adresów dysków, miało dwa główne powody. Z inżynierskiego punktu widzenia umożliwiło to przenoszenie tabel i zmianę ich rozmiaru bez kosztownej reorganizacji bazy danych. Ale Codda bardziej interesowała różnica w semantyce: użycie jawnych identyfikatorów ułatwiło definiowanie operacji aktualizacji z czystymi definicjami matematycznymi, a także umożliwiło zdefiniowanie operacji zapytań w kategoriach ustalonej dyscypliny rachunku predykatów pierwszego rzędu; ponieważ te operacje mają czyste właściwości matematyczne, staje się możliwe przepisywanie zapytań w sposób dający się udowodnić, co jest podstawą optymalizacji zapytań. Nie ma utraty ekspresji w porównaniu z modelami hierarchicznymi lub sieciowymi, chociaż połączenia między tabelami nie są już tak wyraźne.

W modelu hierarchicznym i sieciowym rekordy miały złożoną strukturę wewnętrzną. Na przykład historia wynagrodzeń pracownika może być reprezentowana jako „powtarzająca się grupa” w rekordzie pracownika. W modelu relacyjnym proces normalizacji doprowadził do zastąpienia takich struktur wewnętrznych danymi przechowywanymi w wielu tabelach, połączonych jedynie kluczami logicznymi.

Na przykład, powszechnym zastosowaniem systemu baz danych jest śledzenie informacji o użytkownikach, ich nazwach, danych logowania, różnych adresach i numerach telefonów. W podejściu nawigacyjnym wszystkie te dane byłyby umieszczone w jednym rekordzie o zmiennej długości. W podejściu relacyjnym dane byłyby znormalizowane do tabeli użytkowników, tabeli adresów i tabeli numerów telefonów (na przykład). Rekordy byłyby tworzone w tych opcjonalnych tabelach tylko wtedy, gdyby faktycznie podano adres lub numery telefonów.

Oprócz identyfikowania wierszy / rekordów przy użyciu identyfikatorów logicznych zamiast adresów dysków, Codd zmienił sposób, w jaki aplikacje składały dane z wielu rekordów. Zamiast wymagać od aplikacji, aby gromadziły dane po jednym rekordzie naraz poprzez nawigację po odsyłaczach, używałyby deklaratywnego języka zapytań, który określa, jakie dane są wymagane, a nie ścieżki dostępu, za pomocą której należy je znaleźć. Znalezienie efektywnej ścieżki dostępu do danych stało się obowiązkiem systemu zarządzania bazą danych, a nie programisty aplikacji. Proces ten, zwany optymalizacją zapytań, polegał na tym, że zapytania były wyrażane za pomocą logiki matematycznej.

Artykuł Codda został odebrany przez dwie osoby z Berkeley, Eugene Wong i Michael Stonebraker . Rozpoczęli projekt znany jako INGRES, wykorzystując fundusze, które zostały już przydzielone na projekt geograficznej bazy danych i studentów-programistów do tworzenia kodu. Począwszy od 1973 roku, INGRES dostarczył swoje pierwsze produkty testowe, które były generalnie gotowe do powszechnego użytku w 1979 roku. INGRES był podobny do Systemu R pod wieloma względami, włączając w to użycie „języka” dostępu do danych , znanego jako QUEL . Z biegiem czasu INGRES przeniósł się do powstającego standardu SQL.

Sam IBM wykonał jedną testową implementację modelu relacyjnego PRTV i produkcyjną Business System 12 , obie zostały przerwane. Honeywell napisał MRDS dla Multics , a teraz są dwie nowe implementacje: Alphora Dataphor i Rel . Większość innych implementacji DBMS, zwykle nazywanych relacyjnymi, to w rzeczywistości SQL DBMS.

W 1970 roku University of Michigan rozpoczął opracowywanie systemu zarządzania informacją MICRO opartego na modelu Set-Theoretic Data firmy DL Childs . MICRO został użyty do zarządzania bardzo dużych zbiorów danych przez Departament Pracy USA , w Agencji Ochrony Środowiska Stanów Zjednoczonych , a naukowcy z University of Alberta , na University of Michigan i Wayne State University . Działał na komputerach mainframe IBM przy użyciu Michigan Terminal System . System pozostawał w produkcji do 1998 roku.

Zintegrowane podejście

W latach siedemdziesiątych i osiemdziesiątych XX wieku próbowano budować systemy baz danych ze zintegrowanym sprzętem i oprogramowaniem. Podstawową filozofią było to, że taka integracja zapewni wyższą wydajność przy niższych kosztach. Przykładami były IBM System / 38 , wczesna oferta Teradata oraz maszyna bazodanowa Britton Lee, Inc.

Innym podejściem do wsparcia sprzętowego do zarządzania bazami danych była MLK „s CAFS akcelerator, kontroler dysku sprzętu z programowalnymi funkcjami wyszukiwania. W dłuższej perspektywie wysiłki te były generalnie nieskuteczne, ponieważ wyspecjalizowane maszyny bazodanowe nie nadążały za szybkim rozwojem i postępem w dziedzinie komputerów ogólnego przeznaczenia. Dlatego większość systemów baz danych to obecnie systemy programowe działające na sprzęcie ogólnego przeznaczenia, wykorzystujące komputerowe przechowywanie danych ogólnego przeznaczenia. Jednak ten pomysł jest nadal realizowany w przypadku niektórych aplikacji przez niektóre firmy, takie jak Netezza i Oracle ( Exadata ).

Późne lata siedemdziesiąte XX wieku, SQL DBMS

IBM rozpoczął pracę nad prototypowym systemem luźno opartym na koncepcjach Codda jako System R we wczesnych latach siedemdziesiątych. Pierwsza wersja była gotowa w 1974/5, a następnie rozpoczęto prace nad systemami wielotabelowymi, w których dane można było podzielić tak, aby wszystkie dane do rekordu (z których część jest opcjonalna) nie musiały być przechowywane w pojedynczy duży „kawałek”. Kolejne wersje dla wielu użytkowników były testowane przez klientów w 1978 i 1979 r., Kiedy to dodano znormalizowany język zapytań - SQL. Pomysły Codda okazały się zarówno wykonalne, jak i lepsze od CODASYL, popychając IBM do opracowania prawdziwej wersji produkcyjnej Systemu R, znanej jako SQL / DS , a później Database 2 ( DB2 ).

Baza danych Oracle Larry'ego Ellisona (lub prościej Oracle ) powstała z innego łańcucha, w oparciu o dokumenty IBM dotyczące Systemu R. Chociaż implementacje Oracle V1 zostały zakończone w 1978 roku, dopiero w wersji 2 Oracle'a Ellison pokonał IBM na rynku w 1979 roku.

Stonebraker wykorzystał lekcje z INGRES do stworzenia nowej bazy danych, Postgres, która jest teraz znana jako PostgreSQL . PostgreSQL jest często używany w globalnych aplikacjach o znaczeniu krytycznym (rejestry nazw domen .org i .info używają go jako podstawowego magazynu danych , podobnie jak wiele dużych firm i instytucji finansowych).

W Szwecji czytano również artykuł Codda, a Mimer SQL był rozwijany od połowy lat 70. XX wieku na Uniwersytecie w Uppsali . W 1984 roku projekt ten został skonsolidowany w niezależne przedsiębiorstwo.

Inny model danych, model relacji jednostka-jednostka , pojawił się w 1976 roku i zyskał popularność w projektowaniu baz danych, ponieważ podkreślał bardziej znajomy opis niż wcześniejszy model relacyjny. Później konstrukcje między jednostkami i relacjami zostały zmodernizowane jako konstrukt służący do modelowania danych dla modelu relacyjnego, a różnica między nimi stała się nieistotna.

Na pulpicie

Lata 80-te zapoczątkowały erę komputerów stacjonarnych . Nowe komputery zapewniły swoim użytkownikom arkusze kalkulacyjne, takie jak Lotus 1-2-3, i oprogramowanie bazodanowe, takie jak dBASE . Produkt dBASE był lekki i łatwy do zrozumienia dla każdego użytkownika komputera po wyjęciu z pudełka. C. Wayne Ratliff , twórca dBASE, stwierdził: „dBASE różniło się od programów takich jak BASIC, C, FORTRAN i COBOL, ponieważ wykonano już wiele brudnej pracy. Manipulowanie danymi jest wykonywane przez dBASE zamiast przez użytkownika, dzięki czemu może skoncentrować się na tym, co robi, zamiast mieszać się z brudnymi szczegółami otwierania, odczytywania i zamykania plików oraz zarządzania przydziałem miejsca ”. dBASE był jednym z najlepiej sprzedających się tytułów oprogramowania w latach 80-tych i wczesnych 90-tych.

Lata 90., zorientowane obiektowo

Lata dziewięćdziesiąte, wraz z rozwojem programowania obiektowego , przyniosły wzrost w sposobie obsługi danych w różnych bazach danych. Programiści i projektanci zaczęli traktować dane w swoich bazach danych jako obiekty . Oznacza to, że gdyby dane osoby znajdowały się w bazie danych, atrybuty tej osoby, takie jak adres, numer telefonu i wiek, były teraz uważane za należące do tej osoby, a nie za dane obce. Dzięki temu relacje między danymi mogą być relacjami do obiektów i ich atrybutów, a nie do poszczególnych pól. Termin „ niedopasowanie impedancji obiektowo-relacyjnej ” opisuje niedogodności związane z tłumaczeniem między zaprogramowanymi obiektami a tabelami bazy danych. Obiektowe bazy danych i obiektowo-relacyjne bazy danych próbują rozwiązać ten problem, udostępniając język zorientowany obiektowo (czasami jako rozszerzenie SQL), którego programiści mogą używać jako alternatywy dla czysto relacyjnego języka SQL. Po stronie programowania biblioteki znane jako mapowania obiektowo-relacyjne (ORM) próbują rozwiązać ten sam problem.

2000s, NoSQL i NewSQL

Bazy danych XML to rodzaj ustrukturyzowanej, zorientowanej na dokumenty bazy danych, która umożliwia wykonywanie zapytań w oparciu o atrybuty dokumentów XML . Bazy danych XML są najczęściej używane w aplikacjach, w których dane są wygodnie postrzegane jako zbiór dokumentów o strukturze, która może różnić się od bardzo elastycznej do bardzo sztywnej: przykłady obejmują artykuły naukowe, patenty, zeznania podatkowe i akta osobowe.

Bazy danych NoSQL są często bardzo szybkie, nie wymagają ustalonych schematów tabel, unikają operacji łączenia dzięki przechowywaniu zdenormalizowanych danych i są zaprojektowane do skalowania w poziomie .

W ostatnich latach istnieje duże zapotrzebowanie na masowo rozproszone bazy danych z wysoką tolerancją partycji, ale zgodnie z twierdzeniem CAP nie jest możliwe, aby system rozproszony zapewniał jednocześnie spójność , dostępność i gwarancje tolerancji partycji. System rozproszony może jednocześnie spełniać dowolne dwie z tych gwarancji, ale nie wszystkie trzy. Z tego powodu wiele baz danych NoSQL wykorzystuje tzw. Spójność ostateczną, aby zapewnić zarówno dostępność, jak i tolerancję partycji przy zmniejszonym poziomie spójności danych.

NewSQL to klasa nowoczesnych relacyjnych baz danych, której celem jest zapewnienie takiej samej skalowalnej wydajności jak systemy NoSQL do przetwarzania transakcji online (odczyt i zapis) przy jednoczesnym korzystaniu z SQL i zachowaniu gwarancji ACID tradycyjnego systemu bazodanowego.

Przypadków użycia

Bazy danych są używane do wspierania wewnętrznych operacji organizacji oraz do podtrzymywania interakcji online z klientami i dostawcami (patrz Oprogramowanie dla przedsiębiorstw ).

Bazy danych są używane do przechowywania informacji administracyjnych i bardziej specjalistycznych danych, takich jak dane inżynieryjne lub modele ekonomiczne. Przykłady obejmują skomputeryzowane systemy biblioteczne, systemy rezerwacji lotów , skomputeryzowane systemy inwentaryzacji części i wiele systemów zarządzania treścią, które przechowują strony internetowe jako zbiory stron w bazie danych.

Klasyfikacja

Jednym ze sposobów klasyfikacji baz danych jest rodzaj ich zawartości, na przykład: obiekty bibliograficzne , tekstowe, statystyczne lub multimedialne. Innym sposobem jest ich obszar zastosowań, na przykład: księgowość, kompozycje muzyczne, filmy, bankowość, produkcja czy ubezpieczenia. Trzeci sposób wiąże się z pewnym aspektem technicznym, takim jak struktura bazy danych lub typ interfejsu. W tej sekcji wymieniono kilka przymiotników używanych do scharakteryzowania różnych rodzajów baz danych.

  • Bazy danych w pamięci to baza danych, która znajduje się głównie w pamięci głównej , ale jest zazwyczaj kopii zapasowej przez nieulotną pamięć komputerowa. Główne bazy danych pamięci są szybsze niż dyskowe bazy danych i dlatego są często używane tam, gdzie czas odpowiedzi jest krytyczny, na przykład w sprzęcie sieci telekomunikacyjnych.
  • Aktywna baza danych zawiera architekturę zdarzeniami, które mogą reagować na sytuację zarówno wewnątrz i na zewnątrz bazy danych. Możliwe zastosowania obejmują monitorowanie bezpieczeństwa, ostrzeganie, gromadzenie statystyk i autoryzację. Wiele baz danych udostępnia funkcje aktywnych baz danych w postaci wyzwalaczy baz danych .
  • Chmura baza opiera się na chmurze technologii . Zarówno baza danych, jak i większość jej DBMS znajdują się zdalnie, „w chmurze”, podczas gdy jej aplikacje są tworzone przez programistów, a później obsługiwane i używane przez użytkowników końcowych za pośrednictwem przeglądarki internetowej i otwartych interfejsów API .
  • Hurtownie danych archiwizują dane z operacyjnych baz danych i często ze źródeł zewnętrznych, takich jak firmy badawcze. Hurtownia staje się centralnym źródłem danych do wykorzystania przez menedżerów i innych użytkowników końcowych, którzy mogą nie mieć dostępu do danych operacyjnych. Na przykład dane dotyczące sprzedaży mogą być agregowane do sum tygodniowych i konwertowane z wewnętrznych kodów produktów w celu użycia kodów UPC , aby można je było porównać z danymi ACNielsen . Niektóre podstawowe i istotne elementy hurtowni danych obejmują wyodrębnianie, analizowanie i eksplorację danych, przekształcanie, ładowanie i zarządzanie danymi w celu udostępnienia ich do dalszego wykorzystania.
  • Dedukcyjne bazy danych kombajny logika programowania z relacyjnej bazy danych.
  • Rozproszona baza danych jest taki, w którym zarówno dane i DBMS obejmować wiele komputerów.
  • Bazie dokument zorientowanych jest przeznaczony do przechowywania, pobierania i zarządzania informacjami dokument zorientowanych, lub pół skonstruowane,. Bazy danych zorientowane na dokumenty są jedną z głównych kategorii baz danych NoSQL.
  • Wbudowana baza danych systemu jest DBMS, który jest ściśle zintegrowany z oprogramowaniem aplikacji, które wymagają dostępu do przechowywanych danych w taki sposób, że DBMS jest ukryty z końcowych użytkowników aplikacji i wymaga niewiele lub nie bieżącej konserwacji.
  • Bazy danych użytkowników końcowych składają się z danych opracowanych przez poszczególnych użytkowników końcowych. Przykładami są zbiory dokumentów, arkusze kalkulacyjne, prezentacje, multimedia i inne pliki. Istnieje kilka produktów obsługujących takie bazy danych. Niektóre z nich są znacznie prostsze niż pełnoprawne DBMS, z bardziej podstawową funkcjonalnością DBMS.
  • Stowarzyszony system baz danych składa się z kilku odrębnych baz danych, każda z własnymi DBMS. Jest obsługiwana jako pojedyncza baza danych przez federacyjny system zarządzania bazami danych (FDBMS), który w przejrzysty sposób integruje wiele autonomicznych systemów DBMS, prawdopodobnie różnych typów (w takim przypadku byłby to również heterogeniczny system baz danych ) i zapewnia im zintegrowany widok koncepcyjny .
  • Czasami termin multi-database jest używany jako synonim stowarzyszonej bazy danych, chociaż może odnosić się do mniej zintegrowanej (np. Bez FDBMS i zarządzanego schematu zintegrowanego) grupy baz danych, które współpracują w ramach jednej aplikacji. W tym przypadku do dystrybucji używane jest zwykle oprogramowanie pośredniczące , które zazwyczaj obejmuje protokół zatwierdzania atomowego (ACP), np. Protokół zatwierdzania dwufazowego , aby umożliwić rozproszone (globalne) transakcje w uczestniczących bazach danych.
  • Bazie wykres jest rodzajem bazy NoSQL który wykorzystuje struktury grafu z węzłami, krawędzi i właściwości do reprezentowania i przechowywania informacji. Ogólne graficzne bazy danych, które mogą przechowywać dowolny wykres, różnią się od wyspecjalizowanych grafowych baz danych, takich jak potrójne magazyny i sieciowe bazy danych .
  • Tablica DBMS jest rodzajem NoSQL DBMS, który pozwala na modelowanie, przechowywanie i odzyskiwanie (zazwyczaj duże) wielowymiarowych tablic , takie jak zdjęcia satelitarne oraz wyjście symulacji klimatycznych.
  • W hipertekstowej lub hipermedialnej bazie danych dowolne słowo lub fragment tekstu reprezentujący obiekt, np. Inny fragment tekstu, artykuł, obraz lub film, może być hiperłączem do tego obiektu. Bazy danych hipertekstowych są szczególnie przydatne do organizowania dużych ilości różnych informacji. Na przykład są przydatne do organizowania encyklopedii online , w których użytkownicy mogą wygodnie przeskakiwać po tekście. Sieć WWW jest zatem dużą rozproszoną bazą danych hipertekstowych.
  • Baza wiedzy (w skrócie KB , KB lub Δ) jest specjalnym rodzajem bazy danych do zarządzania wiedzą , zapewniając środki do komputerowego gromadzenia, organizacji i pobierania z wiedzy . Również zbiór danych przedstawiających problemy z ich rozwiązaniami i związanymi z nimi doświadczeniami.
  • Mobilna baza danych może być prowadzona albo zsynchronizowane z mobilnego urządzenia komputerowego.
  • Operacyjne bazy danych przechowują szczegółowe dane o działalności organizacji. Zazwyczaj przetwarzają stosunkowo dużą liczbę aktualizacji za pomocą transakcji . Przykłady obejmują bazy danych klientów, które rejestrują dane kontaktowe, kredytowe i demograficzne klientów firmy, bazy danych personelu, które zawierają informacje, takie jak wynagrodzenie, świadczenia, dane umiejętności pracowników, systemy planowania zasobów przedsiębiorstwa , które rejestrują szczegóły dotyczące składników produktów, zapasów części i finansów. bazy danych, które śledzą pieniądze organizacji, księgowość i transakcje finansowe.
  • Równoległa baza danych ma na celu poprawę wydajności poprzez parallelization dla zadań, takich jak ładowanie danych, budowanie indeksów i oceniających zapytań.
Główne równoległe architektury DBMS, które są indukowane przez podstawową architekturę sprzętową, to:
  • Architektura pamięci współdzielonej , w której wiele procesorów współdzieli główną przestrzeń pamięci, a także inne przechowywanie danych.
  • Architektura dysku współdzielonego , w której każda jednostka przetwarzająca (zwykle składająca się z wielu procesorów) ma własną pamięć główną, ale wszystkie jednostki współużytkują inną pamięć.
  • Architektura bez współdzielenia , w której każda jednostka przetwarzająca ma własną pamięć główną i inną pamięć.
  • Probabilistyczne bazy danych wykorzystują logikę rozmytą do wyciągania wniosków z nieprecyzyjnych danych.
  • Bazy danych w czasie rzeczywistym przetwarzają transakcje wystarczająco szybko, aby wynik wrócił i mógł zostać natychmiast zastosowany.
  • Baza danych przestrzennych może przechowywać dane z wielowymiarowych funkcji. Zapytania dotyczące takich danych obejmują zapytania oparte na lokalizacji, takie jak „Gdzie jest najbliższy hotel w mojej okolicy?”.
  • Bazie czasowy ma wbudowany aspektów czasowych, na przykład czasowego modelu danych i czasową wersję SQL . Dokładniej rzecz biorąc, aspekty czasowe zwykle obejmują czas ważności i czas transakcji.
  • Bazie terminologia zorientowanych opiera się na bazie obiektowego , często dostosowane do konkretnej dziedzinie.
  • Niestrukturalnych danych baza danych jest przeznaczona do sklepu w zarządzaniu i chronionej drodze różne przedmioty, które nie mieszczą się naturalnie i wygodnie we wspólnych baz danych. Może zawierać wiadomości e-mail, dokumenty, czasopisma, obiekty multimedialne itp. Nazwa może wprowadzać w błąd, ponieważ niektóre obiekty mogą mieć silną strukturę. Jednak cała możliwa kolekcja obiektów nie pasuje do wstępnie zdefiniowanej struktury strukturalnej. Większość uznanych systemów DBMS obsługuje teraz nieustrukturyzowane dane na różne sposoby i pojawiają się nowe, dedykowane systemy DBMS.

Interakcja z bazą danych

System zarządzania bazą danych

Connolly i Begg definiują system zarządzania bazą danych (DBMS) jako „system oprogramowania, który umożliwia użytkownikom definiowanie, tworzenie, utrzymywanie i kontrolowanie dostępu do bazy danych”. Przykłady DBMS to MySQL , PostgreSQL , Microsoft SQL Server , Oracle Database i Microsoft Access .

Akronim DBMS jest czasami rozszerzany, aby wskazać bazowy model bazy danych , z RDBMS dla modelu relacyjnego , OODBMS dla obiektu (zorientowanego) i ORDBMS dla modelu obiektowo-relacyjnego . Inne rozszerzenia mogą wskazywać na inne cechy, takie jak DDBMS dla rozproszonych systemów zarządzania bazami danych.

Funkcjonalność oferowana przez DBMS może się znacznie różnić. Podstawową funkcjonalnością jest przechowywanie, odzyskiwanie i aktualizacja danych. Codd zaproponował następujące funkcje i usługi, które powinien zapewniać pełnoprawny system DBMS ogólnego przeznaczenia:

  • Przechowywanie, wyszukiwanie i aktualizacja danych
  • Dostępny dla użytkownika katalog lub słownik danych opisujący metadane
  • Obsługa transakcji i współbieżności
  • Udogodnienia do odzyskiwania bazy danych w przypadku jej uszkodzenia
  • Wsparcie dla autoryzacji dostępu i aktualizacji danych
  • Uzyskaj wsparcie ze zdalnych lokalizacji
  • Egzekwowanie ograniczeń w celu zapewnienia zgodności danych w bazie danych z określonymi regułami

Generalnie oczekuje się również, że DBMS zapewni zestaw narzędzi do takich celów, jakie mogą być konieczne do skutecznego administrowania bazą danych, w tym narzędzia do importu, eksportu, monitorowania, defragmentacji i analizy. Podstawowa część DBMS współdziałająca między bazą danych a interfejsem aplikacji jest czasami nazywana silnikiem bazy danych .

Często systemy DBMS mają parametry konfiguracyjne, które można dostrajać statycznie i dynamicznie, na przykład maksymalną ilość pamięci głównej na serwerze, z której może korzystać baza danych. Trend polega na minimalizowaniu ilości ręcznej konfiguracji, aw przypadkach takich jak wbudowane bazy danych potrzeba zerowej administracji jest najważniejsza.

Systemy DBMS dużych dużych przedsiębiorstw mają tendencję do zwiększania rozmiaru i funkcjonalności i mogą wymagać tysięcy lat pracy nad rozwojem w całym okresie ich życia.

Wczesne systemy DBMS dla wielu użytkowników zazwyczaj zezwalały na to, aby aplikacja znajdowała się na tym samym komputerze z dostępem przez terminale lub oprogramowanie emulujące terminal. Architektura klient-serwer polegała na tym, że aplikacja znajdowała się na pulpicie klienta, a baza danych na serwerze, umożliwiając rozproszenie przetwarzania. To rozwinęło się w architekturę wielowarstwową obejmującą serwery aplikacji i serwery WWW z interfejsem użytkownika końcowego za pośrednictwem przeglądarki internetowej, przy czym baza danych jest podłączona tylko bezpośrednio do sąsiedniej warstwy.

System DBMS ogólnego przeznaczenia zapewni publiczne interfejsy programowania aplikacji (API) i opcjonalnie procesor dla języków baz danych, takich jak SQL, aby umożliwić pisanie aplikacji w celu interakcji z bazą danych. DBMS specjalnego przeznaczenia może korzystać z prywatnego interfejsu API i być specjalnie dostosowany i połączony z pojedynczą aplikacją. Na przykład system poczty elektronicznej pełniący wiele funkcji systemu DBMS ogólnego przeznaczenia, takich jak wstawianie wiadomości, usuwanie wiadomości, obsługa załączników, wyszukiwanie na liście bloków, kojarzenie wiadomości z adresem e-mail itp., Jednak te funkcje są ograniczone do tego, co jest wymagane do obsługi e-mail.

Podanie

Zewnętrzna interakcja z bazą danych będzie odbywać się za pośrednictwem programu aplikacji, który łączy się z systemem DBMS. Może to być narzędzie bazodanowe, które umożliwia użytkownikom wykonywanie zapytań SQL w formie tekstowej lub graficznej, po witrynę internetową, która wykorzystuje bazę danych do przechowywania i wyszukiwania informacji.

Interfejs programu aplikacji

Programista będzie kodować interakcji z bazą danych (czasem określane jako źródła danych ) poprzez interfejs programowania aplikacji (API) lub za pomocą języka bazy danych . Konkretny wybrany API lub język będzie musiał być obsługiwany przez DBMS, możliwe pośrednio przez preprocesor lub mostkowy interfejs API. Niektóre API mają być niezależne od bazy danych, a ODBC jest powszechnie znanym przykładem. Inne popularne API to JDBC i ADO.NET .

Języki baz danych

Języki baz danych to języki specjalnego przeznaczenia, które pozwalają na wykonanie jednego lub więcej z następujących zadań, czasami rozróżnianych jako języki podrzędne :

Języki baz danych są specyficzne dla konkretnego modelu danych. Godne uwagi przykłady obejmują:

Język bazy danych może również zawierać funkcje, takie jak:

  • Konfiguracja specyficzna dla DBMS i zarządzanie silnikiem pamięci masowej
  • Obliczenia modyfikujące wyniki zapytań, takie jak liczenie, sumowanie, uśrednianie, sortowanie, grupowanie i porównywanie
  • Egzekwowanie ograniczeń (np. W samochodowej bazie danych, dopuszczenie tylko jednego typu silnika na samochód)
  • Wersja interfejsu programowania aplikacji w języku zapytań, dla wygody programisty

Przechowywanie

Pamięć bazy danych jest kontenerem fizycznej materializacji bazy danych. Obejmuje wewnętrzny (fizyczny) poziom architektury bazy danych. Zawiera również wszystkie potrzebne informacje (np. Metadane , „dane o danych” i wewnętrzne struktury danych ), aby w razie potrzeby zrekonstruować poziom koncepcyjny i poziom zewnętrzny z poziomu wewnętrznego. Za umieszczenie danych w trwałym magazynie odpowiada zwykle silnik bazy danych, zwany także „silnikiem pamięci masowej”. Chociaż zwykle dostęp do systemu DBMS jest uzyskiwany za pośrednictwem podstawowego systemu operacyjnego (i często przy użyciu systemów plików systemów operacyjnych jako elementów pośredniczących w układzie pamięci), właściwości pamięci masowej i ustawienia konfiguracji są niezwykle ważne dla wydajnego działania systemu DBMS, a zatem są ściśle utrzymywane przez administratorzy baz danych. DBMS, gdy działa, zawsze ma swoją bazę danych rezydującą w kilku typach pamięci (np. Pamięć i pamięć zewnętrzna). Dane bazy danych i dodatkowe potrzebne informacje, prawdopodobnie w bardzo dużych ilościach, są kodowane w bitach. Dane zwykle znajdują się w pamięci w strukturach, które wyglądają zupełnie inaczej niż wyglądają dane na poziomie koncepcyjnym i zewnętrznym, ale w sposób, który próbuje zoptymalizować (możliwie najlepiej) rekonstrukcję tych poziomów, gdy jest to potrzebne użytkownikom i programom. jeśli chodzi o obliczanie dodatkowych typów potrzebnych informacji z danych (np. podczas zapytań do bazy danych).

Niektóre systemy DBMS obsługują określanie, które kodowanie znaków zostało użyte do przechowywania danych, więc w tej samej bazie danych można używać wielu kodowań.

Silnik pamięci masowej wykorzystuje różne niskopoziomowe struktury pamięci masowej do serializacji modelu danych, dzięki czemu można je zapisać na wybranym nośniku. Aby poprawić wydajność, można użyć technik, takich jak indeksowanie. Magazyn konwencjonalny jest zorientowany na wiersze, ale istnieją również bazy danych zorientowane na kolumny i bazy danych korelacji .

Zmaterializowane widoki

Często w celu zwiększenia wydajności stosuje się nadmiarowość pamięci masowej. Typowym przykładem jest przechowywanie zmaterializowanych widoków , które składają się z często potrzebnych widoków zewnętrznych lub wyników zapytań. Przechowywanie takich widoków oszczędza kosztowne ich przetwarzanie za każdym razem, gdy są potrzebne. Wadami zmaterializowanych widoków są koszty związane z aktualizacją ich w celu zapewnienia ich synchronizacji z oryginalnymi zaktualizowanymi danymi bazy danych oraz koszt nadmiarowości pamięci masowej.

Replikacja

Czasami baza danych wykorzystuje nadmiarowość pamięci masowej przez replikację obiektów bazy danych (z jedną lub większą liczbą kopii) w celu zwiększenia dostępności danych (zarówno w celu poprawy wydajności jednoczesnego dostępu wielu użytkowników końcowych do tego samego obiektu bazy danych, jak i zapewnienia odporności w przypadku częściowej awarii rozproszona baza danych). Aktualizacje replikowanego obiektu muszą być synchronizowane w kopiach obiektów. W wielu przypadkach replikowana jest cała baza danych.

Bezpieczeństwo

Bezpieczeństwo bazy danych dotyczy wszystkich różnych aspektów ochrony zawartości bazy danych, jej właścicieli i użytkowników. Obejmuje ochronę od celowego nieautoryzowanego wykorzystania bazy danych do niezamierzonego dostępu do bazy danych przez nieuprawnione podmioty (np. Osobę lub program komputerowy).

Kontrola dostępu do bazy danych polega na kontrolowaniu, kto (osoba lub określony program komputerowy) ma dostęp do jakich informacji w bazie danych. Informacje mogą obejmować określone obiekty bazy danych (np. Typy rekordów, określone rekordy, struktury danych), określone obliczenia dotyczące określonych obiektów (np. Typy zapytań lub określone zapytania) lub przy użyciu określonych ścieżek dostępu do tych pierwszych (np. Przy użyciu określonych indeksów lub inne struktury danych umożliwiające dostęp do informacji). Kontrole dostępu do bazy danych są ustawiane przez specjalnie upoważniony (przez właściciela bazy danych) personel, który korzysta z dedykowanych, chronionych interfejsów DBMS.

Może to być zarządzane bezpośrednio na zasadzie indywidualnej lub poprzez przypisywanie osób i przywilejów do grup lub (w najbardziej rozbudowanych modelach) poprzez przypisywanie osób i grup do ról, którym następnie przyznaje się uprawnienia. Bezpieczeństwo danych uniemożliwia nieautoryzowanym użytkownikom przeglądanie lub aktualizowanie bazy danych. Używając haseł, użytkownicy mają dostęp do całej bazy danych lub jej podzbiorów zwanych „schematami podrzędnymi”. Na przykład baza danych pracowników może zawierać wszystkie dane o pojedynczym pracowniku, ale jedna grupa użytkowników może mieć uprawnienia tylko do przeglądania danych płacowych, podczas gdy inni mają dostęp tylko do historii zatrudnienia i danych medycznych. Jeśli DBMS zapewnia sposób interaktywnego wprowadzania i aktualizowania bazy danych, a także jej przeszukiwania, ta możliwość pozwala na zarządzanie osobistymi bazami danych.

Bezpieczeństwo danych ogólnie dotyczy ochrony określonych fragmentów danych, zarówno fizycznych (tj. Przed uszkodzeniem, zniszczeniem lub usunięciem; np. Zobacz bezpieczeństwo fizyczne ), jak i ich interpretacji lub ich części w celu uzyskania znaczących informacji (np. przyjrzenie się ciągom bitów, które się w nich znajdują, podsumowanie określonych ważnych numerów kart kredytowych, np. patrz szyfrowanie danych ).

Zmień i uzyskaj dostęp do rekordów logowania, którzy uzyskali dostęp do atrybutów, co zostało zmienione i kiedy zostało zmienione. Usługi rejestrowania pozwalają na późniejszy audyt kryminalistyczny bazy danych poprzez rejestrowanie zdarzeń dostępu i zmian. Czasami kod na poziomie aplikacji jest używany do rejestrowania zmian zamiast pozostawiania tego w bazie danych. Monitorowanie można skonfigurować w celu wykrycia naruszeń bezpieczeństwa.

Transakcje i współbieżność

Transakcje bazy danych mogą służyć do wprowadzenia pewnego poziomu odporności na awarie i integralności danych po odzyskaniu danych po awarii . Transakcja w bazie danych to jednostka pracy, zwykle obejmująca pewną liczbę operacji w bazie danych (np. Odczyt obiektu bazy danych, pisanie, uzyskiwanie blokady itp.), Abstrakcja obsługiwana w bazie danych, a także w innych systemach. Każda transakcja ma dobrze zdefiniowane granice, w zakresie których wykonania programu / kodu są zawarte w tej transakcji (określone przez programistę transakcji za pomocą specjalnych poleceń transakcyjnych).

Akronim ACID opisuje pewne idealne właściwości transakcji bazy danych: atomowość , spójność , izolację i trwałość .

Migracja

Baza danych zbudowana z jednym DBMS nie jest przenośna do innego DBMS (tj. Inny DBMS nie może jej uruchomić). Jednak w niektórych sytuacjach pożądana jest migracja bazy danych z jednego DBMS do innego. Powody są przede wszystkim ekonomiczne (różne DBMS mogą mieć różne całkowite koszty posiadania lub TCO), funkcjonalne i operacyjne (różne DBMS mogą mieć różne możliwości). Migracja obejmuje transformację bazy danych z jednego typu DBMS na inny. Transformacja powinna zachować (jeśli to możliwe) aplikację związaną z bazą danych (tj. Wszystkie powiązane programy aplikacji) w stanie nienaruszonym. W związku z tym podczas transformacji należy zachować koncepcyjny i zewnętrzny poziom architektoniczny bazy danych. Może być pożądane, aby zachowane zostały również niektóre aspekty wewnętrznego poziomu architektury. Złożona lub duża migracja bazy danych może sama w sobie być skomplikowanym i kosztownym (jednorazowym) projektem, co należy uwzględnić przy podejmowaniu decyzji o migracji. Dzieje się tak pomimo faktu, że mogą istnieć narzędzia ułatwiające migrację między określonymi systemami DBMS. Zazwyczaj dostawca DBMS zapewnia narzędzia ułatwiające importowanie baz danych z innych popularnych systemów DBMS.

Budowanie, utrzymywanie i strojenie

Po zaprojektowaniu bazy danych dla aplikacji kolejnym etapem jest zbudowanie bazy danych. Zazwyczaj do tego celu można wybrać odpowiedni system DBMS ogólnego przeznaczenia. DBMS zapewnia potrzebne interfejsy użytkownika, które mają być używane przez administratorów baz danych do definiowania potrzebnych struktur danych aplikacji w ramach odpowiedniego modelu danych DBMS. Inne interfejsy użytkownika służą do wybierania potrzebnych parametrów DBMS (takich jak związane z bezpieczeństwem, parametry alokacji pamięci itp.).

Gdy baza danych jest gotowa (wszystkie jej struktury danych i inne potrzebne komponenty są zdefiniowane), zwykle jest ona zapełniana danymi początkowej aplikacji (inicjalizacja bazy danych, która jest zwykle odrębnym projektem; w wielu przypadkach przy użyciu wyspecjalizowanych interfejsów DBMS obsługujących wstawianie zbiorcze) przed czyniąc go operacyjnym. W niektórych przypadkach baza danych zaczyna działać, gdy nie ma danych aplikacji, a dane są gromadzone podczas jej działania.

Po utworzeniu, zainicjowaniu i wypełnieniu bazy danych należy ją utrzymywać. Różne parametry bazy danych mogą wymagać zmiany, a baza danych może wymagać dostrojenia ( strojenia ) w celu uzyskania lepszej wydajności; struktury danych aplikacji mogą zostać zmienione lub dodane, można napisać nowe powiązane programy aplikacji w celu rozszerzenia funkcjonalności aplikacji itp.

Kopia zapasowa i przywracanie

Czasami pożądane jest przywrócenie bazy danych do poprzedniego stanu (z wielu powodów, np. W przypadkach, gdy baza danych jest uszkodzona z powodu błędu oprogramowania lub została zaktualizowana błędnymi danymi). Aby to osiągnąć, kopia zapasowa jest wykonywana sporadycznie lub w sposób ciągły, gdzie każdy pożądany stan bazy danych (tj. Wartości jej danych i ich osadzenie w strukturach danych bazy danych) jest przechowywany w dedykowanych plikach kopii zapasowych (istnieje wiele technik umożliwiających to efektywne). Gdy administrator bazy danych zdecyduje, że baza danych zostanie przywrócona do tego stanu (np. Określając ten stan w żądanym momencie, gdy baza danych znajdowała się w tym stanie), pliki te są używane do przywrócenia tego stanu.

Analiza statyczna

Techniki analizy statycznej do weryfikacji oprogramowania można zastosować również w scenariuszu języków zapytań. W szczególności ramy interpretacji * Abstract zostały rozszerzone na dziedzinę języków zapytań dla relacyjnych baz danych jako sposób na obsługę technik przybliżania dźwięku. Semantykę języków zapytań można dostroić zgodnie z odpowiednimi abstrakcjami konkretnej dziedziny danych. Abstrakcja systemu relacyjnych baz danych ma wiele interesujących zastosowań, w szczególności ze względów bezpieczeństwa, takich jak precyzyjna kontrola dostępu, znak wodny itp.

Różne funkcje

Inne funkcje DBMS mogą obejmować:

  • Dzienniki bazy danych - Pomaga to w zachowaniu historii wykonywanych funkcji.
  • Komponent graficzny do tworzenia wykresów i wykresów, zwłaszcza w systemie hurtowni danych.
  • Optymalizator zapytań - przeprowadza optymalizację zapytań dla każdego zapytania, aby wybrać wydajny plan zapytania (częściowa kolejność (drzewo) operacji) do wykonania w celu obliczenia wyniku zapytania. Może być specyficzny dla konkretnego aparatu pamięci masowej.
  • Narzędzia lub punkty zaczepienia do projektowania baz danych, programowania aplikacji, konserwacji programów aplikacji, analizy i monitorowania wydajności bazy danych, monitorowania konfiguracji bazy danych, konfiguracji sprzętu DBMS (DBMS i powiązana baza danych może obejmować komputery, sieci i jednostki pamięci) oraz powiązanego mapowania baz danych (zwłaszcza dla rozproszony DBMS), alokacja pamięci i monitorowanie układu bazy danych, migracja pamięci itp.

Coraz częściej pojawia się zapotrzebowanie na pojedynczy system, który zawiera wszystkie te podstawowe funkcje w tej samej strukturze budowania, testowania i wdrażania do zarządzania bazami danych i kontroli źródła. Pożyczając z innych rozwiązań w branży oprogramowania, niektórzy sprzedają takie oferty, jak „ DevOps dla baz danych”.

Projektowanie i modelowanie

Proces projektowania bazy danych v2.png

Pierwszym zadaniem projektanta bazy danych jest stworzenie koncepcyjnego modelu danych, który odzwierciedla strukturę informacji, które mają być przechowywane w bazie danych. Powszechnym podejściem do tego jest opracowanie modelu relacji między podmiotami , często przy pomocy narzędzi do rysowania. Innym popularnym podejściem jest Unified Modeling Language . Udany model danych będzie dokładnie odzwierciedlał możliwy stan modelowanego świata zewnętrznego: na przykład, jeśli ludzie mogą mieć więcej niż jeden numer telefonu, pozwoli to na przechwycenie tych informacji. Zaprojektowanie dobrego koncepcyjnego modelu danych wymaga dobrego zrozumienia dziedziny aplikacji; zazwyczaj polega na zadawaniu głębokich pytań dotyczących rzeczy, które są interesujące dla organizacji, takich jak „czy klient może być również dostawcą?” lub „jeśli produkt jest sprzedawany z dwoma różnymi formami opakowania, to czy to ten sam produkt, czy różne produkty? "lub" Jeśli samolot leci z Nowego Jorku do Dubaju przez Frankfurt, to czy to jeden, dwa (a może nawet trzy) loty? ". Odpowiedzi na te pytania określają definicje terminologii stosowanej w odniesieniu do podmiotów (klientów, produktów, lotów, segmentów lotów) oraz ich powiązań i atrybutów.

Tworzenie koncepcyjnego modelu danych czasami obejmuje dane wejściowe z procesów biznesowych lub analizę przepływu pracy w organizacji. Może to pomóc w ustaleniu, jakie informacje są potrzebne w bazie danych, a które można pominąć. Na przykład może pomóc przy podejmowaniu decyzji, czy baza danych musi przechowywać dane historyczne, a także dane bieżące.

Po stworzeniu koncepcyjnego modelu danych, z którego użytkownicy są zadowoleni, następnym etapem jest przetłumaczenie go na schemat implementujący odpowiednie struktury danych w bazie danych. Ten proces jest często nazywany logicznym projektowaniem bazy danych, a wynikiem jest logiczny model danych wyrażony w postaci schematu. Podczas gdy koncepcyjny model danych jest (przynajmniej w teorii) niezależny od wyboru technologii bazodanowej, logiczny model danych będzie wyrażony w kategoriach konkretnego modelu bazy danych obsługiwanego przez wybrany DBMS. (Terminy model danych i model bazy danych są często używane zamiennie, ale w tym artykule używamy modelu danych do projektowania określonej bazy danych oraz modelu bazy danych do notacji modelowania używanej do wyrażenia tego projektu).

Najpopularniejszym modelem bazy danych dla baz danych ogólnego przeznaczenia jest model relacyjny, a dokładniej model relacyjny reprezentowany przez język SQL. Proces tworzenia logicznego projektu bazy danych przy użyciu tego modelu wykorzystuje metodyczne podejście znane jako normalizacja . Celem normalizacji jest zapewnienie, że każdy elementarny „fakt” zostanie zarejestrowany tylko w jednym miejscu, tak aby wstawienia, aktualizacje i usunięcia automatycznie zachowały spójność.

Ostatnim etapem projektowania bazy danych jest podjęcie decyzji, które mają wpływ na wydajność, skalowalność, odzyskiwanie, bezpieczeństwo i tym podobne, które zależą od konkretnego DBMS. Jest to często nazywane fizycznym projektem bazy danych , a wynikiem jest fizyczny model danych . Kluczowym celem na tym etapie jest niezależność danych , co oznacza, że ​​decyzje podejmowane w celu optymalizacji wydajności powinny być niewidoczne dla użytkowników końcowych i aplikacji. Istnieją dwa typy niezależności danych: fizyczna niezależność danych i logiczna niezależność danych. Projekt fizyczny opiera się głównie na wymaganiach wydajnościowych i wymaga dobrej znajomości oczekiwanego obciążenia pracą i wzorców dostępu oraz dogłębnego zrozumienia funkcji oferowanych przez wybrany DBMS.

Innym aspektem projektowania fizycznej bazy danych jest bezpieczeństwo. Obejmuje zarówno definiowanie kontroli dostępu do obiektów bazy danych, jak i definiowanie poziomów bezpieczeństwa i metod dla samych danych.

Modele

Kolaż pięciu typów modeli baz danych

Model bazy danych to typ modelu danych, który określa logiczną strukturę bazy danych i zasadniczo określa, w jaki sposób dane mogą być przechowywane, organizowane i manipulowane. Najpopularniejszym przykładem modelu bazy danych jest model relacyjny (lub przybliżenie relacyjne SQL), który wykorzystuje format tabelaryczny.

Typowe logiczne modele danych dla baz danych obejmują:

Obiektowo-relacyjna baza danych łączy dwie powiązane struktury.

Fizyczne modele danych obejmują:

Inne modele obejmują:

Specjalistyczne modele są zoptymalizowane pod kątem określonych typów danych:

Widoki zewnętrzne, koncepcyjne i wewnętrzne

Tradycyjne spojrzenie na dane

System zarządzania bazą danych zapewnia trzy widoki danych bazy danych:

  • Poziom zewnętrzny określa, jak każda grupa użytkowników końcowych widzi organizację danych w bazie danych. Pojedyncza baza danych może mieć dowolną liczbę widoków na poziomie zewnętrznym.
  • Poziom koncepcyjny łączy różne widoki zewnętrzne w zgodny widok globalny. Zapewnia syntezę wszystkich zewnętrznych poglądów. Jest poza zakresem różnych użytkowników końcowych baz danych i jest raczej interesujący dla programistów aplikacji bazodanowych i administratorów baz danych.
  • Poziom wewnętrzny (lub poziom fizyczny ) to wewnętrzna organizacja danych w DBMS. Dotyczy kosztów, wydajności, skalowalności i innych kwestii operacyjnych. Zajmuje się układem pamięci masowej danych, wykorzystując struktury pamięci, takie jak indeksy, w celu zwiększenia wydajności. Czasami przechowuje dane poszczególnych widoków (widoki zmaterializowane ), obliczone na podstawie danych ogólnych, jeśli istnieje uzasadnienie wydajności dla takiej nadmiarowości. Równoważy wszystkie wymagania wydajnościowe widoków zewnętrznych, które mogą być sprzeczne, próbując zoptymalizować ogólną wydajność we wszystkich działaniach.

Chociaż zazwyczaj istnieje tylko jeden koncepcyjny (lub logiczny) i fizyczny (lub wewnętrzny) widok danych, może istnieć dowolna liczba różnych widoków zewnętrznych. Umożliwia to użytkownikom przeglądanie informacji z bazy danych w sposób bardziej związany z biznesem niż z technicznego punktu widzenia przetwarzania. Na przykład dział finansowy firmy potrzebuje szczegółów płatności wszystkich pracowników jako części wydatków firmy, ale nie potrzebuje szczegółowych informacji o pracownikach, które są w interesie działu kadr . Dlatego różne działy potrzebują różnych widoków bazy danych firmy.

Trójpoziomowa architektura bazy danych nawiązuje do koncepcji niezależności danych, która była jedną z głównych początkowych sił napędowych modelu relacyjnego. Chodzi o to, że zmiany wprowadzone na pewnym poziomie nie wpływają na widok na wyższym poziomie. Na przykład zmiany na poziomie wewnętrznym nie wpływają na aplikacje napisane przy użyciu interfejsów na poziomie koncepcyjnym, co zmniejsza wpływ wprowadzania fizycznych zmian w celu poprawy wydajności.

Widok koncepcyjny zapewnia poziom pośredni między wewnętrznym a zewnętrznym. Z jednej strony zapewnia wspólny widok bazy danych, niezależny od różnych struktur widoku zewnętrznego, az drugiej strony wyodrębnia szczegóły dotyczące sposobu przechowywania lub zarządzania danymi (poziom wewnętrzny). W zasadzie każdy poziom, a nawet każdy widok zewnętrzny, można przedstawić za pomocą innego modelu danych. W praktyce zwykle dany DBMS wykorzystuje ten sam model danych zarówno na poziomie zewnętrznym, jak i koncepcyjnym (np. Model relacyjny). Poziom wewnętrzny, który jest ukryty w DBMS i zależy od jego implementacji, wymaga innego poziomu szczegółowości i wykorzystuje własne typy struktur danych.

Oddzielenie poziomu zewnętrznego , koncepcyjnego i wewnętrznego było główną cechą implementacji modeli relacyjnych baz danych, które dominują w bazach danych XXI wieku.

Badania

Technologia baz danych jest aktywnym tematem badawczym od lat 60. XX wieku, zarówno w środowisku akademickim , jak i w grupach przedsiębiorstw zajmujących się badaniami i rozwojem (np. IBM Research ). Działalność badawcza obejmuje teorię i rozwój prototypów . Godne uwagi tematy badawcze obejmowały modele , koncepcję transakcji atomowych i powiązane techniki kontroli współbieżności , języki zapytań i metody optymalizacji zapytań , macierz RAID i inne.

Obszar badawczy baz danych posiada kilka dedykowanych czasopismach naukowych (na przykład ACM Transactions on Database Systems -TODS, danych i wiedzy Inżynierii -DKE) oraz rocznych konferencji (np ACM SIGMOD , ACM strąki , VLDB , IEEE ICDE).

Zobacz też

Uwagi

Bibliografia

Źródła

Dalsza lektura

Linki zewnętrzne