Tärningens DB

Databasens bakgrund

Vad man vet användes orden "data base" tillsammans för första gången i november 1963, i namnet på ett föredrag: "Development and Management of a Computer-centered Data Base". Det sammansatta ordet "database" började snart användas framförallt i Europa. Det liknande ordet "databank" användes av bland annat Washington Post redan 1966. Men efterhand började alla att använda ordet databas.

Det är en vanlig missuppfattning att data och databaser inte fanns innan datorernas intåg. Databaser har funnits sedan mycket lång tid tillbaka. ända sedan man började samla in data och ordna den systematiskt, exempelvis i form av arkiv och kartotek. I och med att datorerna kom fick man möjlighet att behandla data maskinellt automatiskt, även kallat administrativ data behandling (ADB).

När datorer började användas inom affärsvärlden på 1960-talet blev det viktigt att kunna spara data på ett säkert sätt. En pionjär var Charles Bachman, som ville ersätta långsam seriell lagring på hålkort eller magnetband med något bättre. Ungefär samtidigt uppstod två olika modeller: den hierarkiska modellen och nätverksmodellen.

De första databaserna var hierarkiska där data lagras i en struktur anpassad till dåtidens linjära lagringsmedia som magnetband. Data var lagrad i en trädstruktur som gjorde den snabb att hitta men svår att manipulera. North American Rockwell utvecklade den hierarkiska modellen, vilken IBM senare övertog i sin IMS-databas som bland annat användes i Apolloprogrammet. Hierarkiska databaser används fortfarande i tillämpningar som kräver snabb access likt banktillämpningar och telekomsystem.

CODASYL utvecklade nätverksmodellen, som var mest lik Bachman's idéer, med poster som lagrar pekare till andra poster i en trädstruktur. Den användes under 1970-talet, tex i DEC VAX DBMS, men ersattes på 1980-talet ofta av relationsdatabasen (RDBMS), som erbjuder samma eller bättre funktioner med ett deklarativt gränssnitt på en högre nivå med ett generellt frågespråk (SQL). Sedan dess har relationsdatabasen blivit den vanligaste typen av databas.

Mer: RDBMS

Vid sidan av relationsdatabasen har det funnits ett (ökande) behov av andra lagringsmodeller. Den klassiska nätverksmodellen, även kallad nätverksdatabas, har utvecklats till grafdatabaser som passar bra för lagring av komplexa relationer. De har utvecklats vidare till vektordatabaser som idag används för att lagra vektorer för Generativ AI.

När objektorientering blev standard inom programutveckling på 1990-talet uppstod ett behov av att lagra objekt, med möjlighet att anropa funktioner direkt på datat, och den objektorienterade databasen skapades. De fick ett nytt uppsving på 2000-talet när objektorienterade open source databaser blev tillgängliga.

När Internet slog genom i stor skala på 2000-talet uppstod ett behov av att lagra så kallad ostrukturerad data från webbloggar och liknande. Datat är förstås inte helt ostrukturerat, men passar ofta inte in i relationsdatabasens fasta strukturer, och dessutom kan dess struktur ofta ändras över tiden. Det innebar att dokument-orienterade databaser, key-value stores, och wide-value stores började användas.

Inom maskininlärning (machine learning) finns det behov att spara data som vektorer, vilket är matematiska representioner av data med många dimensioner, där varje dimension korresponderar med en viss egenskap hos datat. Man kan lagra alla typer av data, inklusive ord, dokument, bilder, ljud och filmer som vektorer. Dessa har nyligen fått nytt intresse eftersom de används inom Generativ AI.

Dessa databastyper kallas ofta för NoSQL-databaser eftersom SQL normalt inte används som frågespråk.

Typer av databaser

Kort om Relationsdatabasen

Relationsdatabasen lagrar data i tabeller, som har ett strukturerat format med rader och kolumner. Varje rad representerar en logisk entitet, och varje kolumn representerar dess logiska attribut. Relationen mellan olika entiteter hanteras normalt med hjälp av primära och främmande nycklar i tabellerna. SQL (Structured Query Language) används för frågor och manipulering.

Relationsdatabasens fördelar:

  • Den strukturerade lagringen är enkel att förstå (om den är välgjord).
  • Man kan lita på datat eftersom ACID (Atomicity, Consistency, Isolation, Durability) tillämpas.
  • SQL är ett standardiserat språk med stor utbredning, och kan användas av många människor och system.

    Relationsdatabasens nackdelar:

  • Varje tabell har ett fördefinierat schema, som måste följas vid all datalagring. Det är inte optimalt om datat är ostrukturerat.
  • Kan vara svårt att skala ut på många servrar (horisontell skalning).

    Relationsdatabasens användningsfall:

  • Många användningsfall passar relationsdatabasen.
  • Passar situationer med många små transaktioner som skall sparas snabbt med hög tillförlitlighet och säkerhet.
  • Välanvänd inom handel, finans, sjukvård tack vare dess snabbhet och pålitlighet.

    Relationsdatabaser:

  • Exempel på relationsdatabaser är PostgreSQL, MySQL, Oracle, Microsoft SQL Server, IBM DB/2.

    Kort om Nätverksdatabasen

    Nätverksdatabasen lagrar data som noder och hörn (edges) i nätverkslika strukturer med komplexa relationer. De tillåter bland annat varierande många-till-många relationer mellan de logiska entiterna, ungefär som ett mänskligt kontaktnätverk.

    Nätverksdatabasens fördelar:

  • Kan enkelt lagra komplexa relationer mellan data.
  • Passar data med många-till-många relationer som sociala nätverk och system för flygbokningar.

    Nätverksdatabasens nackdelar:

  • Kan vara svåra att designa optimalt.
  • Kan vara svåra att förstå strukturen och att underhålla över tid.
  • Kan ge långa svarstider vid frågor.

    Nätverksdatabasens användningsfall:

  • Passar bland annat sociala nätverk och system för flygbokningar.

    Nätverksdatabaser:

  • Exempel på nätverksdatabaser är Integrated Data Store (IDS), Integrated Definition Language (IDL).

    Kort om Grafdatabasen

    Grafdatabasen lagrar data som noder och hörn (edges), och är designad för att hantera komplexa relationer. De passar utmärkt till situationer där relationen mellan datat är minst lika viktigt som själva datat. SQL kan normalt inte användas som frågespråk.

    Grafdatabasens fördelar:

  • Passar situationer där relationen mellan datat är viktig.
  • Fungerar utmärkt för att hitta mönster i relationer mellan data.

    Grafdatabasens nackdelar:

  • Dålig prestanda för frågor kring icke-relationer.
  • Allmän kompetensbrist (learning curve)
  • Passar dåligt för data med enkel struktur.

    Grafdatabasens användningsfall:

  • Passar analys av relationer mellan användare på sociala nätverk.
  • Förslag på individuella rekommendationer på sociala nätverk, tex "vän-till-vän" frågor.
  • Produktrekommendationer och kundanalyser inom e-handel.
  • Inom logistik, för optimering av komplexa rutter och spårning av leveranser.

    Grafdatabaser:

  • Exempel på grafdatabaser är Neo4j, OrientDB, ArangoDB.

    Kort om Objektdatabasen

    Objektdatabasen lagrar data som objekt, av samma typ som inom objektorienterad programmering. Ett objekt består av två element, data (eller attribut) och metoder (funktioner som definierar vilka operationer som kan användas på datat). Objekt kan grupperas i klasser, och kan ärva (inherit) egenskaper från andra klasser, vilket gör det möjligt att återanvända programkod

    Objektdatabasens fördelar:

  • Can lagra komplexa data och komplexa relationer mellan data.

    Objektdatabasens nackdelar:

  • Det finns inget standardiserat språk för frågot eller manipulering, vilket gör att all hantering måste programmeras.
  • Ovanliga jämfört med andra databastyper, vilket leder till mindre kompetens och färre verktyg.

    Objektdatabasens användningsfall:

  • System där objektorienterad programutveckling används, bland annat inom programspråk som C++, C#, Java och liknande.
  • Ofta använt inom domäner som finans och hälsovård.

    Objektdatabaser:

  • Exempel på objektdatabaser är Versant Object Database, ZODB, db4o.

    Kort om Dokumentdatabasen

    Dokumentdatabasen lagrar data utan schema, dvs utan krav på fast struktur. Varje dokument kan ha sin egen struktur och sparas typiskt i format som JSON eller XML. Med en extremt flexibel strukturen kan allt sparas, men samtidigt måste man förstå den unika strukturen varje gång man läser datat.

    Dokumentdatabasens fördelar:

  • Flexibel och dynamisk, klarar av att hantera så kallad ostrukturerad och halvstrukturerad data.
  • Kräver inget schema, klarar av att hantera dokument med nytt och ändrat format.
  • Kan hantera enkla relationer, genom inbäddade dokument eller referenser.

    Dokumentdatabasens nackdelar:

  • Begränsad effektivitet för data med komplexa relationer.
  • Avsaknad av schema innebär att dokumentets struktur måste förstås vid varje datahämtning.
  • Avsaknad av schema kan medföra svårigheter att underhålla dataintegritet och konsistens.
  • Brist på standardisering mellan olika dokumentdatabaser.

    Dokumentdatabasens användningsfall:

  • Passar för att hantering av innehåll anpassat för Internet, såsom produktkataloger och webbloggar.
  • Passar för hantering och bearbetning av användargenerat innehåll och spårning av användaraktivitet på sociala medier.

    Dokumentdatabaser:

  • Exempel på dokumentdatabaser är MongoDB, CouchDB.

    Kort om Key-value Stores

    Key-value Stores lagrar data som enkla par med nyckel och värde. De erbjuder snabb och effektiv datahämtning baserad på unika nycklar, och används ofta för caching och sessionshantering på webbplatser och dataspel.

    Key-value Stores fördelar:

  • Erbjuder en anpassningsbar och snabb lösning för specifika användningsfall med unika nycklar där snabb datahämtning är avgörande.
  • Passar applikationer som kräver snabb lagring och läsning av data med låg latens.
  • Kan lagra många olika typer av data.

    Key-value Stores nackdelar:

  • Primärt konstruerade för att hantera data med unika nycklar, och ineffektivt vid mer avancerade frågor.
  • Saknar stöd för mer avancerade datamodeller med relationer, schema eller datavalidering.
  • Saknar stöd för dataintegritet, såsom referentiell integritet eller datakonsistens. All dataintegritet och konsistens måste skötas av applikationen.

    Key-value Stores användningsfall:

  • Passar datahantering inom gaming, där de används för caching, sessionshantering och ledarlistor (leader boards). De lagrar bla användarprofiler, spelnivåer och liknande spelrelaterad data för respektive spelare.
  • Används för tex realtidsauktioner och användaranpassad marknadsföring på webbplatser.

    Key-value Stores:

  • Exempel på Key-value Stores är Redis, Amazon DynamoDB, Riak.

    Kort om Wide-value Stores

    Wide-value Stores lagrar data i tabeller, rader och dynamiska kolumner, vilket ger dem stor skalbarhet och effektivietet för hantering av stora datamängder. De dynamiska kolumnerna ger dem flexibilitet för att kunna hantera förändringar i datats strukturer. De är även konstruerade för att stora mängder data som distribueras över många servrar.

    Wide-value Stores fördelar:

  • Hög skalbarhet och prestanda för både lagring och läsning.
  • Flexibilitet att kunna hantera både strukturerad och halvstrukturerad data, tack vare sina dynamiska kolumner.
  • Erbjuder hög tillgänglighet och feltolerans.

    Wide-value Stores nackdelar:

  • Komplex datamodellering och frågestruktur pga avsaknad av schema.
  • Saknar inbyggt stöd för komplexa transaktioner som omfattar flera rader eller tabeller.
  • Kan kräva omfattande konfigurering och underhåll för att ge hög prestanda över tiden.

    Wide-value Stores användningsfall:

  • Passar för att analysera stora datamängder inom vetenskaplig analys och fysiska simuleringar.
  • Kan användas för användaranpassad marknadsföring på webbplatser.
  • Används för hantering av sensordata från apparater, även kallad Internet of Things (IoT).
  • Kan användas för tidsserier som loggar och mätdata, tack vare sin förmåga att effektivt lagra och läsa data inom ett visst område.

    Wide-value Stores:

  • Exempel på Wide-value Stores är Apache Cassandra, Google BigTable.

    Kort om Vektordatabasen

    Vektordatabasen lagrar data i vektorer, vilket är matematiska representioner av data med många dimensioner, där varje dimension korresponderar med en viss egenskap hos datat. Man kan lagra alla typer av data, inklusive ord, dokument, bilder, ljud och filmer som vektorer.

    Vektordatabasens fördelar:

  • Ger mycket hög effektivitet inom vektorbearbetning.
  • Kan hantera alla typer av data.

    Vektordatabasens nackdelar:

  • Specialiserad på data för maskininlärning eller generativ AI, ineffektiv på enklare datastrukturer.

    Vektordatabasens användningsfall:

  • Maskininlärning.
  • Generativ AI.

    Vektordatabaser:

  • Exempel på vektordatabaser är Pinecone, Weaviate, Chroma, Milvus.

    Kort om den Hierarkiska databasen

    Den hierarkiska databasen lagrar data i en hierarkisk trädliknande struktur med förälder-barn (parent-child) relationer. Varje post har en enda förälder och kan ha flera barn. Passar data med klar hierarisk karaktär som organisationsschema eller filsystem. De var mer vanliga förr, men de används fortfarande i mainframes och inom vissa branscher.

    Den hierarkiska databasens fördelar:

  • Enkel att använda.
  • Utmärkt för data med rena hierarkier som organisationsschema eller filsystem.
  • Effektiv datahämtning.

    Den hierarkiska databasens nackdelar:

  • Begränsad flexibilitet för hantering av komplexa relationer
  • Generellt minskande användning, och begränsad support jämfört med andra databastyper.

    Den hierarkiska databasens användningsfall:

  • Passar spårning av leveranser inom logistik, och hantering av finansiella konton inom finans.

    Hierarkiska databaser:

  • Exempel på hierarkiska databaser är IBM Information Management System (IMS), Windows Registry.

    Jämförelse mellan databastyper

    Databastyp Datakomplexitet Skalbarhet Flexibilitet Frågekomplexitet Användningsfall
    Relationsdatabaser (SQL) Strukturerat data Skalbara Begränsad Komplexa, ACID-stöd Affärssystem, Finans, CRM
    Nätverksdatabaser Många-till-många Begränsad Begränsad Komplexa relationer Sociala medier, telekom, flygbokning
    Grafdatabaser Komplexa relationer Skalbara Flexibla Komplexa relationsfrågor Sociala nätverk, Rekommendationer
    Objektdatabaser Komplex data Skalbara Flexibla Komplexa Objektorientering, multimedia
    Dokumentdatabaser Halvstrukturerad Skalbara Flexibla Komplexa Sociala medier, E-handel
    Key-Value Stores Enkla data Högt skalbara Begränsad Enkel snabb läsning Caching, sessionshantering
    Wide-Value Stores Strukturerat data Skalbara Flexibla kolumner Komplexa Big Data, Tidsserier
    Vektordatabaser Komplex data Skalbara Flexibla Komplexa matriser Maskininlärning, Generativ AI
    Hierarkiska databaser Hierarkiskt data Begränsad Begränsad Begränsade relationer Organisationsschema, filsystem

    källa: sv.wikipedia.org/wiki/Databas mfl

    Sidan skapad 10 maj 2007 (som RDBMS.html)
    Uppdaterat 2 december 2024 (som egen sida, med olika databastyper)
    Sammanställt av Christer Tärning.