Relationelle og ikke-relationelle databaser

Baggrundshistorie: Tilbage i 2016 studerede jeg datalogi på University at Albany, og jeg skulle tage et introduktionskursus i databaser.

I kurset lærte jeg to ting:

Relationelle databaser og ikke-relationelle databaser, men jeg lærte aldrig rigtig forskellen mellem de to, så jeg ønskede at genoplive min nysgerrighed med databaser og forskellene mellem de to.

  • Defineret af E.F Codd i 1970 er en relationel database en digital database, der er baseret på den relationelle datamodel. Dataene gemmes i tabeller, der indeholder rækker (som repræsenterer en post) og kolonner(som gemmer og sorterer en bestemt type information). Relationer etableres gennem primær- og fremmednøgler.

Eksempel på en relationel databasemodel

Sprog: SQL(Structured Query Language), MySQL, PostgreSQL, sqlite3

Fordele:

  • Kan håndtere mange komplekse forespørgsler, databasetransaktioner og rutinemæssig analyse af data.
  • ACID(Atomity, Consistency, Isolation, Durability): Sæt af egenskaber, der sikrer pålidelige databasetransaktioner.

Ulemper:

  • Kan ikke lagre komplekse eller meget store billeder, tal, designs og multimedieprodukter
  • Kan blive meget dyrt med vedligeholdelse og nye servere

Godt! Men hvad nu, hvis vores datasæt er for store eller ustrukturerede?

Non-relationel database eller NoSQL

Hvad er en ikke-relationel database?

  • Non-relationelle databaser eksisterede i slutningen af 1960’erne, men udtrykket blev først brugt i 1998 af Carlo Strozzi, der stod i spidsen for udviklingen af NoSQL.
  • “En NoSQL-database (som oprindeligt henviser til “non SQL” eller “non relationel”) giver en mekanisme til lagring og hentning af data, der er modelleret på andre måder end de tabelrelationer, der anvendes i relationelle databaser.” – Wikipedia

Typer af NoSQL-databaser:

Column Store: Bruger begrebet keyspace, som indeholder alle kolonnefamilier, der indeholder rækker og kolonner, til at lagre og organisere data.

Hver række indeholder en familie af kolonner

Database: Apache HBase, Cassandra

Nøgle-værdi-lager: Apache HBase, Cassandra

Nøgle-værdi-lager: Bruger et associativt array(map eller dictionary) som deres grundlæggende datamodel. Dataene repræsenteres som en samling af nøgle-værdipar, og en nøgle vil højst optræde én gang i samlingen. Du kan gemme en værdi, f.eks. et heltal, en streng, en JSON-struktur eller et array, sammen med en nøgle, der bruges til at henvise til denne værdi.

Hver række har sit eget ID og værdier

Database: Redis, Amazon DynamoDB

Database: Redis, Amazon DynamoDB

Graph: Er en database, der udnytter grafstrukturer til at repræsentere og lagre data. Dette giver brugerne mulighed for hurtigt at bevæge sig rundt blandt alle de forbundne værdier og finde indsigt i relationerne.

Alle film Kevin Bacon medvirker i

Database: neo4J, OrientDB, Titan

Dokumentorienteret database: Database: Neo4J, OrientDB, Titan

Dokumentorienteret database: En dokumentorienteret database eller dokumentlager er et computerprogram, der er designet til at lagre, hente og administrere dokumentorienteret information, også kendt som semistrukturerede data.

Database: En dokumentorienteret database, eller dokumentlager, er et computerprogram, der er designet til at lagre, hente og administrere dokumentorienteret information, også kendt som semistrukturerede data: MongoDB, Couchbase

Fordele:

  • Store mængder af strukturerede, halvstrukturerede og ustrukturerede data
  • Objektorienteret programmering, der er nem at bruge og fleksibel (MongoDB er grundlæggende skrevet i javascript)
  • Effektiv, scale-out arkitektur i stedet for dyr, monolitisk arkitektur

Nedlemmer: MongoDB, Couchbase

Objektorienteret programmering, der er nem at bruge og fleksibel (MongoDB er grundlæggende skrevet i javascript)

  • Effektiv, scale-out arkitektur i stedet for dyr, monolitisk arkitektur
  • Ulemper:

    • Mindre support, da NoSQL-databaser normalt er open-source
    • Administration: NoSQL-databaser kræver tekniske færdigheder for at kunne installeres og vedligeholdes.
    • Mindre modenhed. NoSQL-databaser vokser stadig, og mange funktioner er stadig ved at blive implementeret.

    Hvilken skal man bruge?

    Firksomheder anvender en blanding af både traditionelle og ikke-relationelle databaser for at opfylde deres forretningskrav og behov.

    Relationel database:

    Traditionelle relationelle databaser er rigtig gode til at holde dine datatransaktioner sikre og foretage komplekse forespørgsler for at indhente oplysninger. Virksomheder, der allerede er strukturerede og ikke oplever massiv vækst, vil højst sandsynligt holde sig til traditionelle databaser.

    Non-relationelle databaser:

    Er gode til at lagre store datamængder med lidt struktur. Virksomheder, der vokser i et hurtigt tempo, som f.eks. nystartede virksomheder, bruger flere ikke-relationelle databaser på grund af deres skalerbarhed og fleksibilitet. Sammen med skyen kan ikke-relationelle databaser også spare virksomheder mange penge.

    Data Fun Facts:

    1. Data vokser hurtigere end nogensinde før, og i år 2020 vil der blive skabt omkring 1,7 megabyte ny information hvert sekund for hvert menneske på planeten.
    2. Til den tid vil vores akkumulerede digitale univers af data vokse fra 4,4 zettabytes i dag til omkring 44 zettabytes eller 44 billioner gigabyte.
    3. Vi ser en massiv vækst i video- og fotodata, hvor der hvert minut uploades op til 300 timers video alene til YouTube.
    4. I år vil der blive leveret over 1,4 milliarder smartphones – alle fyldt med sensorer, der er i stand til at indsamle alle former for data, for ikke at tale om de data, som brugerne selv skaber.
    5. I løbet af fem år vil der være over 50 milliarder intelligente tilsluttede enheder i verden, der alle er udviklet til at indsamle, analysere og dele data.

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret.