Omówienie modeli magazynu danych

Nowoczesne systemy biznesowe zarządzają coraz większymi ilościami danych heterogenicznych. Ta różnorodność oznacza, że jeden magazyn danych zwykle nie jest najlepszym rozwiązaniem. Zamiast tego często lepiej jest przechowywać różne typy danych w różnych magazynach danych, z których każdy koncentruje się na konkretnym obciążeniu lub wzorcu użycia. Do opisania rozwiązania wykorzystującego połączenie różnych technologii magazynowania danych stosuje się termin „polyglot persistence”. Dlatego ważne jest, aby zrozumieć główne modele magazynowania i ich kompromisy.

Wybór odpowiedniego magazynu danych przystosowanego do wymagań jest kluczową decyzją projektową. Istnieją dosłownie setki implementacji do wyboru spośród baz danych SQL i NoSQL. Magazyny danych często są pogrupowane według sposobu strukturyzowania danych oraz typów operacji, które obsługują. W tym artykule opisano kilka typowych modeli magazynowania danych. Należy pamiętać, że dana technologia magazynu danych może obsługiwać wiele modeli magazynowania. Na przykład systemy zarządzania relacyjnymi bazami danych (RDBMS, relational database management systems) mogą także obsługiwać magazynowanie par klucz/wartość lub wykresów. W rzeczywistości istnieje ogólny trend obsługi tak zwanej obsługi wielomodelowej , gdzie pojedynczy system bazy danych obsługuje kilka modeli. Jednak nadal warto poznać różne modele na wysokim poziomie.

Nie wszystkie magazyny danych w danej kategorii dostarczają ten sam zestaw funkcji. Większość magazynów danych dostarcza funkcje po stronie serwera do wykonywania zapytań i przetwarzania danych. Czasami ta funkcja jest wbudowana do aparatu magazynu danych. W innych przypadkach przechowywanie danych i możliwości ich przetwarzania są rozdzielane i może istnieć kilka opcji dotyczących przetwarzania i analizowania. Magazyny danych obsługują również różne interfejsy programowe i interfejsy zarządzania.

Ogólnie rzecz biorąc, należy rozpocząć od rozważenia kwestii, który model przechowywania jest najbardziej odpowiedni dla wymagań użytkownika. Następnie należy wziąć pod uwagę określony magazyn danych w ramach tej kategorii, na podstawie takich czynników jak zestaw funkcji, koszt i łatwość zarządzania.

Uwaga

Dowiedz się więcej na temat identyfikowania i przeglądania wymagań usługi danych dotyczących wdrażania chmury w przewodniku Microsoft Cloud Adoption Framework dla platformy Azure. Podobnie możesz również dowiedzieć się więcej na temat wybierania narzędzi i usług magazynu.

Systemy zarządzania relacyjnymi bazami danych

Relacyjne bazy danych organizują dane jako serię dwuwymiarowych tabel z wierszami i kolumnami. Większość dostawców zapewnia dialekt języka Structured Query Language (SQL) do pobierania danych i zarządzania nimi. System RDBMS zwykle implementuje spójny transakcyjnie mechanizm, który odpowiada modelowi ACID (niepodzielność, spójność, izolacja, trwałość), w celu zaktualizowania informacji.

System RDBMS zwykle obsługuje model schematu przy zapisie, w którym struktura danych zostaje zdefiniowana wcześniej, a wszystkie operacje odczytu lub zapisu muszą używać schematu.

Ten model jest bardzo przydatny, gdy ważne są silne gwarancje spójności — wszystkie zmiany są niepodzielne, a transakcje zawsze pozostawiają dane w spójnym stanie. Jednak system RDBMS zazwyczaj nie może skalować w poziomie bez fragmentowania danych w jakiś sposób. Ponadto dane w systemie RDBMS muszą być znormalizowane, co nie jest odpowiednie dla każdego zestawu danych.

Usługi platformy Azure

Obciążenie

  • Rekordy są często tworzone i aktualizowane.
  • W ramach jednej transakcji musi zostać wykonanych wiele operacji.
  • Relacje są wymuszane za pomocą ograniczeń bazy danych.
  • Indeksy są używane w celu zoptymalizowania wydajności zapytania.

Typ danych

  • Dane są wysoce znormalizowane.
  • Schematy bazy danych są wymagane i wymuszane.
  • Relacje wiele do wielu między jednostkami danych w bazie danych.
  • Ograniczenia są zdefiniowane w schemacie i nałożone na wszystkie dane w bazie danych.
  • Dane wymagają wysokiej integralności. Indeksy i relacje muszą być precyzyjnie utrzymywane.
  • Dane wymagają wysokiego poziomu spójności. Transakcje działają w sposób, który gwarantuje, że wszystkie dane są w 100% spójne dla wszystkich użytkowników i procesów.
  • Rozmiar pojedynczych wpisów danych jest mały i średni.

Przykłady

  • Zarządzanie zapasami
  • Zarządzanie zamówieniami
  • Baza danych raportowania
  • Rachunkowość

Magazyny klucz/wartość

Magazyn klucz/wartość kojarzy każdą wartość danych z unikatowym kluczem. Większość magazynów klucz/wartość obsługuje wyłącznie proste operacje zapytania, wstawiania i usuwania. Aby zmodyfikować wartość (częściowo lub całkowicie), aplikacja musi zastąpić istniejące dane dla całej wartości. W większości implementacji odczyt lub zapis pojedynczej wartości jest operacją niepodzielną.

Aplikacja może przechowywać dowolne dane jako zestaw wartości. Wszystkie informacje o schemacie muszą być udostępniane przez aplikację. Magazyn klucz/wartość po prostu pobiera lub przechowuje wartość według klucza.

Diagram of a key-value store

Magazyny klucz/wartość są wysoce zoptymalizowane pod kątem aplikacji wykonujących proste wyszukiwania, ale są mniej odpowiednie, jeśli musisz wykonywać zapytania o dane w różnych magazynach kluczy/wartości. Magazyny klucz/wartość nie są również zoptymalizowane pod kątem wykonywania zapytań według wartości.

Pojedynczy magazyn klucz/wartość może być wysoce skalowalny, ponieważ magazyn danych może z łatwością rozpowszechniać dane w wielu węzłach na oddzielnych komputerach.

Usługi platformy Azure

Obciążenie

  • Dostęp do danych jest uzyskiwany przy użyciu pojedynczego klucza, takiego jak słownik.
  • Sprzężenia, blokady ani unie nie są wymagane.
  • Mechanizmy agregacji nie są używane.
  • Indeksy pomocnicze zazwyczaj nie są używane.

Typ danych

  • Każdy klucz jest skojarzony z pojedynczą wartością.
  • Nie występuje wymuszanie schematu.
  • Brak relacji między jednostkami.

Przykłady

  • Buforowanie danych
  • Zarządzanie sesją
  • Preferencje użytkownika i zarządzanie profilem
  • Rekomendacje produktów i obsługiwanie reklam

Bazy danych dokumentów

Baza danych dokumentów przechowuje kolekcję dokumentów, w których każdy dokument składa się z nazwanych pól i danych. Dane mogą być prostymi wartościami lub złożonymi elementami, takimi jak listy i kolekcje podrzędne. Dokumenty są pobierane przez unikatowe klucze.

Zazwyczaj dokument zawiera dane dla pojedynczej jednostki, takie jak klient lub zamówienie. Dokument może zawierać informacje, które byłyby rozmieszczone w kilku tabelach relacyjnych w systemie RDBMS. Dokumenty nie muszą mieć tej samej struktury. Wraz ze zmieniającymi się wymaganiami biznesowymi aplikacje mogą przechowywać w dokumentach różne dane.

Diagram of a document store

Usługa platformy Azure

Obciążenie

  • Operacje wstawiania i aktualizowania są powszechne.
  • Brak niezgodności impedancji obiektów relacyjnych. Dokumenty mogą lepiej pasować do struktur obiektów używanych w kodzie aplikacji.
  • Pojedyncze dokumenty są pobierane i zapisywane jako jeden blok.
  • Dane wymagają indeksu w wielu polach.

Typ danych

  • Dane mogą być zarządzane w sposób nieznormalizowany.
  • Rozmiar danych pojedynczego dokumentu jest stosunkowo mały.
  • Każdy typ dokumentu może używać własnego schematu.
  • Dokumenty mogą zawierać pola opcjonalne.
  • Dane dokumentu są częściowo ustrukturyzowane, co oznacza, że typy danych poszczególnych pól nie są ściśle zdefiniowane.

Przykłady

  • Katalog produktów
  • Zarządzanie zawartością
  • Zarządzanie zapasami

Grafowe bazy danych

Baza danych wykresów przechowuje dwa typy informacji: węzły i krawędzie. Krawędzie określają relacje między węzłami. Węzły i krawędzie mogą mieć właściwości, które zawierają informacje o tym węźle lub krawędzi, podobnie jak w kolumnach w tabeli. Krawędzie mogą także mieć kierunek wskazujący rodzaj relacji.

Grafowe bazy danych mogą wydajnie wykonywać zapytania w sieci węzłów i krawędzi oraz analizować relacje między jednostkami. Na poniższym diagramie przedstawiono bazę danych personelu organizacji ustrukturyzowaną jako graf. Jednostki to pracownicy i działy, a krawędzie wskazują relacje raportowania i działy, w których pracują pracownicy.

Diagram of a document database

Ta struktura ułatwia wykonywanie zapytań, takich jak "Znajdź wszystkich pracowników, którzy zgłaszają się bezpośrednio lub pośrednio do Sarah" lub "KtoTo działa w tym samym dziale co Jan?" W przypadku dużych grafów z dużą częścią jednostek i relacji można bardzo szybko wykonywać bardzo złożone analizy. Wiele baz danych wykresu dostarcza język zapytania, który umożliwia wydajne przechodzenie przez sieć relacji.

Usługi platformy Azure

Obciążenie

  • Złożone relacje między elementami danych obejmującymi wiele przeskoków między powiązanymi elementami danych.
  • Relacja między elementami danych jest dynamiczna i zmienia się wraz z upływem czasu.
  • Relacje między obiektami są obywatelami pierwszej klasy, bez wymogów dotyczących kluczy obcych i sprzężeń w celu przechodzenia.

Typ danych

  • Węzły i relacje.
  • Węzły przypominają wiersze tabeli lub dokumenty JSON.
  • Relacje są równie ważne jak węzły i są uwidaczniane bezpośrednio w języku zapytań.
  • Złożone obiekty, takie jak osoba mająca wiele numerów telefonów, zwykle są podzielone na oddzielne, mniejsze węzły połączone z relacjami z możliwością przejścia

Przykłady

  • Schematy organizacyjne
  • Wykresy społeczne
  • Wykrywanie oszustw
  • Aparaty rekomendacji

Analiza danych

Magazyny analizy danych zbiorowo dostarczają równoległe rozwiązania do wprowadzania, przechowywania i analizowania danych. Dane są dystrybuowane na wielu serwerach w celu zmaksymalizowania skalowalności. Duże formaty plików danych, takie jak pliki ograniczników (CSV), parquet i ORC , są powszechnie używane w analizie danych. Dane historyczne są zwykle przechowywane w magazynach danych, takich jak magazyn obiektów blob lub usługa Azure Data Lake Storage Gen2, które są następnie dostępne przez usługę Azure Synapse, Databricks lub HDInsight jako tabele zewnętrzne. Typowy scenariusz użycia danych przechowywanych jako pliki parquet na potrzeby wydajności opisano w artykule Używanie tabel zewnętrznych z usługą Synapse SQL.

Usługi platformy Azure

Obciążenie

  • Analiza danych
  • Enterprise BI

Typ danych

  • Dane historyczne z wielu źródeł.
  • Zwykle nieznormalizowane w schemacie typu „gwiazda” lub „płatek śniegu”, składające się z tabel faktów i wymiarów.
  • Zwykle ładowane z nowymi danymi zgodnie z harmonogramem.
  • Tabele wymiarów często zawierają wiele wersji historycznych jednostki zwanych wolno zmieniającym się wymiarem.

Przykłady

  • Magazyn danych dla przedsiębiorstw

Bazy danych rodzin kolumn

Baza danych rodzin kolumn organizuje dane w wiersze i kolumny. W najprostszej postaci baza danych rodzin kolumn może bardzo przypominać relacyjną bazę danych, przynajmniej pod względem koncepcyjnym. Rzeczywista siła bazy danych rodzin kolumn leży w jej nieznormalizowanym podejściu do strukturyzowania danych rozrzedzonych.

Bazę danych rodzin kolumn można potraktować jako bazę zawierającą dane tabelaryczne z wierszami i kolumnami, jednak kolumny są podzielone na grupy, znane jako rodziny kolumn. Każda rodzina kolumn posiada zestaw kolumn, które są ze sobą logicznie powiązane i są zwykle pobierane lub modyfikowane jako jednostka. Inne dane, które są dostępne oddzielnie, mogą być przechowywane w oddzielnych rodzinach kolumn. W obrębie rodziny kolumn nowe kolumny mogą być dodawane dynamicznie, a wiersze mogą być rozrzedzone (to znaczy, że wiersz nie musi mieć wartości dla każdej kolumny).

Na poniższym diagramie przedstawiono przykład z dwiema rodzinami kolumn: Identity i Contact Info. Dane dla pojedynczej jednostki mają ten sam klucz wiersza w każdej rodzinie kolumn. Ta struktura, w której wiersze dla dowolnego obiektu w rodzinie kolumny mogą różnić się dynamicznie, przynosi ważne korzyści wynikające z podejścia opartego na rodzinie kolumn. Z tego powodu ta forma magazynowania danych jest wysoce odpowiednia do przechowywania strukturalnych, nietrwałych danych.

Diagram of a column-family database

W odróżnieniu od magazynu klucz/wartość lub bazy danych dokumentów większość baz danych rodzin kolumn magazynuje dane w kolejności klucza, a nie przez obliczanie skrótu. Wiele implementacji umożliwia tworzenie indeksów określonych kolumn w rodzinie kolumn. Indeksy pozwalają na pobieranie danych według wartości kolumn, a nie klucza wiersza.

Operacje odczytu i zapisu dla wiersza są zazwyczaj niepodzielne za pomocą jednej rodziny kolumn, jednakże niektóre implementacje zapewniają niepodzielność w całym wierszu, obejmując wiele rodzin kolumn.

Usługi platformy Azure

Obciążenie

  • Większość baz danych rodzin kolumn wykonuje operacje zapisu niezwykle szybko.
  • Operacje aktualizowania i usuwania są rzadkie.
  • Zaprojektowana w celu zapewnienia wysokiej przepływności i dostępu z małym opóźnieniem.
  • Obsługuje łatwy dostęp zapytań do określonego zestawu pól w znacznie większym rekordzie.
  • Wysoka skalowalność.

Typ danych

  • Dane są przechowywane w tabelach składających się z kolumny klucza i co najmniej jednej rodziny kolumn.
  • Określone kolumny mogą się różnić poszczególnymi wierszami.
  • Poszczególne komórki są dostępne za pośrednictwem poleceń „get” oraz „put”
  • Wiele wierszy jest zwracanych za pomocą polecenia skanowania.

Przykłady

  • Zalecenia
  • Personalizacja
  • Dane czujników
  • Telemetria
  • Obsługa wiadomości
  • Analiza mediów społecznościowych
  • Analiza danych internetowych
  • Monitorowanie aktywności
  • Pogoda i inne dane szeregów czasowych

Bazy danych aparatu wyszukiwania

Baza danych aparatu wyszukiwania umożliwia aplikacjom wyszukiwanie informacji przechowywanych w zewnętrznych magazynach danych. Baza danych aparatu wyszukiwania może indeksować ogromne ilości danych i zapewniać niemal w czasie rzeczywistym dostęp do tych indeksów.

Indeksy mogą być wielowymiarowe i mogą obsługiwać wyszukiwania dowolnego tekstu wśród dużych ilości danych tekstowych. Indeksowanie można wykonać przy użyciu modelu ściągania wyzwalanego przez bazę danych aparatu wyszukiwania lub modelu wypychania inicjowanego przez kod aplikacji zewnętrznej.

Wyszukiwanie może być dokładne lub rozmyte. Wyszukiwanie rozmyte znajduje dokumenty zgodne z zestawem warunków i oblicza, w jakim stopniu są zgodne z wyszukiwaniem. Niektóre aparaty wyszukiwania obsługują także analizy językowe, które mogą zwracać wyniki w oparciu o synonimy, rozszerzenia gatunków (na przykład dopasowanie elementu dogs do pets) i analizę słowotwórczą (dopasowanie wyrazów o takim samym rdzeniu).

Usługa platformy Azure

Obciążenie

  • Indeksy danych z wielu źródeł i usług.
  • Zapytania mogą być typu ad hoc i mogą być złożone.
  • Wyszukiwanie pełnotekstowe jest wymagane.
  • Samoobsługowe zapytanie ad hoc jest wymagane.

Typ danych

  • Tekst częściowo ustrukturyzowany lub nieustrukturyzowany
  • Tekst z odniesieniem do danych strukturalnych

Przykłady

  • Katalogi produktów
  • Wyszukiwanie w witrynie
  • Rejestrowanie

Bazy danych szeregów czasowych

Dane szeregów czasowych to zestaw wartości zorganizowanych według czasu. Bazy danych szeregów czasowych zwykle zbierają duże ilości danych w czasie rzeczywistym z dużej liczby źródeł. Aktualizacje są rzadkie, a usuwanie jest realizowane często jako operacje zbiorcze. Mimo że rekordy zapisywane do bazy danych szeregów czasowych zwykle są małe, są często bardzo liczne, przez co całkowity rozmiar danych szybko rośnie.

Usługa platformy Azure

Obciążenie

  • Rekordy są zazwyczaj dołączone sekwencyjnie w porządku czasowym.
  • Przytłaczająca część operacji (95–99%) to zapisy.
  • Aktualizacje są rzadkie.
  • Operacje usuwania są realizowane zbiorowo i dotyczą ciągłych bloków lub rekordów.
  • Dane są odczytywane sekwencyjnie w kolejności rosnącej lub malejącej, często równolegle.

Typ danych

  • Sygnatura czasowa jest używana jako klucz podstawowy i mechanizm sortowania.
  • Tagi mogą definiować dodatkowe informacje o typie, pochodzeniu i innych informacjach o wpisie.

Przykłady

  • Monitorowanie i dane telemetryczne zdarzeń.
  • Czujnik lub inne dane IoT.

Magazyn obiektów

Magazyn obiektów jest zoptymalizowany pod kątem przechowywania i pobierania dużych obiektów binarnych (obrazów, plików, strumieni audio i wideo, dużych dokumentów i obiektów danych aplikacji oraz obrazów dysków maszyn wirtualnych). Duże pliki danych są również często używane w tym modelu, na przykład plik ogranicznika (CSV), parquet i ORC. Magazyny obiektów mogą zarządzać bardzo dużą ilością danych bez struktury.

Usługa platformy Azure

Obciążenie

  • Identyfikowane za pomocą klucza.
  • Zawartość jest zazwyczaj zasobem, takim jak ogranicznik, obraz lub plik wideo.
  • Zawartość musi być trwała i zewnętrzna dla dowolnej warstwy aplikacji.

Typ danych

  • Rozmiar danych jest duży.
  • Wartość jest nieprzezroczysta.

Przykłady

  • Obrazy, klipy wideo, dokumenty pakietu Office, pliki PDF
  • Statyczny kod HTML, JSON, CSS
  • Pliki dziennika i inspekcji
  • Kopie zapasowe bazy danych

Udostępnione pliki

Czasami użycie plików prostych jest najbardziej skutecznym sposobem przechowywania i pobierania informacji. Przy użyciu udziałów plików można uzyskać dostęp do plików poprzez sieć. Biorąc pod uwagę odpowiednie ustawienia zabezpieczeń i mechanizmy kontroli jednoczesnego dostępu, udostępnianie danych w ten sposób może pozwolić rozproszonym usługom na zapewnienie dostępu do wysoce skalowalnych danych w celu wykonywania podstawowych operacji niskiego poziomu, takich jak żądania prostego odczytu i zapisu.

Usługa platformy Azure

Obciążenie

  • Migracja z istniejących aplikacji wchodzących w interakcję z systemem plików.
  • Interfejs SMB jest wymagany.

Typ danych

  • Pliki w hierarchicznym zestawie folderów.
  • Dostępne przy użyciu standardowych bibliotek we/wy.

Przykłady

  • Starsze pliki
  • Udostępniona zawartość dostępna na większej liczbie maszyn wirtualnych lub wystąpień aplikacji

Ułatwia to zrozumienie różnych modeli magazynowania danych, następnym krokiem jest ocena obciążenia i aplikacji oraz podjęcie decyzji, który magazyn danych będzie spełniał określone potrzeby. Użyj drzewa decyzyjnego magazynu danych, aby ułatwić ten proces.

Następne kroki