window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Który DB wybrać dla konkretnego typu danych w projekcie oprogramowania - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2020-12-15
Software Development

Który DB wybrać dla określonego typu danych w projekcie oprogramowania?

Agata Werszler

Tworzenie nowego projektu obejmuje wybór odpowiedniej bazy danych do przechowywania danych. Wielu programistów, których znam, od samego początku domyślnie wybiera relacyjną bazę danych. Ale czy jest to najlepsza decyzja? Oczywiście, zależy to od wielu czynników. W tym artykule chciałbym przedstawić inne rodzaje baz danych, aby ułatwić wybór i pomóc w przygotowaniu się do przyszłych przedsięwzięć.

Typ bazy danych nie jest jedynym tematem do rozważenia. Istnieje wiele innych kwestii, o których należy pomyśleć, np. ilu aktywnych użytkowników może mieć aplikacja? Czy wszędzie potrzebna jest silna spójność? Czy ewentualna spójność będzie wystarczająca w niektórych przypadkach? Jest tak wiele pytań, na które nie ma jednoznacznych odpowiedzi, ponieważ "im bardziej się w to zagłębiasz, tym bardziej staje się to skomplikowane". Należy więc pamiętać, że ten artykuł koncentruje się wyłącznie na typach baz danych.

Weź filiżankę kawy i ciesz się tą lekturą.

Ogólna klasyfikacja baz danych

Na początku warto wiedzieć, że istnieją dwa główne typy baz danych: relacyjne (SQL) i nierelacyjne (NoSQL).

  • Bazy danych SQL mają strukturę relacyjną, co oznacza przechowywanie danych w tabelach i utrzymywanie relacji między nimi.
  • Bazy danych NoSQL (nie tylko SQL), w przeciwieństwie do baz relacyjnych, nie są dobrze ustrukturyzowane, a tym samym pozwalają na większą elastyczność i elastyczność.

Istnieje jeszcze jeden typ poza dwoma wymienionymi powyżej, a mianowicie baza danych w pamięci. Nie można jej sklasyfikować ani jako relacyjnej, ani nierelacyjnej, ponieważ odnosi się do miejsca fizycznego przechowywania danych. Każda baza danych może być przechowywana na dysku lub w pamięci.

Rodzaje baz danych

1. Relacyjny

Moim zdaniem jest to najpopularniejszy typ bazy danych. Dobrze sprawdza się w przypadku danych strukturalnych, gdzie chcemy zachować relacje między rekordami. Struktura bazy danych jest opisana w schemacie.

Głównymi zaletami są transakcje (pomagają zapewnić integralność danych i są zgodne z zasadami ACID) oraz możliwość obsługi wielu złożonych zapytań.

Kiedy ją wybrać?

Jest to przydatne do przechowywania danych, które nie zmieniają się strukturalnie zbyt często i które muszą być przechowywane na stałe:

  • CRM (zarządzanie relacjami z klientami),
  • Zarządzanie zamówieniami,
  • ERP (Przedsiębiorstwo Planowanie zasobów),
  • magazynowanie danych lub zarządzanie zapasami,
  • księgowość lub finanse.

Przykłady:

Amazon Aurora, Microsoft Azure SQL Database, PostgreSQL, MySQL.

Relacyjne bazy danych są niewystarczające dla wielu nowych aplikacji i trzeba mieć więcej niż jedną bazę danych. W następnej części artykułu skupię się na nierelacyjnych bazach danych.

2. Klucz-wartość

Przechowuje każdą wartość danych z unikalnym kluczem. Oznacza to, że dostęp do danych uzyskuje się za pomocą pojedynczego klucza, podobnie jak w przypadku mapy hash. W przeciwieństwie do relacyjnych baz danych, nie wymusza schematu ani relacji między rekordami. Większość z tych baz danych zazwyczaj nie obsługuje operacji aktualizacji. Aby zmodyfikować dane, należy nadpisać cały istniejący zestaw.

Kiedy ją wybrać?

Jest to przydatne w przypadku danych, które mają być szybko odczytywane/zapisywane (ale nie aktualizowane zbyt często):

  • licytacja w czasie rzeczywistym, obsługa reklam,
  • buforowanie danych,
  • zarządzanie sesjami,
  • wózki sklepowe,
  • preferencje klientów lub zarządzanie profilami.

Przykłady:

Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.

3. Dokument

Przechowuje kolekcje dokumentów. Każdy dokument zawiera pola z danymi, które mogą być prostymi wartościami lub złożonymi elementami, takimi jak listy lub kolekcje podrzędne. Ważne jest, aby wiedzieć, że każdy dokument może mieć inną strukturę, nawet jeśli reprezentuje to samo (każdy dokument jest unikalny i ewoluuje w czasie). Na przykład, pierwszy dokument klienta zawiera mniej informacji niż drugi:

{
 "FirstName": "John",
 "LastName": "Fake",
 "Motocykle:" [
  {
    "Model": "BMW",
    "Rok": 2020
  }
 ]
}
{
 "FirstName": "Alex",
 "LastName": "Nolastname",
 "Age": 15,
 "Address": {
    "Country": "Polska",
    "Miasto": "Gdzieś"
  },
 "Motocykle:" [
  {
    "Model": "BMW",
    "Rok": 2020
  }
 ]
}

Kiedy ją wybrać?

Jest to przydatne w przypadku danych, które wymagają elastycznego schematu do szybkiego przetwarzania:

  • produkt katalogi,
  • CMS (system zarządzania treścią),
  • profile użytkowników i personalizacja.

Przykłady:

Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.

4. Wykres

Wykorzystuje strukturę grafu i składa się z dwóch elementów: węzłów i krawędzi. Węzły są analogiczne do wierszy tabeli lub dokumentów JSON. Krawędzie to relacje między węzłami - są równie ważne jak węzły. Oba elementy mogą mieć właściwości. Co więcej, krawędzie mogą mieć zdefiniowany kierunek relacji.

Kiedy ją wybrać?

Jest to przydatne, gdy dane są podobne do wykresu, tj. relacje między elementami danych są dynamiczne i zmieniają się w czasie. Co więcej, jest to dobry wybór, gdy dane biznesowe lub techniczne zespół muszą zrozumieć relacje w swoich danych. Niektóre znaczące przykłady obejmują:

  • schematy organizacyjne,
  • wykrywanie oszustw,
  • wykresy społecznościowe/sieci,
  • silniki rekomendacji,
  • wykresy wiedzy.

Przykłady:

Amazon Neptune, Neo4j, ArangoDB, Titan.

5. Szeregi czasowe

Przechowuje dane uporządkowane według czasu. Zazwyczaj gromadzi ogromne ilości danych w czasie rzeczywistym. Jest najczęściej używany do zapisywania danych, choć ich aktualizacja jest bardzo rzadka. Ogólnie rzecz biorąc, znacznik czasu jest używany jako klucz podstawowy i/lub do sortowania danych. Niektóre bazy danych umożliwiają definiowanie znaczników jako dodatkowych informacji, takich jak pochodzenie lub typ danych.

Kiedy ją wybrać?

Przydatne jest przechowywanie niewielkich ilości danych dołączanych sekwencyjnie w porządku chronologicznym, na przykład w:

  • DevOps,
  • monitorowanie aplikacji,
  • monitorowanie i telemetria zdarzeń,
  • IoT aplikacje (takie jak zbieranie danych z czujników urządzeń).

Przykłady:

Azure Time Series Insights, Amazon Timestream, InfluxDB.

6. Księga

Zapewnia niezmienny, przejrzysty i kryptograficznie weryfikowalny dziennik transakcji, którego właścicielem jest centralny organ. - Przegląd QLDB firmy Amazon

Wyjaśnijmy pokrótce każde słowo kluczowe w powyższym cytacie:

  • immutable - oznacza, że rekord utworzony w tej bazie danych nie może zostać usunięty, zmodyfikowany ani nawet nadpisany,
  • przejrzystość - śledzi i przechowuje zapis sekwencji każdej zmiany w danych,
  • weryfikowalne kryptograficznie - dane utworzone w tej bazie danych są weryfikowane za pomocą kryptograficznych technik mieszania, podobnych do łańcuchów bloków (przy użyciu funkcji skrótu SHA-256).

Kiedy ją wybrać?

Przydatne jest przechowywanie dokładnej historii, np. rejestrowanie sekwencyjnego wprowadzania każdej zmiany danych, jak w:

  • finanse (historia transakcji debetowych lub kredytowych),
  • produkcja (śledzenie, skąd pochodzą części),
  • ubezpieczenie,
  • Kadry i płace,
  • sprzedaż detaliczna,
  • łańcuchy dostaw.

Przykłady:

Amazon QLDB

Wnioski

Nie ma prostej odpowiedzi na pytanie postawione w tytule tego artykułu. Jedynym sposobem na wybranie odpowiedniej bazy danych jest dowiedzenie się więcej o swoich danych. Odpowiedź na pytanie: "Jakiego rodzaju dane generuje Twoja aplikacja?", a będziesz w stanie dokonać właściwych wyborów.

Ponadto należy bardzo dobrze znać wymagania biznesowe i domenę aplikacji. Musisz wiedzieć, w jaki sposób będziesz korzystać z danych, jakie zapytania będziesz wysyłać do bazy danych, ile razy będziesz przechowywać, odczytywać, aktualizować lub usuwać dane. Wszystkie te rzeczy mają znaczenie, ale nie wszyscy programiści zwracają wystarczającą uwagę na te obszary.

Pomyśl o swoich danych w aplikacji, którą tworzysz, aby ulepszyć / stworzyć lepsze oprogramowanie. Ogólnie rzecz biorąc, mam nadzieję, że poznasz swoje dane na tyle dobrze, aby przechowywać je w miejscu, w którym będą szczęśliwe.

Czytaj więcej:

Kilka sztuczek przyspieszających działanie aplikacji JavaScript

Sposoby na zwiększenie wydajności Railsów

Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

    pl_PLPolish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek pl_PLPolish