fbpx

Najlepsza baza danych dla Twojego projektu

29 listopada 2020

Podczas projektowania aplikacji bardzo istotne jest, aby wybierać optymalne rozwiązania. Jeśli uważasz, że zabijanie muchy armatą nie jest dobrym pomysłem, to ten wpis powinien Cię zainteresować. Ten wpis oczywiście nie jest o technikach eksterminacji much. Dziś poruszymy temat baz danych.

Key-value database

Jest to baza danych typu NoSQL. Wszystko opieramy o budowanie par klucz – wartość. Bardzo często, gdy zobaczysz taką strukturę możesz mieć wrażenie, że wygląda ona jak obiekt w JavaScript. Wystarczy, że ustalisz unikalny klucz i przypiszesz do niego wartość.

Co ciekawe w odróżnieniu od innych typów baz danych w przypadku key-value database dane są przechowywane w pamięci RAM, a nie na dysku twardym. To właśnie między innymi dlatego są one tak szybkie.

Oczywiście takie bazy danych nie dają nam możliwości wykonywania żadnych skomplikowanych zapytań, JOIN’ów etc. Wszystko odbywa się na prostych operacjach: GET data / SET data. Idealnie nadają się na przykład do mechanizmów cache’owania.

Przykładami takich baz danych mogą być:

  • Memcache
  • Redis

Wide-column databse

Kolejny przykład bazy danych typy NoSQL. Jeśli baza key-value przestaje być dla Ciebie wystarczająca, to możesz pomyśleć o wykorzystaniu bazy typu wide column. Różnica pomiędzy key-value a wide column jest taka, że rozszerzamy ją o dodatkowy wymiar. Podobnie jak w tablicy wielowymiarowej tak i tutaj pod jednym kluczem (row key) mamy dostęp do wielu wartości (columns).

Można by pomyśleć, że to wystarcza do obsługi wielu przypadków nawet tworzenia relacji. Jednak trzeba brać pod uwagę, że w odróżnieniu od relacyjnych baz danych w tym przypadku nie mamy żadnego schematu danych (struktury kolumn). Co więcej, nie ma możliwości wykonywania żadnych JOIN’ów.

Tego typu bazy danych sprawdzają się świetnie przy przechowywaniu historii, a także, gdy większy nacisk kładziemy na zapis niż odczyt/aktualizacje danych.

Przykładami takich baz danych są:

  • Cassandra 
  • HBase

Document-oriented database

JavaScript już został wspomniany. W tym wypadku możemy dla zobrazowania zasady działania powiedzieć, że w bazie danych przechowujemy dokument, który jest miejscem do przechowywania danych w strukturze key-value (np. JSON).

Dokumenty nie są w żaden sposób ustrukturyzowane na stałe i nie podlegają żadnemu schematowi (eng. schema). Mogą być jednak zgrupowane pod postacią tak zwanych kolekcji. Są one bardzo wygodne podczas developmentu, ponieważ mogą ewoluować wraz z rozwojem aplikacji.

Idealnie nadają się do tworzenia zbiorów informacji jak np. katalogi lub przy tworzeniu rozwiązań typu Content Management (np. system blogowy).

Przykładami takich baz danych są:

  • MongoDB
  • FireStore
  • DynamoDB

Relational database

Najpewniej jest to typ bazy danych, który kojarzysz najlepiej. W swojej strukturze dzielą się na tabele, wiersze i kolumny. Struktura podlega pod ściśle określony schemat.

Relacyjne bazy danych charakteryzują się tym, że możemy przechowywać części danych w osobnych tabelach (o określonych strukturach) jednocześnie utrzymując między nimi powiązania. Oznacza to, że wiersz z tabeli A wie, że dopełniają go dane z tabeli B. Oczywiście o ile tak zostanie to zaprojektowane w naszej strukturze. Komunikacja odbywa się za pomocą języka SQL (Structured Query Language), który wspiera JOIN’y realizujące zapytania z uwzględnieniem relacji.

Idealnie nadają się do większości aplikacji. Nie sprawdzą się jednak w przypadku nieustrukturyzowanych danych.

Są one bardzo popularne, a flagowymi przykładami są:

  • MySQL
  • PostgreSQL

Graph database

W strukturze grafów dane są reprezentowane za pomocą tak zwanych node’ów. Każdy node posiada swoje własności (properties). Może być też powiązany z wieloma innymi node’ami co pozwala nam na tworzenie tak zwanych grafów. Powiązania nazywamy edge’ami.

W przypadku relacyjnych baz danych również możemy uzyskać podobny efekt poprzez tworzenie tak zwanych tabel relacyjnych (jest to tabela, która ma informacje, jakie wiersze z tabeli A pasują do wiersza z tabeli B). Jednak w przypadku grafowych baz danych wydajność takich zapytań jest o wiele wyższa.

Taka struktura idealnie sprawdza się na przykład w systemach rekomendacji lub podczas projektowania rozwiązań bankowych do wykrywania oszustw finansowych.

Przykładami takich baz danych są: 

  • Neo4j
  • Amazon Neptune

Search database

Na pierwszy rzut oka można uznać, że tego typu bazy danych działają bardzo podobnie do omawianych wcześniej document-oriented databases. Różnica polega jednak na tym, że podczas wyszukiwania analizowany jest tekst z całego dokumentu. Dodatkowo zakładany jest index na warunki wyszukania.

Takie bazy danych jak sama nazwa wskazuje nadają się idealnie do funkcjonalności wyszukiwania w dużych ilościach danych. Ich twórcy głównie skupiają się nad tworzeniem wydajnych algorytmów, które znacznie przyspieszają proces szukania odpowiednich danych.

Przykładami takich baz są: 

  • Solr
  • ElasticSearch
  • Meili Search

Multi-Model database

Bardzo ciekawe podejście do wykorzystywania baz danych w aplikacjach. Załóżmy, że tworzymy aplikacje, ale nie chcemy skupiać się na skomplikowanych strukturach. Jedyne co chcemy osiągnąć to podać JSON’a i wyciągnąć JSON’a.

Z pomocą przychodzi FaunaDB, która wymaga od nas jedynie podania informacji, w jaki sposób chcemy otrzymać dostęp do naszych danych za pomocą GraphQL. Po uploadzie naszej struktury GraphQL’owej do FaunaDB automatycznie utworzy ona kolekcje, w których możemy przechowywać nasze dane.

Moim zdaniem warto zaprzyjaźnić się z FaunaDB, jeśli nie nastawiasz się na doktoryzowanie z baz danych. Idealnym podsumowaniem będzie jeden z ich sloganów “Think data, not database operations”.

Podsumowanie

Sporo informacji za nami. Daj znać w komentarzu co myślisz o tym wpisie. Możesz też dorzucić dodatkowe informacje ze swojej strony, ponieważ na 100% nie wyczerpałem tematu w tak krótkim wpisie.

Na koniec skrzynia skarbów – newsletter. Znajdziesz w nim link do zapisu na darmowe 45-minutowe konsultacje online. Nie ma go w innym miejscu, tylko w wiadomościach ode mnie. A razem z nim dostaniesz w mailach czyste złoto, czyli wiedzę. Zero spamu.

Zapisz się na newsletter

.

Tu też znajdziesz wiedzę za darmo

Po rozwiązania zajrzyj również na octocode’owy kanał na YouTube’ie. Będzie Twoją latarnią morską w programowaniu.

Lubisz słuchać rozmów z ciekawymi ludźmi z branży? Zapraszam na Prograduchy – podcast na luzie, a jednocześnie merytoryczny. Nie odpłyniesz.

X