# Wstęp
## Wprowadzenie
W erze cyfryzacji generowane są ogromne ilości danych których częste przetwarzane, analizowane oraz zarządzanie staje się kluczowym wyzwaniem dla organizacji na całym świecie. Dane te mają różnorodne zastosowania, od analizy trendów rynkowych po optymalizację operacji biznesowych. W tym kontekście, systemy zarządzania bazami danych (DBMS) odgrywają kluczową rolę, umożliwiając efektywne przetwarzanie, przechowywanie i analizę danych. W szczególności, dane handlowe zorganizowane w systemie **Harmonized System (HS)** stają się coraz bardziej znaczące, ponieważ globalny handel i logistyka wymagają precyzyjnej i efektywnej klasyfikacji towarów.
## Problem badawczy
Problemem badawczym, który leży u podstaw tej pracy, jest analiza i porównanie wydajności różnych paradygmatów DBMS - \Gls{SQL}, \Gls{NoSQL} i \Gls{NewSQL} - w kontekście złożonych operacji zapytań i agregacji danych, z uwzględnieniem specyfiki danych HS. Wybór odpowiedniego systemu DBMS ma kluczowe znaczenie dla efektywności przetwarzania dużych zbiorów danych, co ma bezpośrednie przełożenie na szybkość działania usługi z perspektywy klienta końcowego, co bezpośrednio przekłada się na zyski usługodawcy.
## Cel i zakres pracy
Celem niniejszej pracy jest przeprowadzenie dogłębnych badań wydajnościowych trzech głównych paradygmatów DBMS, aby ocenić, który z nich jest najbardziej efektywny w kontekście operacji zapytań i agregacji danych HS. Praca ta ma na celu dostarczenie praktycznych wskazówek i zaleceń, które mogą pomóc organizacjom w wyborze najbardziej odpowiedniego systemu DBMS w oparciu o specyficzne wymagania i scenariusze użytkowania.
## Metodologia
Badanie to obejmie serię eksperymentów wydajnościowych, które będą przeprowadzone na wybranych systemach DBMS reprezentujących każdy z trzech paradygmatów: SQL, NoSQL i NewSQL. Testy te będą skupiać się na analizie prędkości różnych typów zapytań klienckich oraz na efektywności przygotowania agregacji danych, uwzględniając różne poziomy agregacji i grupowania produktów zgodnie z kategoriami systemu HS. Przeanalizowane zostaną różne scenariusze użytkowania, od prostych zapytań po złożone operacje agregacji, aby zrozumieć, jak poszczególne systemy radzą sobie z rosnącą złożonością i wielkością danych.
## Struktura pracy
Praca jest podzielona na kilka kluczowych rozdziałów:
0. Streszczenie, słownik terminów.
1. **Wprowadzenie**: Przedstawienie problematyki, celów oraz zakresu pracy.
- Przedstawienie problemu badawczego.
- Przedstawienie celów i zakresu pracy.
- Omówienie metodologii.
- Przedstawienie struktury pracy.
2. **Omówienie danych**:
- Przedstawienie i zrozumienie systemu HS oraz kodów i ich zastosowań na podstawie przykładowych danych.
- Omówienie zastosowań danych z perspektywy klienta.
- Znaczenie i cel (pre)agregowania danych w oparciu o system hierarchiczny HS.
3. **Przegląd i analiza porównawcza paradygmatów**:
- Porównanie NoSQL, SQL i NewSQL.
- Omówienie dodatkowych zagadnień dotyczących każdego z paradygmatów.
4. **Metodologia badań**:
- Opis planowanych eksperymentów i metod analizy danych.
- Przedstawienie i omówienie aplikacji testującej referencyjne zapytania do baz danych (tzw. reference queries) oraz metodyka stojąca za doborem i krotnością/zakresami parametrów zapytania.
- Znaczenie i omówienie zapytań mocno selektywnych oraz "reporting total" (duże, zbiorcze).
- Przeprowadzenie badania prędkości oraz analiza zalet i wad danych rozwiązań.
5. **Wyniki i analiza**: Prezentacja i dyskusja wyników eksperymentów.
6. **Studium przypadku**: Praktyczne zastosowanie wyników w kontekście danych HS.
7. **Wnioski i zalecenia**: Podsumowanie badań i zalecenia dla praktyków i naukowców.
8. **Bibliografia**: Lista źródeł i literatury wykorzystanej w pracy.
## Podsumowanie
Praca ta stanowi kompleksowe podejście do zrozumienia i porównania różnych paradygmatów DBMS w kontekście wydajności operacji zapytań i agregacji. Przez połączenie analizy teoretycznej z praktycznymi badaniami, niniejsza praca ma na celu dostarczenie cennych wskazówek i wiedzy, które mogą być wykorzystane do optymalizacji wyboru i użytkowania systemów DBMS w różnych środowiskach biznesowych i technologicznych.
# Omówienie danych
## System Harmonized System (HS)
System Harmonized System (HS) to międzynarodowy system klasyfikacji towarów, który został stworzony w celu jednolitego i spójnego opisu produktów handlowych na całym świecie. Stanowi on obecnie niezbędne narzędzie w handlu międzynarodowym oraz statystyce handlu. Klasyfikacja towarów w systemie HS opiera się na przypisywaniu im kodów numerycznych, które reprezentują różne aspekty produktów.
Każdy kod HS jest unikalny i składa się z sześciu cyfr. Przykładowo, kod 851610 oznacza, na dzień \today, "Elektryczne przepływowe lub zbiornikowe podgrzewacze wody oraz grzałki zanurzeniowe" (ang. "Electric instantaneous or storage water heaters and immersion heaters").
HS klasyfikuje towary na podstawie ich przeznaczenia i cech fizycznych. Jest to kluczowy system kategoryzacji, który umożliwia jednoznaczne identyfikowanie produktów. Gdy użytkownik końcowy widzi kod HS na produkcie lub dokumencie handlowym, może być pewien, że jest to unikalny identyfikator, który precyzyjnie opisuje ten konkretny produkt.
Kody HS nie tylko identyfikują produkt, ale również dostarczają informacje na temat jego charakterystyki. Na przykład, kod HS może określić, czy dany produkt jest elektroniczny, tekstylny, spożywczy itp. Dla użytkownika końcowego oznacza to, że może szybko zrozumieć, jakie są podstawowe cechy produktu, na podstawie samego kodu.
### Zastosowanie kodów HS oraz cel systemu HS
Kody HS mają wiele zastosowań, w tym:
- Ułatwianie importu i eksportu towarów przez umożliwienie dokładnego określenia rodzaju i kategorii produktu.
- Statystyka handlu: Kody HS pomagają w zbieraniu danych statystycznych dotyczących handlu międzynarodowego, co jest istotne dla rządów i agencji celnych.
- Podatki i cła: Kody HS są używane do określenia stawek podatkowych i ceł, które mają zastosowanie do różnych rodzajów towarów.
Głównymi celami systemu Harmonized System (HS) są:
- **Ustandaryzowanie klasyfikacji**: Zapewnienie jednolitej i międzynarodowej klasyfikacji towarów, co ułatwia komunikację między krajami i organizacjami handlowymi.
- **Ułatwienie handlu**: Umożliwienie prostego i jednoznacznego określania rodzaju towarów, co ułatwia procesy związane z handlem międzynarodowym.
- **Statystyka handlu**: Pozyskiwanie dokładnych danych statystycznych dotyczących handlu międzynarodowego, które są używane przez rządy, agencje celne i organizacje handlowe do analizy i podejmowania decyzji.
### Hierarchiczna struktura kodów HS
Kody HS składają się z sześciu cyfr, które układają się hierarchicznie. Struktura kodów HS jest następująca:
- Pierwsze dwie cyfry: Oznaczają kategorię lub rozdział towarów. Na przykład, kategoria 85 obejmuje "Elektryczne maszyny i urządzenia".
- Pierwsze cztery cyfry: Oznaczają podkategorię towarów. Na przykład, 8516 odnosi się do "Elektrycznych golarek do golenia twarzy".
- Wszystkie sześć cyfr: Stanowią pełny kod HS dla konkretnego produktu.
Zaleta hierarchicznej struktury kodów HS polega na tym, że pozwalają one na bardziej szczegółowe lub ogólne klasyfikacje towarów, w zależności od potrzeb.
Kody HS umożliwiają agregację danych handlowych na różnych poziomach hierarchii. To oznacza, że użytkownik może zbierać dane na poziomie ogólnym, takim jak kategoria towaru, lub na poziomie szczegółowym, takim jak konkretny produkt. Dzięki temu można analizować trendy handlowe na różnych poziomach detali, co może być przydatne do podejmowania decyzji biznesowych.
#### Gdzie szukać aktualnego znaczenia kodów HS
Kody HS są stosowane międzynarodowo i przeważnie po ustanowieniu pozostają niezmienione, nie jest to jednak reguła i mogą one podlegać aktualizacjom. Ważne jest zatem śledzenie aktualizacji i nowych wersji systemu HS.
Dostęp do aktualnych kodów HS oraz ich opisów można uzyskać poprzez oficjalne strony internetowe organów międzynarodowych zajmujących się klasyfikacją towarów, takie jak Światowa Organizacja Celna (WCO) ale dane te są szeroko dostępne i łatwe do odnalezienia w internecie.
### Rola HS w handlu międzynarodowym i biznesie
Kody HS są międzynarodowym standardem, co ułatwia handel międzynarodowy i komunikację między różnymi krajami. Dla użytkownika końcowego oznacza to, że w ogólności może stosować te same kody HS niezależnie od tego, gdzie dokonuje importu lub eksportu. HS jest używany do określenia towarów na fakturach handlowych, deklaracjach celnych i innych dokumentach związanych z handlem międzynarodowym. Dzięki temu umożliwia łatwą identyfikację towarów, niezbędną podczas importu i eksportu. Pomaga również w ustalaniu stawek celnych i podatkowych, co ma wpływ na koszty handlu międzynarodowego.
W rezultacie, znaczenie kodów HS dla użytkownika końcowego polega na dostarczeniu jednoznacznej i precyzyjnej klasyfikacji towarów, co ułatwia handel, analizę danych i dokładne rozliczenia celne. Hierarchiczna struktura kodów HS zapewnia elastyczność w opisie towarów na różnych poziomach szczegółowości, co jest przydatne w różnych kontekstach biznesowych.
Kody HS są również istotne dla przemysłu logistycznego. Przewoźnicy i spedytorzy używają tych kodów do dokładnego określenia rodzaju i ilości towarów w przesyłkach. Dzięki temu możliwe jest efektywne zarządzanie ładunkami i kontrola przepływu towarów.
W biznesie znajomość i stosowanie kodów HS są kluczowe, w szczególności dla firm zajmujących się handlem międzynarodowym. Pomaga to unikać błędów w deklaracjach celnych, zmniejsza ryzyko opóźnień w dostawach i pozwala na dokładne rozliczanie się z celami i podatkami.
## Szczegółowe informacje na temat datasetu
Aby uzyskać rzeczywiste dane do celów studium przypadku, zwróciłem się z formalną prośbą do mojego pracodawcy, kuratora danych oraz właściciela danych o zgodę na ich wykorzystanie. Proces ten obejmował dokładny audyt i weryfikację bezpieczeństwa danych. Po pozytywnym wyniku audytu otrzymałem formalne pozwolenie na migrację i wykorzystanie danych w ramach niniejszej pracy. Na wstępie udostępniono mi fragment danych obejmujący lata 2020-2023. W przypadku złożenia prośby możliwe jest udostępnienie większej ilości danych, które, w przypadku niektórych krajów, historycznie sięgają aż 1990 roku. Dane te obejmują szczegółowe informacje dotyczące globalnych transakcji handlowych realizowanych drogą morską.
Dane użyte do analizy obejmują 98% globalnego handlu morskiego w latach 2020-2023, obejmując transakcje realizowane przez różnorodne kraje, regiony oraz jednostki administracyjne. Dane te są zorganizowane zgodnie z systemem kodów taryfowych Harmonized System (HS). W dalszej części pracy analizowane będą szczegółowe informacje na temat tych danych, które pozwolą na ocenę wydajności różnych paradygmatów DBMS.
### Przegląd kolumn danych
| **Nazwa kolumny** | **Znaczenie** | **Typ danych** | **Opis** | **Przykład** |
| ----------------- | ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| **YR** | Rok | Integer | Rok, w którym zrealizowano transakcję handlową. | 2020 |
| **MON** | Miesiąc | Integer | Miesiąc, w którym zrealizowano transakcję handlową. | 9 (wrzesień) |
| **REPORTER** | Raportujący | String | Kraj, region lub inna jednostka administracyjna, która raportuje dane transakcyjne. | "Poland (Customs)" |
| **COMMODITY** | Kod towaru | String | Kod towaru zgodny z systemem Harmonized System (HS). Kod może mieć różną długość w zależności od poziomu agregacji. | "20089393" |
| **PARTNER** | Partner handlowy | String | Kraj, region lub inna jednostka administracyjna, z którą zrealizowano transakcję handlową. | "Russia" |
| **VALUE_US** | Wartość w USD | Float | Wartość transakcji w dolarach amerykańskich. | 149.30 |
| **QUANTITY1** | Ilość 1 | Float | Ilość towaru w pierwszej jednostce miary. Różne produkty mogą być raportowane w różnych formach, na przykład w kilogramach lub sztukach. | 50.0 |
| **UNIT1** | Jednostka 1 | String | Jednostka miary dla pierwszej ilości (QUANTITY1). | "KG" |
| **QUANTITY2** | Ilość 2 | Float | Ilość towaru w drugiej jednostce miary. Niektóre produkty mogą być raportowane jednocześnie w różnych jednostkach, na przykład w kilogramach i sztukach. | 50.0 |
| **UNIT2** | Jednostka 2 | String | Jednostka miary dla drugiej ilości (QUANTITY2). | "KG" |
Dane te są kluczowe dla analizy handlu międzynarodowego, umożliwiając dokładne monitorowanie przepływów towarowych między krajami oraz optymalizację procesów logistycznych. W kontekście zarządzania bazami danych, analiza tych danych pozwala na ocenę wydajności różnych paradygmatów DBMS (SQL, NoSQL, NewSQL) w operacjach zapytań i agregacji, co ma bezpośrednie przełożenie na efektywność zarządzania danymi handlowymi.
# Przegląd i analiza porównawcza paradygmatów
W tym rozdziale dokładnie przeanalizuję i porównam trzy główne paradygmaty systemów zarządzania bazami danych (DBMS): SQL, NoSQL i NewSQL. Skoncentruję się na:
- **Porównaniu paradygmatów**: Przedstawię główne cechy, zalety i ograniczenia każdego z tych paradygmatów. Omówię, w jakich przypadkach i scenariuszach są one najbardziej odpowiednie.
- **Dodatkowych zagadnieniach**: Omówię dodatkowe kwestie i zagadnienia związane z każdym z paradygmatów DBMS, takie jak spójność danych, skalowalność, dostępność źródeł i inne istotne aspekty.
# Metodologia Badań
W tym rozdziale opiszę szczegółowo metodologię, którą zastosuję podczas przeprowadzania badań nad wydajnością paradygmatów DBMS. Przedstawię:
- **Plan eksperymentów**: Opiszę zaplanowane eksperymenty, w tym rodzaje testów, dane i scenariusze testowe.
- **Przygotowanie i parametryzacja testów**: Wyjaśnię, jak przygotuję środowisko testowe oraz jakie parametry będą uwzględnione w badaniach.
- **Metody analizy danych**: Omówię metodologię analizy danych oraz sposoby prezentacji wyników.
# Wyniki i Analiza
// W tym rozdziale przedstawię wyniki przeprowadzonych eksperymentów oraz dokonam ich analizy. Skupię się na:
- **Prezentacji wyników**: Przedstawię wyniki wydajności każdego z badanych paradygmatów DBMS, uwzględniając różne scenariusze i parametry eksperymentów (zapytania zbiorcze, mocno selektywne, zapytania puste).
- **Analizie porównawczej**: Dokonam analizy porównawczej wyników, zwracając uwagę na różnice w wydajności i zachowaniu systemów DBMS w różnych kontekstach.
- **Wnioskach z analizy**: Wyciągnę wnioski na podstawie analizy wyników, które pozwolą na sformułowanie obiektywnych ocen i spostrzeżeń dotyczących każdego z paradygmatów.
# Studium przypadku
// W tym rozdziale przeprowadzę studium przypadku, które będzie kontynuacją eksperymentów opisanych w poprzednich rozdziałach. Tym razem jednak zastosuję te same paradygmaty DBMS do prawdziwych danych, stworzę prosty GUI dostępny przez przeglądarkę internetową, który będzie symulować interfejs dla końcowego użytkownika. Ten interfejs będzie wyświetlać prawdziwe dane, a backend serwisu będzie korzystał z tych samych systemów DBMS i backendu, które były używane do analizy wydajności. Konkretnie:
- **Interfejs użytkownika**: Wyjaśnię, jak stworzę prosty interfejs użytkownika dostępny przez przeglądarkę internetową. Ten interfejs będzie udostępniał dane w sposób zrozumiały dla użytkowników końcowych.
- **Backend aplikacji**: Omówię, jak backend aplikacji będzie korzystać z tych samych systemów DBMS, które były używane do eksperymentów z wydajnością. Wyjaśnię, dlaczego jest to istotne.
# Wnioski i Zalecenia
W tym rozdziale dokładnie omówię wnioski płynące z przeprowadzonych badań oraz przedstawię zalecenia dla praktyków i naukowców. Skupię się na:
- **Podsumowaniu wyników**: Przedstawię główne wyniki badań i wydobędę z nich kluczowe spostrzeżenia.
- **Wnioskach**: Dokładnie przeanalizuję wyniki i przedstawię wnioski dotyczące wydajności i zastosowań każdego z badanych paradygmatów DBMS.
- **Zaleceniach**: Na podstawie wniosków, zaproponuję praktyczne zalecenia dotyczące wyboru i implementacji systemu DBMS w różnych środowiskach biznesowych i technologicznych.