Databaser driver nästan alla digitala plattformar på planeten:från webbplatser, till bloggar, till sociala medier, till streamingtjänster. De flesta slutanvändare känner till databaser som MySQL som ett verktyg för att lagra data. Det är en ganska korrekt, men grundläggande, beskrivning av vad en databas är. Men de är mycket mer än så.
De olika typerna av databaser
Den allmänna termen databas blandar ofta ihop två separata och distinkta komponenter:databasen och Database Management System (DBMS). Databasen lagrar data och DBMS är verktyget, eller uppsättningen verktyg, du använder för att hantera data. DBMS adresseras här, eftersom det omfattar verktygen som gör det möjligt för databasadministratörer att kommunicera med databasen så att de helt kan hantera och styra den.
Databashanteringssystem är uppdelade i tre lager:
- Kund :Gör förfrågningar via kommandoraden eller en GUI-skärm med giltiga SQL-frågor.
- Server :Ansvarig för all logisk funktionalitet på servern.
- Lagring :Hanterar datalagring.
Inom dessa lager finns verktyg som en trådhanterare, ett frågespråk, en parser, en optimerare, en frågecache, en buffert, tabellmetadatacache och en nyckelcache. Dessa delar sammanförs för att utgöra ett kraftfullt system för administratörer, användare och programvara att använda för att lagra och hämta data.
En avgörande aspekt av DBMS är frågespråket. Detta är det speciella språk som används för att interagera med en databas. Det är ett väldigt speciellt språk och måste användas enligt specifikationerna som ställs in av DBMS. Vissa DBMS har sina egna, proprietära frågespråk, men de mest populära är:
- SQL - Structured Query Language är ett av de mest använda frågespråken på marknaden och används av MS SQL och MySQL.
- XQuery - Använder XML-filformatet för att extrahera och manipulera data.
- OQL - Object Query Language är standardspråket för objektorienterade databaser som ofta används i Big Data-användningsfall.
- SQL/XML - En kombination av SQL och XQuery och stöder SQL-satser på XML-data.
- GraphQL - Ett språk med öppen källkod som kan arbeta med API:er och även en körtid som kan användas för frågor mot befintlig data.
- LINQ - Language Integrated Query extraherar och bearbetar data från olika källor, såsom XML-dokument och relationsdatabaser.
Relationella och icke-relationella databaser
DBMS använder två primära typer av databas:relationell och icke-relationell. Skillnaden mellan dessa två är viktig, eftersom de hjälper till att definiera det bästa användningsfallet för en databas.
En relationsdatabas är en som lagrar information i tabeller som innehåller relaterad data. Det som ger en relationsdatabas dess namn är att relationer kan skapas mellan två eller flera tabeller. Relationerna korrelerar rader som hör till två olika tabeller till en tredje tabell. Relationsdatabaser är bäst att använda när informationen de innehåller inte ofta ändras och när uppgifternas noggrannhet är avgörande.
Icke-relationella databaser (även kallade NoSQL-databaser) lagrar sin information i en icke-tabellform. Istället lagrar icke-relationella databaser data i datamodeller, av vilka de fyra vanligaste typerna är:
- Dokumentorienterad - data lagras som JSON-dokument.
- Nyckel-värde - data lagras i nyckelpar.
- Diagram - data lagras i en nod-edge-node struktur.
- Bred kolumn - data lagras i ett tabellformat med flexibla kolumner som kan variera från rad till rad.
Eftersom de lagrar data på detta sätt är icke-relationella databaser mycket mer flexibla. De kan lagra en mängd olika typer av data. Detta gör dem idealiska när det är nödvändigt att lagra stora mängder komplex data, som när du arbetar med Big Data-applikationer.
Vad man ska leta efter i en databas
Den första frågan att ställa är, "Ska jag använda en relationell eller icke-relationell databas?" En relationsdatabas används bäst för instanser som kräver ACID (Atomicitet, Konsistens, Isolering, Hållbarhet) efterlevnad, datanoggrannhet, normalisering och enkelhet, men kräver inte skalbarhet, flexibilitet och hög prestanda. Ett bra exempel på en relationsdatabas är en dynamisk, databasdriven webbplats som WordPress.
Å andra sidan är en icke-relationell databas bäst att använda när dataflexibilitet, hastighet och skalbarhet är avgörande. Ett bra exempel på en icke-relationell databasanvändning är en molnbaserad app som är beroende av massiv skalning.
Åtta populära databaser
Den här listan över de åtta mest populära databaserna är uppdelad i 4 relationsdatabaser och 4 icke-relationella databaser.
Relationella databaser
Följande är de mest populära relationsdatabaserna på marknaden idag.
Oracle
Oracle-databasen utvecklades ursprungligen 1977, vilket gör den till den äldsta databasen på listan. Från och med januari 2022 innehar Oracle topplaceringen som det mest använda systemet för relationsdatabashantering i världen (med en Statista-ranking på 1266,89).
Oracle Database finns i fem upplagor:
- Företag - innehåller alla DBMS-funktioner samt alternativet Oracle Real Application Clusters för hög tillgänglighet.
- Personligt - inkluderar alla funktioner, minus alternativet Oracle Real Application Clusters.
- Standard - inkluderar basfunktionalitet.
- Express - lätt och gratis begränsad version för både Windows och Linux.
- Oracle Lite - för användning av mobila enheter.
Den främsta anledningen till att Oracle Database har den högsta marknadsandelen är att den är en av de mest skalbara av relationsdatabaserna. Den uppnår detta genom att dela upp sin arkitektur mellan det logiska och det fysiska. Genom att göra detta blir dataplatsen irrelevant och transparent, vilket möjliggör en mer modulär struktur som kan modifieras utan att själva databasen påverkas. Genom att bygga Oracle Database på detta sätt är det möjligt att dela resurser för att uppnå ett mycket mer flexibelt datanätverk.
Några av de utmärkande funktionerna i Oracle Database inkluderar:
- Real Application Clustering (RAC) och portabilitet som gör det möjligt att skala utan att förlora prestanda och datakonsistens.
- Effektiv minnescache.
- Högpresterande partitionering, vilket gör det möjligt att dela upp större bord i flera bitar.
- Varma, kalla och inkrementella säkerhetskopior med hjälp av verktyget Recovery Manager.
- Verktyg för att kontrollera dataåtkomst och användning.
Fördelarna med Oracle Database inkluderar:
- Använder frågespråket SQL.
- Hög prestanda.
- Bärbar (kan köras på nästan 20 nätverksprotokoll och många hårdvaruplattformar).
- Instance Caging gör det möjligt att köra flera databashanteringar från en enda server.
- Många utgåvor för att bäst passa ditt företag och/eller användningsfall.
- Klustring för skalbarhet, lastbalansering, redundans och prestanda.
- Felåterställning via verktyget RMAN (Recovery Manager).
- PL/SQL-stöd.
Nackdelarna med Oracle Database inkluderar:
- Egendomsskyddad - Oracle är inte öppen källkod.
- Komplexitet - Det är en av de mer komplexa relationsdatabaserna på marknaden.
- Kostnad - Oracle Database kan vara upp till 10 gånger dyrare än MS SQL.
Ta reda på hur du använder Oracle Database Express Edition med Linode.
MySQL
MySQL är en av de mest populära relationsdatabaserna med öppen källkod på marknaden. Enligt DB-Engines är MySQL rankad som nummer 2, bakom Oracle Database, i deras mest använda databaser på marknaden.
MySQL släpptes i maj 1995 och är mogen och pålitlig. Det är ett av de mest tillförlitliga alternativen som finns. MySQL är skrivet i C och C++ och körs på Linux, Solaris, macOS, Windows och FreeBSD och är licensierad under GPLv2.
MySQL är en relationsdatabas och skalas inte i samma utsträckning som en icke-relationell databas, men den stöder multi-threading, vilket gör det möjligt att skala den så att den kan hantera upp till 50 miljoner plus rader med en standardfil storleksgräns på 4 GB, med en teoretisk gräns på 8 TB.
Några av de utmärkande funktionerna i MySQL inkluderar:
Säkerhet - Använder ett stabilt datasäkerhetslager för att skydda känslig data och alla lösenord är krypterade.Återställ - Tillåter att transaktioner återställs.Minneseffektivt - Har mycket lågt minnesläckage.Produktiv - Använder utlösare, lagrade procedurer och vyer för högre produktivitet.Partitionering - Stöder partitionering för att förbättra prestandan för mycket stora databaser.GUI:er - MySQL Workbench GUI hanterar databasen.
Fördelarna med att använda MySQL inkluderar:
- Gratis - det här är en gratis databas med öppen källkod som kan installeras på så många serverinstanser som du behöver.
- Förtrolighet - MySQL använder SQL-frågespråket, så db-administratörer som är bekanta med språket är uppdaterade på nolltid med detta DBMS. MySQL följer också den typiska klient-/strukturarkitekturen.
- Hastighet - Är en av de snabbaste relationsdatabaserna, tack vare en unik lagringsmotor.
- Integration - MySQL kan integreras i tusentals tredjepartsapplikationer, som bloggsystem, CRM, HRM, ERP och många andra typer av applikationer.
Lär dig hur du installerar en MySQL-instans på en Linode-server.
Microsoft SQL Server
Microsoft SQL Server är DBMS som utvecklats av Microsoft. Denna databas är en patentskyddad lösning, men den kan installeras på både Linux och Windows. MS SQL Server släpptes först den 24 april 1989 och erbjuds nu som fem olika utgåvor:
- Standard - Kärnfunktioner som krävs för de flesta applikationer.
- Webb - Lågkostnadsalternativ som skiljer sig från standardutgåvan när det gäller maximalt tillåtna minne för buffertpoolen och maximal beräkningskapacitet.
- Företag - Stöder ett brett utbud av datalagerfunktioner och inkluderar avancerade funktioner som datakomprimering, förbättrad säkerhet och stöd för större datastorlekar.
- Utvecklare - Designad för utvecklare och inkluderar möjligheten att skapa lagrade procedurer, funktioner och vyer.
- Express - Begränsad till individer eller små organisationer och inkluderar inte någon av de avancerade funktionerna.
MS SQL Server arbetar med SQL frågespråk och använder SQL Server Operating System (SQLOS), som hanterar minne och I/O-resurser, jobb och databehandling.
Fördelarna med Microsoft SQL Server inkluderar:
- Inbyggt stöd för Visual Studio - Stöd för dataprogrammering är inbyggt i Visual Studio, så DB-administratörer kan skapa, visa och redigera databasscheman.
- Söktjänst för fulltext - Tillåter sökningar av ordbaserade frågor.
- Stöd för flera versioner - Tillåter installation av flera versioner av MS SQL Server på en dator.
- Enkel installation - Kan installeras med ett enda klick.
- Dataåterställning och återställning - Inbyggda verktyg för dataåterställning.
- Support - MS SQL Server har en enorm gemenskap av användare med massor av hjälp och support tillgängligt från olika källor.
Nackdelarna med MS SQL är få men bör övervägas av alla som funderar på att anta denna databasplattform. Dessa nackdelar inkluderar:
- Dyst och förvirrande prissättning.
- Dåligt användargränssnitt.
- Går endast partiell kontroll över databaser.
PostgreSQL
PostgreSQL (även kallad Postgres) är ett annat gratis databashanteringssystem med öppen källkod som ursprungligen fungerade som efterföljaren till Ingres-databasen. PostgreSQL kallar sig "Världens mest avancerade relationsdatabas med öppen källkod" och har för närvarande en marknadsandel på 14,70 % för relationsdatabaser.
PostgreSQL släpptes 1996 och har en mycket aktiv utvecklingscykel och en stor supportgemenskap. Det som skiljer PostgreSQL från andra relationsdatabaser med öppen källkod är att det är ett objektrelationellt databashanteringssystem, vilket betyder att det liknar en relationsdatabas, men det använder en objektorienterad databasmodell.
PostgreSQL är katalogdrivet, så det låter användare definiera datatyper, indextyper och funktionella språk, vilket gör det mer utbyggbart än andra relationsdatabaser.
Några av de utmärkande funktionerna i PostgreSQL inkluderar:
- SYRA-efterlevnad.
- Mycket samtidigt.
- Inkluderar NoSQL-stöd
- Stöd för schema och frågespråk för objekt, klasser, arv och funktionsöverbelastning.
- Vanligt tabelluttryck (de tillfälliga resultaten av en fråga som används inom ramen för en större fråga).
- Deklarativ partitionering (som minskar den mängd arbete som krävs för att partitionera data).
- Fulltextsökning.
- Stöd för geografiskt informationssystem/spatialt referenssystem (för att fånga, lagra, kontrollera och visa data relaterade till positioner på jordens yta).
- JSON-stöd.
- Logisk replikering (som är en metod för att replikera dataobjekt baserat på en primärnyckel).
Fördelarna med PostgreSQL är:
- Perfekt för komplexa dataoperationer med stora volymer.
- Mycket anpassningsbar med hjälp av plugins och användning av anpassade funktioner skrivna i C, C++ och Java.
- Multiversionskontroll av samtidighet (en avancerad teknik för att förbättra databasprestanda i en miljö med flera användare).
- Läslås är inte nödvändigt, så det erbjuder större skalbarhet än andra relationsdatabaser.
- Tvärplattforms (tillgängligt för BSD, Linux, macOS, Solaris och Windows).
När det gäller nackdelarna lider PostgreSQL av några, såsom:
- Mer komplicerat än MySQL.
- Långsammare än MySQL.
- Inget enkelt sätt att migrera data från andra RDBMS.
- Dålig datakomprimering.
- Komplicerad horisontell skalning.
- Dåligt stöd för klustring.
- Inget inbyggt stöd för maskininlärning.
Kolla in vår guide om hur du installerar PostgreSQL på en Ubuntu 20.04-server för mer information.
Icke-relationella databaser
Följande avsnitt täcker de mest populära icke-relationella databaserna på marknaden idag.
Redis
Redis är ett datastrukturlager i minnet som används som en distribuerad NoSQL-databas med nyckelvärden. Redis står för Remote Dictionary Server och använder en avancerad nyckel-värde butik som inkluderar valfri hållbarhet. Redis kallas ofta för en datastrukturserver eftersom nycklar kan innehålla strängar, hash, listor, uppsättningar och sorterade uppsättningar.
Redis är en flyktig databas i minnet, vilket gör den till ett bra alternativ för system med en stor mängd het data. Redis lagrar data i cache, vilket gör läsning/skrivning snabbare och data alltid högst tillgänglig.
Funktionerna som gör Redis enastående inkluderar:
- Minsta komplexitet jämfört med andra NoSQL-databaser.
- Lätt och kräver inga externa beroenden.
- Fungerar i alla POSIX-miljöer.
- Stöd för synkron, icke-blockerande, master/slav-replikering för hög tillgänglighet.
- Kappat nyckel-värde-baserat cachningssystem, som är jämförbart med memcached.
- Inga strikta regler för att definiera scheman eller tabeller.
- Stöd för flera datamodeller eller typer.
- Sharding-stöd.
- Kan användas tillsammans med andra databaser för att minska belastningen och öka prestanda.
Fördelarna med att använda Redis inkluderar:
- Tillåter lagring av nyckel-värdepar så stora som 512 MB.
- Använder sin egen hashmekanism.
- Tack vare datareplikering tål Redis cache fel och ger fortfarande oavbruten tjänst.
- Alla populära programmeringsspråk stöder det.
- Stöder infogning av enorma mängder data i dess cache.
- På grund av sin lilla yta kan den installeras på Raspberry Pi och ARM-hårdvara.
Nackdelarna med att använda Redis inkluderar följande:
- Alla dina data måste få plats i minnet och du kan inte hantera mer data än du har minne.
- Det finns inget frågespråk eller stöd för relationalgebra.
- Erbjuder endast två alternativ för beständighet (ögonblicksbilder och filer som endast kan läggas till).
- Grundläggande säkerhetsfunktioner.
- Körs bara på en CPU-kärna i enkeltrådsläge, så skalbarhet kräver flera instanser av Redis.
Kolla in vår guide om hur du installerar och konfigurerar Redis på en Ubuntu 20.04-server för mer information.
MongoDB
MongoDB är en öppen källkod, dokumentorienterad NoSQL-databas, fokuserad på datalagring med hög volym. MongoDB anses schemalöst, så det upprätthåller inte en viss struktur på dokument som finns i en samling. Denna NoSQL-databas, som ursprungligen släpptes 2009, använder JSON-liknande dokument med valfria scheman och kan installeras på plats eller helt hanteras i molnet. MongoDB anses vara en mycket bra kandidat för big data och kan användas av organisationer av alla storlekar.
Funktionerna som gör att MongoDB sticker ut inkluderar:
- Stöder fält-, intervallfråga och regex-sökningar.
- Hög tillgänglighet med replikuppsättningar.
- Stöder sönderdelning.
- Kan användas som ett filsystem (kallat GridFS).
- Stöder pipeline, map-reduce-funktion och aggregeringsmetoder för enstaka ändamål.
- JavaScript stöds i frågor.
- Stöder samlingar av fast storlek, kallade samlingar med tak.
- Index kan skapas för att förbättra sökprestanda.
- Tillåter att operationer utförs på grupperad data för antingen ett enstaka resultat eller beräknat resultat.
Fördelarna med MongoDB-databasen inkluderar:
- Stöder ett uttrycksfullt frågespråk.
- Inte nödvändigt att lägga tid på att designa ett databasschema eftersom det är schemalöst.
- Flexibel och presterande.
- Stöder geospatial effektivitet.
- Stöder flera dokument ACID-övergångar.
- Kräver inte SQL-injektion.
- Kan snabbt integreras med Hadoop.
- Öppen källkod och gratis att använda.
Nackdelarna med MongoDB-databasen inkluderar:
- Kräver en stor mängd minne, särskilt vid skalning.
- 16 MB lagringsgräns för datadokument.
- 100-nivågräns för datakapsling.
- Stöder inte transaktioner.
- Att sammanfoga dokument är komplicerat.
- Kan vara långsam om index inte används på rätt sätt.
- Eftersom relationer inte är väl definierade kan de leda till duplicerade data.
Kolla in vår guide om MongoDB-användningsfall för mer information.
Apache Cassandra
Apache Cassandra är ett distribuerat NoSQL-databashanteringssystem med öppen källkod. Den är utformad för att hantera mycket stora mängder data över råvaruservrar. Cassandra utvecklades ursprungligen inom Facebook för att driva plattformens indexsökfunktion. I juli 2008 skapade Facebook Cassandra med öppen källkod via Google Code, och i mars 2009 blev det officiellt ett Apache Incubator-projekt.
Funktionerna som gör att Cassandra sticker ut inkluderar:
- Distribuerade noder har alla samma roll, så det finns ingen enskild punkt av misslyckande.
- Stöder både replikering och replikering av flera datacenter.
- Läs-/skrivgenomströmningen ökar linjärt när maskiner läggs till för att uppnå hög skalbarhet.
- Data replikeras automatiskt till flera distribuerade noder.
- Tillgänglighet och partitionstolerans är viktigare än konsistens, vilket klassificerar det som ett AP-system (inom CAP-satsen).
- Stöder Hadoop-integrering med stöd för MapReduce.
- Innehåller sitt eget frågespråk, Cassandra Query Language.
Apache Cassandras fördelar inkluderar:
- Elastisk skalbarhet gör det möjligt att skala Cassandra upp och ner efter behov utan stillestånd.
- Följer en peer-to-peer-arkitektur, så fel är sällsynt jämfört med master-slave-konfigurationer.
- Fyra nyckelmetoder för dataanalys, inklusive Solr-baserad integration, batchanalys (med Hadoop-integration), extern analys (med hjälp av Hadoop och Cloudera/Hortonworks).
- Nästan realtidsanalys.
- Stöd för multidatacenter och hybridmoln.
- Data kan lagras som antingen strukturerad, semi-strukturerad eller ostrukturerad data.
Nackdelarna med Apache Cassandra inkluderar:
- Begränsat ACID-stöd.
- Latens kan vara ett problem på grund av den stora mängden I/O.
- Data modelleras kring frågor, istället för struktur, vilket kan resultera i duplicerad information som lagras flera gånger.
- Inget stöd för anslutning eller undersökning.
- Även om skrivningar går snabbt, kan läsningar vara långsamma.
- Begränsad officiell dokumentation.
Kolla in våra guider om Apache Cassandra för att lära dig mer.
CouchDB
CouchDB är vår sista öppen källkod, dokumentorienterade NoSQL-databas. Det här specifika verktyget lagrar data i JSON-dokument och använder JavaScript som frågespråk med hjälp av MapReduce. CouchDB omfamnar webben genom att komma åt dokument via HTTP. När de väl har kommit åt kan dessa dokument efterfrågas, kombineras och transformeras med JavaScript. Denna NoSQL-databas är perfekt lämpad för både webb- och mobilapplikationer, tack vare direkta dokumenttransformationer och ändringsmeddelanden i realtid.
Funktionerna som gör att CouchDB sticker ut inkluderar:
- Databasreplikering över flera serverinstanser.
- Snabb indexering och hämtning.
- REST-liknande gränssnitt.
- Flera bibliotek gör det enkelt att använda ditt valda språk.
- Webbläsarbaserat GUI hanterar data, behörigheter och konfigurationer.
- Stöd för replikering.
- Följer alla funktioner i ACID-egenskaper.
- Autentisering och sessionsstöd.
- Säkerhet på databasnivå.
- Inbyggt stöd för Map/reduce (modell för bearbetning och generering av stora datamängder med en parallell, distribuerad algoritm).
Fördelarna med att använda CouchDB inkluderar:
- Möjlighet att lagra samma dokument i flera databasinstanser.
- Serialiserade objekt kan lagras som ostrukturerad data i JSON-dokument.
- Redundant datalagring. Kan replikera och synkronisera med webbläsare, via PouchDB.
- Sharding och klusterstöd.
- Master-to-Master-replikering möjliggör kontinuerlig säkerhetskopiering.
Nackdelarna med CouchDB inkluderar:
- Långsammare än vissa NoSQL-databaser.
- Kräver mycket omkostnader.
- Godtyckliga frågor är dyra.
- Tillfälliga visningar av stora datamängder är långsamma.
- Inget stöd för transaktioner.
- Stor databasreplikering är opålitlig.
Kolla in vår guide om hur du använder CouchDB 2.0 på Ubuntu 20.04 för mer information.
Slutsats
Oavsett vilket projekt du arbetar med finns det en databas som passar dina behov perfekt. Oavsett om du utvecklar en liten dynamisk webbplats som är beroende av höga nivåer av datakonsistens, där du använder en relationsdatabas eller en app som kommer att skalas till enorma proportioner, där du använder en icke-relationell databas, har du alternativ. Med Linode kan du arbeta med vilken som helst av dessa databaser för att effektivt lagra dina data och interagera med dina applikationer. Det är dock viktigt att veta exakt vad din app behöver från en databas innan du väljer vilken. Gör fel val och det kan bli dyrt att göra om.