Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



25.10.2019

Skalowalna infrastruktura

Red Hat OpenStack Platform 15
25.10.2019

Cienki klient 2.0

Windows Virtual Desktop
25.10.2019

Nowy sprzęt Microsoftu

Rodzina Surface się powiększa
24.10.2019

Serwery ARM

Oracle stawia na Ampere Computing
24.10.2019

Wszechstronny i elegancki

Dell XPS 15
10.10.2019

CYBERSEC EXPO - największe w...

Bezpieczeństwo cyfrowe nie jest problemem dotyczącym jedynie działów IT. Obecnie stanowi...
30.09.2019

Nowości w wirtualizacji

VMware World 2019
30.09.2019

Bezpieczeństwo mobile-first

Android 10

Budowa nowoczesnego systemu analitycznego

Data publikacji: 29-08-2019 Autor: Marcin Szeliga
rys. 1. SERWER BDC –...

Ilość cyfrowych danych generowanych każdego dnia jest niewyobrażalna – szacuje się ją na 3 tryliony bajtów i liczba ta z dnia na dzień rośnie. Z roku na rok generujemy więcej danych niż we wszystkich poprzednich latach od początku historii naszego gatunku. Ten wzrost zawdzięczamy przede wszystkim urządzeniom mobilnym i wszechobecnym, podłączonym do sieci, czujnikom.

 

Gdyby przyjąć, że jeden bajt odpowiada jednemu ziarenku piasku, liczba dostępnych bajtów danych pięciokrotnie przewyższyłaby sumę ziarenek piasku wszystkich ziemskich plaż. Jednak dane jako takie są bezwartościowe. To ukryte w nich informacje są cenne. A droga od danych do informacji jest długa. Zaczyna się od zapisania danych. Dane relacyjne, czyli dane w postaci tabelarycznej, najczęściej przechowywane i przetwarzane są w systemach baz danych. Dane częściowo ustrukturyzowane z reguły trafiają do dokumentów XML lub json i są przetwarzane przy użyciu baz NoSQL, na przykład MongoDB. Dane nieustrukturyzowane, takie jak zdjęcia, zapisuje się w plikach binarnych. Pierwsze wyzwanie polega na odczytaniu i połączeniu ze sobą danych zapisanych w różnych systemach i formatach.

Następnie dane trzeba przygotować do analizy, czyli odpowiednio przekształcić – pogrupować, zastąpić współrzędne geograficzne nazwami ulic, wyliczyć na podstawie dat wysyłki i dostarczenia czas przesyłki itd. Na etapie przygotowywania danych do analiz również wykrywa się i rozwiązuje problemy z jakością danych – uzupełnia brakujące dane, poprawia błędy, eliminuje wartości odstające itd. To etap niezwykle czasochłonny i wymaga zastosowania wydajnych i funkcjonalnych narzędzi. Ponad 95% specjalistów przygotowuje dane, używając jednego z trzech języków: SQL, Python lub R. Wszystkie one są dostępne w edycji Big Data Clusters serwera SQL 2019.

Dostępne w ogromnych ilościach dane uzupełnione o techniczne możliwości ich przetwarzania doprowadziły do bezprecedensowego rozwoju sztucznej inteligencji. Od 2012 r. rynek AI – mierzony wartością globalnych inwestycji oraz wartością kontraktów – podwaja się co dwa lata. Algorytmy uczenia maszynowego trenuje się na danych historycznych, czyli na przykładach. Podczas uczenia algorytm wykrywa ukryte w przykładach wzorce i tworzy na ich podstawie model uczenia maszynowego. Taki model może być następnie używany do predykcji. Na przykład model nauczony na danych sprzedażowych może przewidzieć przyszłą wartość sprzedaży, model nauczony na historiach chorób pacjentów może oceniać postępy leczenia nowych pacjentów, a model nauczony na danych opisujących działanie sieci wodociągowej – przewidywać zużycie wody, wykrywać próby kradzieży albo znajdować bieżące i przyszłe awarie wodociągów. Użycie modeli uczenia maszynowego do automatycznego wykrywania ukrytych w danych informacji i uzupełniania brakujących danych często jest ostatnim etapem działania nowoczesnych systemów analitycznych.

SQL Server 2019 Big Data Clusters (BDC) to platforma przetwarzania różnorodnych danych za pomocą różnych metod i języków programowania. Artykuł opisuje edycję BDC najnowszej wersji serwera SQL firmy Microsoft. Przedstawione w nim zostały najważniejsze funkcje tego serwera i ich typowe zastosowania.

> INTEGRACJA RÓŻNYCH TYPÓW DANYCH

Serwer BDC integruje przechowywane w relacyjnych bazach danych dane tabelaryczne z danymi częściowo nieustrukturyzowanymi, dokumentami przechowywanymi w systemach big data (z reguły pliki tekstowe) oraz strumieniami danych. Żeby w pełni docenić tę integrację, warto wyjaśnić różnice pomiędzy relacyjnymi bazami danych a systemami big data oraz danymi statycznymi a strumieniowymi.

Teoretyczne podstawy modelu relacyjnego zostały zdefiniowane w latach 70. XX wieku przez dra E.F. Codda. W tym modelu dane są przechowywane w wielu odrębnych, ale powiązanych ze sobą tabelach. Tabele mają dobrze określoną strukturę i składają się z pionowych kolumn i poziomych wierszy, na przecięciu których znajdują się komórki. Liczba kolumn tabeli jest stała, a w poszczególnych kolumnach znajdują się zawsze dane tego samego typu. Ponadto każdy wiersz tabeli składa się z takiej samej liczby komórek. Oznacza to, że w tabeli można zapisać tylko poprawne, zgodne z jej schematem, dane. Sprawdzanie zgodności ze schematem zapisywanych danych (schema on write) znacząco ogranicza elastyczność modelu relacyjnego i wymaga wcześniejszego przygotowania danych. Z drugiej strony umożliwia on bardzo szybkie przetwarzanie danych przy użyciu strukturalnego języka zapytań (SQL). Od pół wieku model relacyjny jest najpopularniejszym modelem baz danych.

Większość cyfrowych danych to dane częściowo ustrukturyzowane, takie jak dokumenty tekstowe, oraz nieustrukturyzowane, jak pliki graficzne. Ich analizowanie przy użyciu serwerów relacyjnych baz danych jest trudne. Z myślą o wydajnym przetwarzaniu dużych wolumenów zróżnicowanych danych zostały stworzone systemy big data, które przechowują dane (pliki tekstowe) w rozproszonym systemie plików HDFS (Hadoop Distributet File System). Pozwala on przechowywać duże (nawet petabajtowe) pliki na dyskach setek, lub nawet tysięcy, węzłów klastra Hadoop. Drugim, oprócz systemu HDFS, podstawowym elementem klastrów Hadoop jest uniwersalna metoda przetwarzania dowolnych danych Map/Reduce. Zadaniem kroku mapującego jest przekształcenie danych do postaci par klucz-wartość. W ten sposób można przedstawić dowolne dane, co pozwala analizować dane o zróżnicowanych strukturach. Krok redukujący zmniejsza liczbę analizowanych danych, np. obliczając średnią lub zliczając wartości dla poszczególnych kluczy. Zastosowany algorytm pozwala określać strukturę danych podczas ich odczytywania (schema on read), co znacznie zwiększa elastyczność modelu. Systemy Hadoop przechowują dowolne dokumenty, a wymagany przez narzędzia analityczne (takie jak Excel) format tabelaryczny jest nadawany podczas ich przetwarzania. Ponadto wykonywanie obliczeń na poszczególnych węzłach, tam gdzie przechowywane są dane, pozwala łatwo skalować systemy Hadoop wszerz – żeby zwiększyć ich moc obliczeniową, wystarczy dodać do klastra kolejne węzły.

Wadą klasycznych systemów Hadoop jest konieczność przetwarzania danych poprzez pisanie w języku Java zadań Map/Reduce (funkcji mapujących i redukujących). Ponieważ niewielu analityków i specjalistów baz danych zna ten język, powstały interfejsy wysokiego poziomu, takie jak Hive, który tłumaczy zapytania napisane w języku Hive SQL na zadania Map/Reduce. Dodatkowo pozwala on tworzyć wirtualne tabele, które mogą być odczytywane jak tabele relacyjnych baz danych, chociaż zwracane przez nie dane znajdują się w plikach zapisanych w systemie HDFS.

Serwery Hadoop, choć lepiej skalowalne, są niestety znacznie wolniejsze od relacyjnych baz danych. Głównym powodem ich ograniczonej wydajności jest wielokrotne zapisywanie częściowych wyników przeprowadzanych obliczeń na dyskach. Apache Spark jest wersją systemu Hadoop, która przetwarzane dane przechowuje w pamięci węzłów klastra jako obiekty RDD (Resilient Distributed Datasets). W rezultacie wydajność serwerów Spark nawet stukrotnie przewyższa wydajność serwerów Hadoop. Ponadto Spark umożliwia przetwarzanie danych za pomocą większej liczby popularnych języków programowania, takich jak Scala, Python, R oraz będący odpowiednikiem języka Hive SQL – Spark SQL.

 

W klasycznych systemach analitycznych dane są pobierane z systemów źródłowych, odpowiednio przekształcane i zapisywane w hurtowniach danych. Zapisane w hurtowniach, wyczyszczone i zintegrowane dane są następnie używane do zasilania modeli biznesowych. Zbudowanie i utrzymanie procesów ETL (Extract, Transform, Load) odpowiadających za przesyłanie i przekształcanie danych, jest najbardziej pracochłonną i najkosztowniejszą częścią projektów BI – szacuje się, że pochłania ona około 80% czasu i budżetu projektu. Ponadto klasyczne procesy ETL przetwarzają dane blokowo, co oznacza, że uruchamia się je raz na jakiś czas (z reguły raz na dobę). W rezultacie użytkownicy pracują z nieaktualnymi, w najlepszym wypadku wczorajszymi, danymi. Według IDC ponad ¾ firm uważa, że brak możliwości analizowania bieżących danych ogranicza możliwości biznesowe. Spark jest połączeniem wielu różnych technologii. Jedna z nich, Spark Streaming, pozwala przetwarzać odczytywane na bieżąco dane, tak jakby były to dane statyczne.

 

[...]

 

Pracownik naukowy Wyższej Szkoły Bankowej w Poznaniu Wydział Zamiejscowy w Chorzowie, jest autorem książek poświęconych analizie danych i posiada tytuł Microsoft Most Valuable Professional.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"