Kryteria wyboru magazynu danych

W tym artykule opisano kryteria porównania, których należy użyć podczas oceny magazynu danych. Celem jest pomoc w określeniu, które typy magazynów danych spełniają wymagania rozwiązania użytkownika.

Zagadnienia ogólne

Podczas wybierania należy pamiętać o następujących kwestiach.

Wymagania funkcjonalne

  • Format danych: jakiego typu dane mają być przechowywane? Do popularnych typów zaliczane są dane transakcyjne, obiekty JSON, dane telemetryczne, indeksy wyszukiwania lub pliki proste.
  • Rozmiar danych: Jak duże są jednostki, które należy przechowywać? Czy te jednostki będą musiały być utrzymywane jako pojedynczy dokument, czy też mogą być podzielone na wiele dokumentów, tabel i kolekcji?
  • Skalowanie i struktura: Jaka jest ogólna ilość potrzebnej pojemności magazynu? Czy planowane jest partycjonowanie danych?
  • Relacje danych: czy dane będą musiały obsługiwać relacje jeden do wielu lub wiele do wielu? Czy relacje same w sobie są ważnym elementem danych? Czy musisz dołączyć lub w inny sposób połączyć dane z tego samego zestawu danych lub z zewnętrznych zestawów danych?
  • Model spójności: Jak ważne jest, aby aktualizacje wprowadzone w jednym węźle pojawiały się w innych węzłach przed wprowadzeniem dalszych zmian? Czy spójność ostateczna jest akceptowana? Czy potrzebna jest gwarancja niepodzielności, spójności, izolacji i trwałości dla transakcji?
  • Elastyczność schematu: Jakiego rodzaju schematy będą stosowane do danych? Będzie używany stały schemat, podejście schematu przy zapisie czy podejście schematu przy odczycie?
  • Współbieżność: jakiego rodzaju mechanizm współbieżności ma być używany podczas aktualizowania i synchronizowania danych? Czy aplikacja będzie wykonywać wiele aktualizacji, które mogą potencjalnie powodować konflikt? Jeśli tak, może być wymagane blokowanie rekordów i pesymistyczne sterowanie współbieżnością. Alternatywnie czy możliwa jest obsługa mechanizmów kontroli współbieżności optymistycznej? Jeśli tak, czy wystarczy prosta kontrola współbieżności oparta na sygnaturze czasowej, czy potrzebujesz dodatkowej funkcji wielowersji kontroli współbieżności?
  • Przenoszenie danych: Czy rozwiązanie będzie musiało wykonywać zadania ETL, aby przenieść dane do innych magazynów lub magazynów danych?
  • Cykl życia danych: czy dane są zapisywane raz, wiele do odczytu? Czy mogą zostać przeniesione do chłodnego lub zimnego magazynu?
  • Inne obsługiwane funkcje: Czy potrzebujesz innych określonych funkcji, takich jak weryfikacja schematu, agregacja, indeksowanie, wyszukiwanie pełnotekstowe, MapReduce lub inne funkcje zapytań?

Wymagania niefunkcjonalne

  • Wydajność i skalowalność: Jakie są wymagania dotyczące wydajności danych? Czy istnieją określone wymagania dotyczące szybkości pozyskiwania danych i szybkości przetwarzania danych? Jakie są akceptowalne czasy odpowiedzi na zapytania i agregację danych po ich pozyskaniu? Jak bardzo magazyn danych będzie musiał skalować w górę? Obciążenie jest mocniejsze przy odczycie czy przy zapisie?
  • Niezawodność: Jaka ogólna umowa dotycząca poziomu usług jest potrzebna do obsługi? Jaki poziom odporności na uszkodzenia jest potrzebny dla użytkowników danych? Jakiego rodzaju możliwości tworzenia i przywracania kopii zapasowych są potrzebne?
  • Replikacja: Czy dane muszą być dystrybuowane między wieloma replikami lub regionami? Jakiego rodzaju funkcje replikacji danych są potrzebne?
  • Limity: czy limity określonego magazynu danych będą obsługiwać wymagania dotyczące skalowania, liczby połączeń i przepływności?

Zarządzanie i koszy

  • Usługa zarządzana: jeśli to możliwe, użyj zarządzanej usługi danych, chyba że potrzebujesz określonych funkcji, które można znaleźć tylko w magazynie danych hostowanym w infrastrukturze jako usłudze (IaaS).
  • Dostępność regionów: czy w przypadku usług zarządzanych usługa jest dostępna we wszystkich regionach świadczenia usługi Azure? Czy rozwiązanie musi być hostowane w pewnych regionach świadczenia usługi Azure?
  • Przenośność: czy dane muszą być migrowane do lokalnych, zewnętrznych centrów danych lub innych środowisk hostingu w chmurze?
  • Licencjonowanie: Czy masz preferencje dotyczące własności i typu licencji systemu operacyjnego? Czy istnieją inne zewnętrzne ograniczenia dotyczące typu licencji, którego można użyć?
  • Całkowity koszt: jaki jest całkowity koszt korzystania z usługi w ramach rozwiązania? Ile wystąpień będzie potrzebnych do obsługi wymagań dotyczących czasu pracy i przepływności? W tych obliczeniach należy wziąć pod uwagę koszty operacyjne. Jednym z powodów przemawiających za usługami zarządzanymi jest obniżenie kosztów operacyjnych.
  • Opłacalność: Czy można partycjonować dane, aby przechowywać je bardziej opłacalnie? Na przykład czy jest możliwe przeniesienie dużych obiektów z kosztownej relacyjnej bazy danych do magazynu obiektów?

Zabezpieczenia

  • Zabezpieczenia: Jakiego typu szyfrowanie jest wymagane? Czy jest potrzebne szyfrowanie w spoczynku? Jaki mechanizm uwierzytelniania będzie używany do nawiązania połączenia z danymi?
  • Inspekcja: jakiego rodzaju dziennik inspekcji należy wygenerować?
  • Wymagania dotyczące sieci: Czy musisz ograniczyć dostęp do danych z innych zasobów sieciowych lub zarządzać nim w inny sposób? Czy dane mają być dostępne tylko ze środowiska platformy Azure? Czy dane mają być dostępne z określonych adresów IP lub podsieci? Czy mają być dostępne z aplikacji lub usług hostowanych lokalnie lub w innych zewnętrznych centrach danych?

DevOps

  • Zestaw umiejętności: czy istnieją języki programowania, systemy operacyjne lub inne technologie, z których korzysta Twój zespół? Czy istnieją inne rozwiązania, z którymi praca może sprawiać trudności dla zespołu?
  • Klienci: czy istnieje dobra obsługa klienta dla języków programowania?

Następne kroki