Każde statystyki, informacje trzeba zapisać, aby po restarcie nie zostały utracone. Poruszę tutaj temat najczęściej wybieranych rodzajów zapisów i podsumuje co warto wybrać, a co warto odrzucić.

Poruszane będą najczęściej wybierane zapisy, nie znajdziesz tu wszystkich typów.

Zapis flat (YAML, JSON oraz inne)

Na pewno spotkałeś się kiedyś z podejściem zapisywania różnych danych do lokalnych plików. Jest to podejście najlepsze dla przeciętnego zjadacza chleba, łatwa możliwość zarządzania danymi, czytelny, schludny zapis, szybko dostępny.

Ale czy jest on dobrym rozwiązaniem? To zależy. Ilość, waga plików, dysk wpływa na to, czy wczytują się one szybciej czy wolniej. Zapis lokalny flat będzie dobrym rozwiązaniem do zapisu pojedyńczych mniejszych danych, na przykład lokalizacja spawnu.

Gdy zapis lokalny ma przechowywać użytkowników, nie jest to już dobre podejście. A dlaczego?

  1. Przede wszystkim gdy pliki są zapisywane lokalnie, są narażone na łatwiejsze wykradnięcie.
  2. W przypadku jakichkolwiek problemów z maszyną narażamy się na łatwiejszą utratę plików.
  3. Brak możliwości synchronizacji danych między serwerami.
  4. Im większa ilość plików tym dłużej trwa ich wczytywanie, podobnie z zapisem.

Informacje dla developerów: Gdy decydujemy się na zapis flat, pamiętaj aby rozbijać dane na osobne pliki, dużo mniejszych plików wczytuje i zapisuje się szybciej niż jeden duży.

Podsumowując: Zapis flat jest odpowiedni gdy chcemy zapisać pojedyńcze, mniejsze objekty, wtedy możemy a nawet zalecam użycie zapisu flat, ze względu na swoją prostotę.

H2

Relacyjna baza danych oparta na javie. Jest to szybkie i wygodne rozwiązanie dla użytkowników. Nie trzeba posiadać większych umiejętności aby utworzyć taką bazę. Jak każda baza, ma swoje plusy i minusy.

Plusy:

  1. Lekkość: H2 jest bardzo lekka i ma niskie wymagania systemowe, co czyni ją idealną do zastosowań embedded.
  2. Wydajność: Jest zoptymalizowana pod kątem szybkości, co sprawia, że operacje na danych są szybkie.
  3. Łatwość konfiguracji: Prosta instalacja i konfiguracja, szczególnie w środowiskach deweloperskich i testowych.
  4. Tryb embedded i serwerowy: Może działać jako baza danych embedded oraz jako serwer, co daje elastyczność w wyborze architektury aplikacji.
  5. Tryb in-memory: Możliwość działania w trybie pamięci, co jest przydatne w testach jednostkowych i podczas prototypowania.

Minusy:

  1. Brak zaawansowanych funkcji: W porównaniu z większymi systemami RDBMS, takimi jak PostgreSQL czy MySQL, H2 może brakować niektórych zaawansowanych funkcji i mechanizmów.
  2. Pamięć RAM: Praca w trybie in-memory wiąże się z używaniem pamięci RAM, co może być problematyczne przy dużych ilościach danych.
  3. Bezpieczeństwo: H2 nie oferuje tak rozbudowanych mechanizmów bezpieczeństwa jak większe systemy RDBMS, co może być problemem w bardziej wymagających zastosowaniach produkcyjnych.

MariaDB (MySQL)

MariaDB to fork najpopularniejszej bazy danych MySQL. Jest ona szybsza niż jej poprzednik mysql. Dodatkowo posiada bardziej rozbudowane zapytania, co pozwala developerom łatwiej operować nad zapytaniami.

Jest to baza typu server, więc szanse na utratę danych są wiele mniejsze niż u poprzedników.

Tak naprawdę MariaDB oraz MySQL są dobrym wyborem, natomiast ja zalecam używanie MariaDB ze względu na więcej funkcji. Baza danych ta charakteryzuje się bardzo wysoką wydajnością, co będzie dobrym wyborem dla większości użytkowników. Dodatkowo wsparcie community jest na wysokim poziomie, co pozwala tej bazie ciągle się rozwijać.

Plusy:

  1. Wysoka wydajność: Liczne optymalizacje i ulepszenia w porównaniu do MySQL.
  2. Dodatkowe funkcje: Nowe silniki magazynujące, ulepszone indeksowanie i inne zaawansowane funkcje.
  3. Bezpieczeństwo: Zaawansowane mechanizmy zabezpieczające dane.
  4. Wsparcie społeczności: Aktywna społeczność, która regularnie dostarcza aktualizacje i poprawki.

Minusy:

  1. Potencjalne różnice z MySQL: Mimo dużej zgodności, istnieją pewne różnice w implementacji, które mogą wymagać dostosowań przy migracji.
  2. Nieco dłuższy czas wymagany na zapis danych.
  3. Baza jest relacyjna, w przypadku braku tworzenia relacji między tabelami zalecam użycie poniższej bazy.

MongoDB

MongoDB to nierelacyjna (NoSQL) baza danych oparta na dokumentach, która jest popularna ze względu na swoją elastyczność, skalowalność i wydajność.

Jaka jest różnica między mysql? Różnic jest wiele, a tu 2 główne:

  • MySQL to baza danych typu SQL, zarządza się nią poprzez tworzenie zapytań, natomiast MongoDB to baza danych NoSQL, aktualizacje, pobieranie danych odbywa się przez dokumenty.
  • MySQL przechowuje dane w tabelach, natomiast MongoDB w dokumentach, które są przechowywane w formie JSON.

Plusy:

  1. Wysoka dostępność i odporność na awarie dzięki replikacji danych.
  2. Wydajność: Optymalizacje, takie jak indeksowanie, zapewniają szybkie operacje na danych.
  3. Prostota w obsłudze: Każdy użytkownik poradzi sobie bez problemu.
  4. Narzędzia analityczne: Baza posiada aplikację do zarządzania o nazwie Mongo Compass.

Minusy:

  1. Zużycie pamięci: MongoDB może zużywać więcej pamięci RAM w porównaniu do niektórych relacyjnych baz danych.

MySQL czy MongoDB

Baza danychWydajność
MySQLSzybsze przetwarzanie zapytań i otrzymywanie danych
MongoDBSzybszy zapis wielu danych

Tak w skrócie, obie bazy są świetnym wyborem, są bardzo wydajne, a różnice między nimi są niezauważalne dla przeciętnego Kowalskiego.