Ogólnie o bazach i przetwarzaniu danych

Wprowadzenie do baz danych

W świecie, który znamy spotykamy się z bytami różnego typu. Mogą to być np., książki, produkty w sklepie, jeśli rozważamy rzeczy materialne lub uprawnienia, wiedza, stan konta bankowego, jeśli rozważamy rzeczy niematerialne. Inaczej mówiąc jest to wybrany fragment rzeczywistości, który należy zinformatyzować. Aby to zrobić, analizuje się owe byty (obiekty). Programista baz danych to osoba, która odwzorowuje obiekty świata rzeczywistego w obiekty abstrakcyjne mające swoją reprezentację w systemie informatycznym. Dane zaś to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp i które mogą być przetworzone przez komputer.

Baza danych (ang. data base) to inaczej trwały uporządkowany zbiór danych (rekordów) z pewnej grupy tematycznej zorganizowany w taki sposób, by możliwe było ich wyszukiwanie według zadanych kryteriów. Uporządkowania danych nie należy mylić z sortowaniem. Chodzi tu raczej o organizację w tabele wiersze i indeksy, która pozwala na szybsze odnalezienie potrzebnych danych. Każda baza danych jest wyposażona w odrębny interfejs API umożliwiający wykonywanie operacji na bazie danych tj: tworzenie, zarządzanie, uzyskiwanie dostępu oraz wyszukiwanie przechowywanych danych. Inaczej mówiąc baza danych to zbiór informacji (obszaru analizy) będący odwzorowaniem wybranego fragmentu rzeczywistości. Bazy danych możemy podzielić na bazy lokalne i sieciowe.

  • lokalna baza danych (local data base) – to baza danych, do której mają dostęp jedynie osoby pracujące na danej stacji roboczej. Przykładem systemu zarządzania lokalnej bazy danych jest MS Access.
  • sieciowa baza danych to baza danych umieszczona na serwerze a system nią zarządzający pracuje w modelu klient-serwer.

Najbardziej znane systemy zarządzania bazami relacyjnymi to: MySQL, Sybase, OraclePostgreSQL , SQL Server , itp. Systemy są obsługiwane przez język SQL (Structured Query Language) czyli uniwersalny język zapytań stosowanych w systemach relacyjnych baz danych.[1]

Systemy relacyjne to nie wszystko

Obok baz SQL powstały też byty które w nie wykorzystują składni języka SQL. Noszą one miano NoSQL. Właściwie nazwa ta nie jest zbyt właściwa, gdyż nie kryje się pod nią żadna konkretna technologia. „Początkowo, w 2009r. miała być tylko chwytliwym tagiem na Twitterze dotyczącym spotkań poświęconych otwartym, rozproszonym, nierelacyjnym bazom”.[1] Jednak nazwa ta szybko się przyjęła a popularność tych baz wynika między innymi z potrzeby większej skalowalności, potrzebą bezpłatnego oprogramowania.

Przykłady NoSql

  • Redis
  • Cassandra
  • MongoDB
  • Neo4j

Od systemów zarządzania bazami danych wymaga się spójności, niezawodności oraz skalowalności jak również łatwości w ich konserwacji. Reasumując, różne bazy danych wykorzystuje się do różnych zastosowań. NoSQL jest odpowiedzią, a raczej uzupełnieniem istniejącego modelu baz relacyjnych, wprowadzają nowe funkcjonalności, lecz muszą one istnieć w symbiozie by spełniały stawiane przed nimi zadania.

[1] Pramod J. Sadalage, M. Flower, NoSql Distilled, Addison-Wesley, 2012, ISBN, 978-0-321-82662-6

Co to jest przetwarzanie danych

Analizę i badanie danych określa się mianem przetwarzania danych. Nim przejdziemy do dalszej części rozważań należy odpowiedzieć czym jest przetwarzanie danych. Przetwarzanie danych (PD) jest przekształceniem danych i ich formy poprzez czynności które mają dać wyniki spełniające określone warunki. Inaczej mówiąc jest to proces zmiany danych wejściowych w dane wyjściowe. Oczywiście termin przetwarzania danych to idea o wiele bardziej złożona, lecz na potrzeby tejże pracy będziemy rozpatrywać jego węższe znaczenie tj. przetwarzanie danych masowych. Sam proces przetwarzania danych w tym aspekcie można podzielić na kilka etapów:

ETAP 1 – przygotowanie danych

Na tym etapie ustala się potrzeby użytkownika, inaczej mówiąc co ma być w danych wyjściowych, ustala się również jakie dane wejściowe są potrzebne, by dały potrzebne wyniki. Określa się niezbędne oprogramowanie i dokumentację. Warto na tym etapie o wspomnieć o różnych punktach widzenia dotyczących przygotowania danych:

Z punktu widzenia infologicznego rozważany jest rodzaj i zakres danych jakie przetwarzanie ma dostarczyć, aspekt metodologiczny dostarcza wiedzy o źródłach, wykorzystywanych narzędziach i metodach; techniczny wskazuje na środki gromadzenia danych, organizacyjny określa harmonogram według którego przetwarzanie się odbędzie. Ostatni to aspekt przestrzenny związany jest z zastosowaniem systemów informacji przestrzennej zawierającej dane o obiektach na pewnym obszarze.

ETAP 2 – gromadzenie danych

Następuje poprzez wprowadzenie określonych danych przez człowieka ręcznie lub z wykorzystaniem maszyn  (np. skanerów, kamer) i oprogramowania do bazy danych. Na tym etapie następuje również analiza jakości danych tj. ich poprawności i kompletności, wykrycie ewentualnych błędów merytorycznych z określeniem ich rodzaju oraz źródła.

ETAP 3 – przygotowanie danych do przetwarzania

Następuje obróbka w zakresie ich skracania do niezbędnych w celu określenia danych wyjściowych, jak również sprawdzenie danych oraz ich źródeł oraz ewentualne poprawki. Ustala się również, jakie jeszcze dane są potrzebne. Dane podlegają też wstępnemu sortowaniu (by przetwarzanie trwało krócej) a także kompresji.

ETAP 4 – zasadnicze przetwarzanie danych

polegające na powtarzaniu takich operacji na danych początkowych, by uzyskać dane końcowe. Następnie dane te się redaguje i udostępnia użytkownikowi.

ETAP 5 – zakończenie procesu przetwarzania danych wraz z przekazaniem zbiorów do archiwum

Na wszystkich etapach wprowadza się mechanizmy i sposoby automatyzacji w celu usprawnienia prac.

Podział przetwarzania danych ze względu na różne kryteria

Przetwarzanie ze względu na ciągłość dostarczanych danych:

  • przetwarzanie wsadowe
  • przetwarzanie strumieniowe

Przetwarzanie określonego skończonego zbioru określa się mianem przetwarzania wsadowego.

oprócz nich istnieją dane które napływają w sposób ciągły np. ruch na autostradzie, przepływ pieszych w galeriach, zmieniająca się pogoda itp. To już nie jest jakiś wybrany wycinek rzeczywistości, lecz strumień ciągle napływających informacji. Takie ciągle płynące informacje określa się terminem strumienia danych. Dane, oprócz tego, że napływają w sposób ciągły to jeszcze z różnych źródeł, a zatem należy je badać i analizować w sposób ciągły i dynamiczny. Tym zajmują się systemy przetwarzania strumieniowego.[1]

[1] https://codecouple.pl/2016/02/07/strumieniowe-bazy-danych-definicje/

Mówiąc o przetwarzaniu danych można dokonać podziału ze względu na miejsce. Do tychże należy:

  • przetwarzanie scentralizowane
  • przetwarzanie rozproszone

Zarówno jedno jak i drugie rozwiązanie ma swoje wady i zalety. W pierwszym przypadku przetwarzanie odbywa się w centrum przetwarzania danych. Organizacja takiego przetwarzania nie należy do skomplikowanych. Prostszy też jest sposób, w jaki zarządza się zasobami. Z drugiej strony ponieważ dane trzeba zgromadzić i je przetworzyć pojawia się konieczność posiadania dużej mocy obliczeniowej w punkcie.

Przetwarzanie rozproszone to przetwarzanie w modelu klient serwer. Jak sama nazwa wskazuje węzły znajdują się w różnych miejscach. Choć takie przetwarzanie przynosi korzyści w postaci wykorzystania mocy obliczeniowej poszczególnych klientów i nie angażuje jednego centrum, to pojawiają się inne trudności. Np. konieczność zachowania łączności, problemy organizacyjne. Niewątpliwą zaletą takiego rozwiązania jest fakt, że źródło danych może znajdować się bardzo blisko osoby przetwarzającej dane.

Stale rozwijana architektura sprzętowa nie nadąża za rosnącymi potrzebami. Co prawda procesory wielordzeniowe stały się już standardem, sieci są coraz szybsze, lecz w pojedynkę nie są w stanie przetworzyć wielkiej ilości danych a przy tym być szybkie i niezawodne. Tak pojawiła się potrzeba przetwarzania równoległego i wszystko wskazuje na to, iż będzie ona stale rozwijana.

Mówiąc o bazach danych można jeszcze spotkać się z pojęciem przetwarzania transakcyjnego. Nazwa transakcja wywodzi się z początków przetwarzania danych, kiedy to operacja wykonywana na bazie danych dotyczyła odpowiadającej jej transakcji biznesowej np. kupna, sprzedaży. Początkowo transakcja była odpowiednikiem operacji związanej z finansami i mimo, że od tamtej pory bazy danych nie dotyczą jedynie czynności z użyciem środków pieniężnych, nazwa ta pozostała niezmienna. Transakcje mogą być wykonywane przez dużą liczbę użytkowników naraz (np. wielostanowiskowe rejestrowanie sprzedaży), a ich liczba może być naprawdę spora (np. kasy w markecie). Przetwarzanie transakcji odbywa się w czasie rzeczywistym, co z języka angielskiego oznacza Online Transaction Processing – w skrócie OLTP.  W zapytaniach we wzorcu OLTP wykorzystuje się niewielką ilość krotek, a ich wyszukiwanie odbywa się na podstawie klucza. Z tego wzorca korzystają najczęściej klienci z aplikacji webowej.Właściwości gwarantujące poprawne przetwarzanie transakcji to atomowość (niepodzielność), spójność, izolacja, trwałość, w skrócie ACID (z ang. atomicity, consistency, isolation, durability)

Ze względu na fakt, że bazy danych coraz częściej wykorzystywane są to analityki danych używa się wzorca OLAP (Online Analitic Processing). W takim zapytaniu przeszukiwana jest zazwyczaj duża ilość krotek. Jest on używany głównie przez analityków biznesowych i dostarczają cennych danych zarządom firm. Przykładowe zapytanie analityczne to: w jakim okresie sprzedaje się najwięcej napojów gazowanych? Do zapisu takich danych używa się zazwyczaj strumieniowania zdarzeń.

[1] J. Pokorska, „Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych”, Helion, 2019