Med ett stort utbud av databaser att välja mellan på marknaden står användarnas val ofta mellan PostgreSQL vs SQL Server, beroende på vilket alternativ som är bäst för deras användningsområde. Organisationer som använder PostgreSQL för sin verksamhet kanske vill byta till en databas som Microsoft SQL Server eftersom den främst är avsedd för olika datalagerlösningar, e-handel och andra affärsområden.

Historiskt sett har Microsoft SQL Server varit en favorit för organisationer som är beroende av andra Microsoft-produkter, men PostgreSQL har gjort snabba framsteg för att stiga till toppen av nischen, inte bara på grund av fördelarna med öppen källkod utan även för sitt aktiva användar-community och sina praktiska funktioner.

Det är detta som för oss till den här diskussionen. Genom att jämföra PostgreSQL och SQL Server kan du bättre förstå de möjliga fördelarna och kompromisserna med de två systemen, och vilket system som är bäst lämpat för dina ändamål.

Låt oss köra igång!

Vad är PostgreSQL?

PostgreSQL-logotyp
PostgreSQL-logotyp (Bildkälla: Uberconf)

PostgreSQL har etablerat sig som en avancerad öppen källkodsdatabas på enterprise-nivå med stöd för både JSON (icke-relationell) och SQL (relationell) sökning. Detta kraftfulla och stabila databashanteringssystem har backats upp av mer än trettio års aktiv utveckling inom sitt community som har bidragit till dess rykte om integritet, tillförlitlighet, motståndskraft, prestanda och korrekthet.

PostgreSQL används som huvuddatalager eller datalagret för olika mobila, webbaserade, analytiska och geospatiala tillämpningar. PostgreSQL kan även skryta med en rik historia av stöd för avancerade datatyper tillsammans med prestandaoptimering som är vanligt förekommande hos dess kommersiella databasmotståndare, som Microsoft SQL Server och Oracle.

PostgreSQL är inte bara en kostnadsfri och öppen källkod utan är även väldigt utbyggbar. Du kan till exempel generera egna funktioner, definiera dina datatyper och till och med skriva kod från olika programmeringsspråk utan att behöva kompilera om din databas!

Historik

Här är en kort översikt över PostgreSQL genom åren:

  • Ingres utvecklades för första gången  år 1977.
  • Michael Stonebraker och hans medarbetare utvecklade Postgres år 1986.
  • År 1990 lades det till stöd för PL/ pgSQL och ACID-överensstämmelse till PostgreSQL.
  • NYCPUG (New York City PostgreSQL User Group) gick med i PgUS (United States PostgreSQL Association) redan år 2013.
  • År 2014 inledde PGconf en ny era för PostgreSQL-användare.

Huvudfunktioner

Låt oss nu gå vidare och ta en titt på några av PostgreSQLs funktioner som gör det till ett så oumbärligt verktyg på marknaden:

  • Överensstämmelse med standarder och tillförlitlighet: PostgreSQL:s write-ahead-loggning gör att den utmärker sig som en väldigt feltolerant databas. PostgreSQL är även ACID-kompatibel och erbjuder fullt stöd för vyer, främmande nycklar, triggers, joins och lagrade procedurer på olika språk. Den innehåller de flesta SQL:2008-datatyper, inklusive BOOLEAN, NUMERIC, INTEGER, DATE, VARCHAR, TIMESTAMP, INTERVAL och CHAR.
  • Robusta tillägg: PostgreSQL har robusta funktioner som t.ex. återställning i tid, MVCC (Multiversion Concurrentency), tablespaces, granulära åtkomstkontroller och säkerhetskopiering online/hot-backup. PostgreSQL är även lokalanpassad och har fantastisk bokstavskänslighet, sortering och formatering. Den är mycket skalbar både när det gäller mängden data som den kan hantera och antalet samtidiga användare som kan tas emot.
  • Öppen källkodslicens: Du kan använda PostgreSQL:s källkod under en öppen källkodslicens, vilket ger dig friheten att ändra, använda och implementera den som du vill, utan kostnad. PostgreSQL har dessutom ingen licenskostnad, vilket undanröjer risken för överutnyttjande. PostgreSQL:s community av entusiaster och bidragsgivare hittar regelbundet rättelser och buggar, vilket bidrar till databassystemets övergripande säkerhet.

Användningsområden

PostgreSQL:s mångsidighet gör att den kan användas i ett stort antal användningsområden, t.ex:

  • Federerad hubbdatabas: PostgreSQL:s JSON-stöd och wrappers för främmande data gör det möjligt att koppla ihop det med andra datalager – inklusive NoSQL-datatyper – och fungera som en federerad hubb för polyglotta databassystem.
  • Allmänt användbar OLTP-databas: Både stora företag och nystartade företag använder PostgreSQL som huvuddatalagret för att stödja sina tillämpningar, produkter och lösningar i internetskala.
  • Geospatial databas: PostgreSQL stöder geografiska objekt när den används med tillägget PostGIS. Den kan även användas som ett geospatialt datalager för geografiska informationssystem (GIS) och platsbaserade tjänster.
  • LAPP-öppenkällkodsstack: PostgreSQL kan även köra dynamiska appar och webbplatser som en del av ett robust alternativ till LAMP-stacken. LAPP står för Linux, Apache, PostgreSQL, Perl, PHP och Python.

Vad är SQL Server?

SQL Server-logotypen
SQL Server-logotypen (Bildkälla: Software Engineering Stack Exchange)

SQL Server utvecklades av Microsoft som ett relationellt databashanteringssystem som har en lång historia, trettiotvå år för att vara exakt. Microsoft SQL Server anses vara en programprodukt vars huvudfunktion är att hämta och sammanställa data som efterfrågas av andra programvaror.

Dessa program kan antingen köras på en annan dator i ett nätverk eller på samma dator. Microsoft SQL Server har genomgått en hel del uppdateringar under årens lopp, för att bli ett av de bäst stödda och mest välrenommerade RDBMS på marknaden idag.

SQL Server kan tacka sin tillverkare, Microsoft, för en stor del av sin popularitet. När MS SQL Server befann sig i sitt begynnande skede hade Microsoft redan etablerat sig som en teknikjätte.

SQL Server har lyckats göra sig ett namn som databashanteringssystem med sitt breda utbud av applikationer och verktyg som förenklar arbetet med data. Dess omfattande grafiska användargränssnitt (GUI) gör det möjligt att arbeta intuitivt och enkelt med databasen samtidigt som du kan generera statistik för dina rapporter.

Historik

Här är en kort översikt över Microsoft SQL Server genom åren:

  • Utvecklingen av SQL Server startade år 1988 när Microsoft samarbetade med Sybase och Ashton-Tate för att utveckla programvara för underhåll och skapande av databaser som skulle ge en boost till Microsofts marknad för företagsdatabaser.
  • SQL Server 1.0 lanserades år 1989. På den tiden utnyttjade systemadministratörsfaciliteten (SAF) för att skapa databaser. Den hade ingen dokumentation, men gjorde det ändå möjligt för användare att köra SQL-sökfrågor och ställa in parametrar. Det första kodutdraget för Microsoft SQL Server skrevs av Sybase.
  • Det släpptes successivt nyare versioner med fler förbättringar och funktioner. SQL Server år 2019, eller Aries, är det senaste tillskottet i en stor mängd omfattande versioner och fokuserar på att göra databasfunktionerna ännu mer intuitiva att använda. Detta inkluderar alternativ för kluster för stora data, vilket ger användarna möjlighet att arbeta med gigantiska datamängder.

Huvudfunktioner

Nu räcker det med historiesnack. Låt oss ta en titt på ett par centrala funktioner som gör SQL Server till ett så bra alternativ:

  • Robust säkerhetsplattform: SQL Server låter dig skydda dina data i rörelse och i vila med inbyggda funktioner för dataskydd, dataklassificering, varningar och övervakning. Med SQL Server kan du enkelt kryptera känsliga data och utföra omfattande beräkningar på krypterade data samt tillåta en anpassad rollbaserad dataåtkomst med komplex radfiltrering.
  • Branschledande prestanda: SQL Server har en rekordstor prestanda på Linux och Windows och är konsekvent ledande när det gäller TPC-H datalagringsarbetsbelastning, TPC-E OLTP-arbetsbelastning och riktmärken för tillämpningsprestanda i den verkliga världen. Du kan även använda SQL Server’s minnesdatabasfunktioner, t.ex. minnesoptimerad tempdb och stöd för permanent minne, för att förbättra prestandan för dina verksamhetskritiska arbetsbelastningar.
  • Insikter från alla dina data med stora datakluster: Med SQL Server kan du få värdefulla insikter från alla dina data genom att söka efter data i hela din data-hosting – Azure SQL Database, SQL Server, Teradata, MongoDB, Azure Cosmos DB och många fler – utan att behöva replikera eller flytta data. Du kan till och med bygga en delad data-sjö genom att kombinera både ostrukturerade och strukturerade data i SQL Server och få tillgång till data antingen via Spark eller T-SQL.

Användningsområden

SQL Servers utbyggbarhet och prestanda gör att den kan användas i ett stort antal användningsområden, t.ex:

  • Replikeringstjänster: SQL Server replikeringstjänster används av SQL Server för att harmonisera och replikera databasobjekt, antingen som en delmängd av de närvarande objekten eller i sin helhet. Replikeringstjänsterna följer en prenumerant/utgivare-modell, dvs. ändringarna skickas ut av en databasserver (utgivare) och samlas in av andra (prenumeranter).
  • Meddelandetjänster: Meddelandetjänster släpptes ursprungligen som ett tillägg till SQL Server 2000. Det är en mekanism för att skapa datadrivna ändringar som sedan skickas till prenumeranterna av meddelandetjänsterna.
  • Tjänster för maskininlärning: SQL Server-maskininlärningstjänster fungerar i SQL Server-instansen, vilket gör att människor kan utföra dataanalyser och maskininlärning utan att behöva flytta data över nätverket eller hindras av datorernas minne.
  • Analystjänster: SQL Server Analysis Services (SSAS) lägger till datautvinning och OLAP-funktioner för SQL Server-databaser. OLAP-motorn erbjuder stöd för lagringslägena för data för relationell analytisk bearbetning online (ROLAP), multidimensionell analytisk bearbetning online (MOLAP) och hybrid analytisk bearbetning online (HOLAP). SQL Server-analystjänsterna stöder även XML för analysstandarden som grundläggande kommunikationsprotokoll.

PostgreSQL vs SQL Server: Jämförelse

Nu när vi har en uppfattning om de viktigaste aspekterna av SQL Server och PostgreSQL, låt oss gå in på skillnaderna mellan dessa två. Du kan använda de faktorer som nämns nedan för att identifiera vilket databashanteringssystem som passar bäst för dina behov.

Tillgänglighet

PostgreSQL erbjuder ett brett sortiment av lösningar för att säkerställa hög tillgänglighet för användarna, inklusive write-ahead log shipping, shared-disk failover, datapartitionering och olika replikeringsmetoder. Verktyg som EDB Postgres Failover Manager ger automatisk failover för att säkerställa hög tillgänglighet genom att övervaka och identifiera databasfel.

SQL Server innehåller å andra sidan olika verktyg för hög tillgänglighet, t.ex. loggtransport, failover clusters och replikering. SQL Servers tillgänglighetsgrupper som arbetar dygnet runt ger automatisk failover när specifika villkor är uppfyllda. Det här erbjudandet kan dock endast nås i SQL Servers enterprise-utgåva.

Data- och tabellstruktur

PostgreSQL erbjuder sina användare det procedur-baserade programmeringsspråket PL/pgSQL för enkelhetens skull. Ytterligare funktioner utöver standard-SQL i PostgreSQL inkluderar användardefinierade typer, anpassade moduler, tillägg, JSON-stöd och extra alternativ för triggers och andra funktioner.

SQL Server använder T-SQL, som har likheter med standard-SQL. T-SQL inkluderar ytterligare stöd för data- och strängbehandling, procedur-baserad programmering och lokala variabler.

Om du vill få en bättre förståelse för hur systemen cachelagrar och behandlar förfrågningar isolerar PostgreSQL processer genom att behandla dem som separata OS-processer. Varje databas har ett separat minne och kör sin egen process. Detta gör övervakning och hantering mycket lätt, men det blir samtidigt svårare att skala flera databaser.

SQL Server använder en buffertpool som kan begränsas eller utökas beroende på bearbetningsbehov. Allt arbete utförs i en enda pool, utan flera sidor, till skillnad från PostgreSQL.

Både PostgreSQL och SQL Server erbjuder stöd för temporära tabeller eftersom det gör det möjligt att lagra mellanresultat från förgrenad komplex logik och komplexa procedurer. Temporära tabeller kan bidra till att förbättra databasens organisation och prestanda genom att isolera mellanliggande information även från det väsentliga.

Defragmentering

När utvecklare ändrar olika delar av en SQL-databas sker ändringarna på olika ställen i systemet och kan vara svåra att spåra, läsa och hantera. Därför bör underhållet även omfatta defragmentering – processen att sammanställa den uppdaterade databasen genom att tilldela index, generera nya sidor och se över strukturen. Databaserna kan sedan frigöra diskutrymme som inte utnyttjas ordentligt så att en databas kan köras i en snabbare takt.

PostgreSQL genomsöker tabellerna i ett datalager för att leta efter tomma rader och gör sig av med onödiga element. Genom att göra detta frigör systemet diskutrymme. Den här metoden kräver dock mycket CPU och kan påverka applikationens prestanda.

Å andra sidan tillhandahåller SQL Server en effektiv skräpplockare som inte genererar mer än 15-20 % av överskottstiden. Tekniskt sett kan utvecklare även köra skräpplockare kontinuerligt, eftersom det är så effektivt. Sammanfattningsvis erbjuder SQL Server fler defragmenteringsmetoder än PostgreSQL.

Index

En databas hantering av index är ett bevis på dess användbarhet eftersom index används för att hitta data utan att leta efter en viss rad. Du kan även använda index för att hänvisa till flera kolumner eller rader. Du kan tilldela samma index till filer, presentera dem på olika ställen i databasen och samla alla dessa delar med en enda sökning.

PostgreSQL stöder en indexbaserad tabellorganisation, men de tidiga versionerna använde inte automatiska indexuppdateringar. Det gör det även möjligt att slå upp många index i en enda sökning, vilket innebär att du kan upptäcka mycket information.

SQL Server tillhandahåller en rik automatiserad funktionalitet för indexhantering. De kan organiseras i kluster och upprätthålla rätt radordning utan manuell inblandning. SQL Server stöder även partiella index och sökningar med flera index.

Funktioner

PostgreSQL erbjuder ingen inbyggd jobbplanerare, till skillnad från andra SQL-databaser. Upprepade uppgifter behöver externa verktyg som cron, pgAgent eller pg_cron på Linux och SQLBackupAndFTP eller Task Scheduler på Windows.

Uppgifter i SQL Server kan däremot enkelt schemaläggas via SQL Server Management Studio.

PostgreSQL har en välutvecklad MVCC-kontroll (multi-version concurrency control) för att hantera flera förfaranden samtidigt. MVCC erbjuder ögonblicksbilder av databasinformation för att undvika att visa inkonsekvenser som orsakas av samtidiga transaktioner eller låsning av data som sker i andra databassystem. PostgreSQL utnyttjar serializable snapshot isolation (SSI) för att säkerställa transaktionsisolering.

SQL Server har ett mindre utvecklat system för flerversionskonkurrensstyrning och är som standard beroende av låsning av data för att undvika fel från samtidiga transaktioner. SQL Server erbjuder även en optimistisk funktion för samtidighet, som utgår från att sådana problem sällan uppstår. I stället för att låsa en rad kontrolleras den mot en cachelagrad version för att se om någon ändring har skett.

Partitionering och Sharding

När prestandaförbättringar är viktiga för större databaser och du har maxat dina lagrade procedurer, och din maskinvara är uppgraderad, kan du behöva fördela arbetet på olika servrar. Det är här som partitionering och sharding kommer in i bilden.

Även om både sharding och partitionering i huvudsak handlar om att dela upp en stor datamängd i mindre delmängder, sprider sharding data över flera datorer till skillnad från partitionering.

Från och med version 10.0 har PostgreSQL stöd för deklarativ partitionering – partitionering efter intervall, lista eller hash.

MS SQL Server stöder horisontell partitionering – Uppdelande av en tabell med många rader i flera tabeller med färre rader.

MS SQL Server stöder även sharding genom federation. ”Federerade partitionerade vyer” är vyer där tabellerna är spridda över olika servrar för att balansera bearbetningsbelastningen.

För att hämta posterna från servrarna behöver du vissa kommandon. Dessa kommandon kallas distribuerade partitionerade vyer. De använder typiska SQL-anvisningar, tillsammans med nyckelordet UNION, för att hämta data från alla distribuerade servrar.

På samma sätt kan DML-anvisningar (INSERT, UPDATE och DELETE) användas när särskilda regler iakttas för de underliggande tabellerna. Observera även att federerade partitionerade vyer endast stöds i enterprise-utgåvor.

Även om federerade partitionerade vyer kan implementeras på alla andra utgåvor eftersom det inte finns någon särskiljande syntax för dem, kommer de inte att erkännas som federerade partitionerade vyer. Reglerna för att känna igen vyn som partitionerad över servrar är endast tillgängliga med enterprise-utgåvor.

Om man använder den här partitioneringstekniken brukar prestandan öka med 20-30 % i de flesta applikationer. Det är därför ett väldigt användbart verktyg om ditt företag hanterar mycket data.

Replikering

Medan partitionering delar upp databasen i mindre delmängder och distribuerar de partitionerade tabellerna till olika noder, kopierar replikering databasen över flera databaser för att erbjuda en snabb visning och mindre svarstid.

PostgreSQL erbjuder primär-sekundär replikering. Denna kan vara asynkron eller synkron. Write-ahead logs (WALs) gör det möjligt att dela ändringar med repliknoderna, vilket möjliggör asynkron replikering.

De andra typerna av replikering omfattar främst logisk replikering, strömmande replikering och fysisk replikering.

  • Logisk replikering följer en publicerings- och prenumerationsmodell. Ändringar baseras på datareplikeringens identitet, t.ex. dess primärnyckel, snarare än dess fysiska plats.
  • Streaming-replikering strömmar i huvudsak WAL:erna så snart filen skapas, vilket gör det möjligt att snabbt uppdatera standby-servrar i stället för att vänta på att filen fylls.
  • Slutligen genomförs fysisk replikering vanligtvis med filer och kataloger, utan hänsyn till innehållet på den fysiska platsen. PostgreSQL erbjuder inte någon inbyggd multiprimär replikering, men den kan utföras med hjälp av andra tredjepartsverktyg.

SQL Server-replikering duplicerar data från en publicerande server till en prenumerant. Den kan vara asynkron eller asynkron beroende på SQL Server-utgåvan. Det finns tre typer av replikeringar, nämligen: transaktions-replikering, ögonblicksbild-replikering och sammanslagnings-replikering.

  • Transaktions-replikering implementeras vanligtvis för server-till-server-miljöer, där ändringar levereras från utgivaren till abonnenten när de sker.
  • Merge-replikering genomförs vanligtvis i situationer där konflikter kan uppstå, för server-till-klient-miljöer eller där data kan ändras och spåras till antingen prenumeranten eller utgivaren och därefter synkroniseras.
  • Replikering av ögonblicksbilder implementeras när data sällan uppdateras, inte behöver ändras inkrementellt eller när data dupliceras exakt så som de visas vid en viss tidpunkt. Det erbjuds dessutom enterprise edition peer-to-peer replikering som en alternativ lösning till replikering med flera primära noder.

Språk och syntax

PostgreSQL är skrivet i C-språket och MS SQL är skrivet i C och C++. När det gäller språkbindning är PostgreSQL mycket lätt att använda och ansluta till tack vare dess externa API libpq, som är mycket väl utformat och dokumenterat.

SQL Servers externa språkbindningar kan dock bero på flera andra faktorer. Du kan behöva installera extra drivrutiner eller skapa klasser för att lagra de data som efterfrågas; du måste därför veta hur datan ser ut vid kompileringstillfället. Du skulle förmodligen behöva hänvisa till dokumentationen, och det kan bli ganska tidskrävande att följa upp.

När det gäller funktioner i procedur-baserade språk erbjuder både PostgreSQL och SQL Server ett robust stöd. PostgreSQL stöder datatypen JSON och användare kan enkelt använda Python, Java, PHP, Perl och R med SQL eftersom de stöds av funktionen för procedur-baserade språk.

SQL Server erbjuder visserligen stöd, men den här funktionen har ännu inte förbättrats, eftersom det finns små förekommande buggar, och det kan ta tid att implementera eftersom det är långsamt. Användaren måste först kompilera koden till en .dll-fil.

I PostgreSQL behöver man inte skapa en .dll-fil först. PostgreSQL tillhandahåller även ett stort antal reguljära uttryck (regex) som en grund för analytiskt arbete.

MS SQL Server har jämförelsevis färre regex och stöder vissa kommandon som substring och pattern index, som kanske inte är lika bra som PostgreSQL.

Prestanda

När det gäller prestanda trumfar PostgreSQL SQL Server på flera sätt. Vi berörde partitionering, och även om både PostgreSQL och SQL Server erbjuder partitionering, erbjuder PostgreSQL detta kostnadsfritt och med en högre effektivitet.

PostgreSQL erbjuder även en bättre samtidighet, vilket är en viktig funktion där flera processer kan få tillgång till och ändra delade data samtidigt. MVCC-egenskapen i PostgreSQL säkerställer en mindre risk för dödläge, och blockerar endast om två sökfrågor försöker ändra samma rad samtidigt och serialiserar de uppdateringar som görs på den raden.

MVCC-låset som har förvärvats för att utfråga data strider inte mot de lås som har förvärvats för att skriva data. Detta minimerar låsstridigheter och erbjuder bättre prestanda i fleranvändarmiljöer.

Å andra sidan har SQL Server en underutvecklad samtidighet och vissa processer kan till och med bli låsta. Till skillnad från MVCC-funktionen uppdateras en ny version av raden i stället för att samma rad skrivs över och båda bibehålls. Successivt flyttas de äldre versionerna till en systemdatabas som kallas tempdb. Det finns dock mycket kvar att utveckla när det gäller samtidighet i denna databas.

PostgreSQL erbjuder även stöd för indexering för flera tillägg, vilket ökar databasens prestanda.

Å andra sidan har SQL-servrarna ännu inte förbättrat sitt indexeringsstöd och de har ännu inte inkluderat arrays – en av de mest använda variabeltyperna.

Prissättning

PostgreSQL släpptes under PostgreSQL-licensen, en liberal licens för öppen källkod. PostgreSQL Global Development Group är fortfarande engagerad i att göra PostgreSQL tillgängligt som en evigt fri och öppen källkod. Det finns inga planer på att ändra eller släppa PostgreSQL under en annan licens.

MS SQL Server släpptes under en kommersiell licens som en del av Microsofts produkter. I början av 2016 gjordes databasen tillgänglig som ett kostnadsfritt verktyg för utvecklare, men den stöder endast en processor och 1 GB maximalt minne. Även om den är kostnadsfri saknar den flera funktioner som du kan behöva för ett företag. Du kan behöva betala 899 dollar per server om du behöver fler servrar. Idag kostar SQL Server enterprise edition 13 748 dollar.

Skalbarhet

Databassystemets förmåga att fortsätta att fungera bra när data ökar för att tillgodose en användares behov utan att äventyra prestandan kallas skalbarhet.

PostgreSQL erbjuder många funktioner när det gäller skalbarhet och kan använda flera CPU-kärnor för att parallellt genomföra snabba sökfrågor.

Även SQL Server kan använda kärnor, men standardversionen är begränsad till tjugofyra CPU-kärnor. Företagsversionen gör det möjligt att använda ett obegränsat antal CPU-kärnor. SQL Server har även en funktion för hyperskalning, där du kan bestämma den nedre och övre gränsen vilket gör att du kan skala nedåt och uppåt beroende på kraven.

Säkerhet

I och med ökningen av datastölder, hackning och piratkopiering har säkerheten verkligen blivit det viktigaste kravet för databassystem. Både SQL Server och PostgreSQL erbjuder dock en utmärkt datakryptering och autentisering.

Metoder för autentisering

På serversidan erbjuder PostgreSQL avancerade autentiseringsmetoder, inklusive LDAP (Lightweight Directory Access Protocol) och PAM (Pluggable Authentication Module), som potentiellt minskar angreppsytan för PostgreSQL-databasservrarna. Andra säkerhetsförbättringar på servernivå i PostgreSQL inkluderar PostgreSQL-serverns lyssnaradress, hosting-baserad autentisering och certifikatautentisering.

I MS SQL Server finns det två säkerhetsförbättrande funktioner på servernivå: Windows-autentiseringsläge och blandat läge som omfattar en autentiseringsprocess av både Windows Server och MS SQL Server. Säkerhetsmodellen för MS SQL Server är en nära integrering mellan Windows-serverns Windows-autentiseringsläge och databasen.

Kryptering av data

PostgreSQL tillhandahåller datakryptering och gör det möjligt att använda SSL-certifikat (Secure Sockets Layer) när dina data transporteras på webben eller via motorvägar i offentliga nätverk. Du kan även implementera verktyg för autentisering av klientcertifikat som ett alternativ. Du kan dessutom använda kryptogena funktioner för att lagra krypterade data i PostgreSQL som både stöder symmetrisk nyckel och offentlig nyckelkryptering.

I MS SQL Server omfattar de tillgängliga datakrypteringsfunktionerna transparent datakryptering (TDE), alltid krypterad och kryptering på kolumnnivå. TDE använder AES-algoritmen (Advanced Encryption Standard) för att kryptera fysiska filer, som omfattar både data- och loggfiler. Med funktionen alltid krypterad kan du kryptera vissa kolumner i båda lägena, i vila eller i rörelse (dvs. data förblir krypterade även i minnet).

Privilegier på användarnivå

Vidare kan du hantera olika användare tillsammans med deras behörigheter (läsa, skriva) i både PostgreSQL och SQL Server.

PostgreSQL inkluderar privilegier på användarnivå som rolltilldelning, privilegier på tabellnivå via roller och rollförärvning. Med alternativet granskning kan du granska användares och gruppers dataåtkomstaktiviteter i din databas, vilket skapar ett extra säkerhetslager.

SQL Server uppnår detta via användargrupper och roller. Resursbehörigheter beviljas direkt till användarkontot och behörigheter ärvs från en överordnad resurs.

Du kan även identifiera samtidighetsproblem, långvariga sökfrågor och regelbundna arbetsbelastningsmätningar genom att övervaka och granska aktiviteter i SQL Server.

Lagring

Lagring är en av de viktigaste faktorerna för ett databassystems prestanda. I och med ökningen av serverarnas processorkraft och storskaligt minnesstöd blir det nästan nödvändigt för databaserna att tillåta mer lagringskapacitet i systemet.

PostgreSQL är en objektrelationell databas, medan Microsoft SQL Server är ett relationellt databassystem. Detta innebär att PostgreSQL erbjuder mer komplexa datatyper och tillåter objektsarv, även om det även gör det mer komplicerat att arbeta med PostgreSQL. Den har en enda ACID-kompatibel lagringsmotor och initierar en ny systemprocess med dess minnesallokering för varje klientanslutning. När antalet klientanslutningar i systemen ökar måste därför mer minne allokeras.

SQL Server år 2016 och senare kan använda högst hundra datorer eller virtuella maskiner med högst fem instanser som körs per dator. Detta beror dock även på dess utgåva. Enterprise-utgåvan tillåter en maximal bandbredd, vilket innebär att fler lagringsmöjligheter skulle beviljas. Medan den senaste standardutgåvan tillåter användning av upp till 128 GB minne, kan du använda obegränsat minne i Enterprise-versionen.

Stöd och community

PostgreSQL släpper regelbundet uppdaterade kostnadsfria versioner. Alldeles nyss har PostgreSQL Global Development Group släppt en uppdatering till alla versioner av databassystemet som stöds, vilket åtgärdar över 55 fel som har rapporterats under de senaste tre månaderna. PostgreSQL har ett stort community av utvecklare, tredjepartsföretag och entusiaster som ger stöd och som även försöker utveckla systemet genom att åtgärda de rapporterade felen.

SQL Server släpper en ny version med några års mellanrum. Supportkostnaderna beror på licensvillkoren. Även Microsoft SQL Server har ett support-community, där databasanalytiker, utvecklare, systemadministratörer och alla som är intresserade av plattformen kan ställa frågor eller lära sig mer om SQL Server genom podcasts och webbsändningar som SQL Server Radio med Guy Glantser och Eitan Blumin. Där får användarna veta mycket om SQL Server och dess kompatibilitet med andra Microsoft-verktyg.

Både PostgreSQL och SQL Server kan utrustas med plugins. Priset och kompatibiliteten beror på pluginet. Plugins kan vara till hjälp för att hantera, rensa, säkerhetskopiera databasen eller annat.

Adminer är exempelvis ett datahanteringsverktyg och kan användas för att hantera data i både PostgreSQL och MS SQL Server. Flera andra databasplugins kan användas för att förbättra effektiviteten i din databas, nämligen: WP-Optimize, Better Search Replace, WP Database Backup, för att nämna några. När du uppgraderar ett databassystem kan det uppstå kostnader för datamigrering, men det är normalt för alla andra standard-DBMS.

PostgreSQL meddelande om upptäckt bugg
PostgreSQL meddelande om upptäckt bugg (Bildkälla: PostgreSQL)

Utlösare och händelser

PostgreSQL har olika avancerade utlösare som du kan välja mellan beroende på ditt användningsområde. Utlösande händelser som stöds är AFTER, BEFORE och INSTEAD OF, och de kan användas för INSERT-, UPDATE- och DELETE-händelser för att manipulera data. Som tidigare nämnts kan PostgreSQL köra dessa utlösare dynamiskt och behöver inte kompilera dem till en .dll-fil innan de utförs. Ovanstående funktioner kan användas för att utföra en komplex fråga när utlösaren anropas.

SQL Server erbjuder olika utlösare för olika typer av databashändelser, nämligen DML-utlösare, DDL-utlösare och logon-utlösare:

  • DML-utlösare eller utlösare för datamanipuleringsspråk är utlösare som används för att manipulera data genom att infoga, uppdatera eller ta bort poster.
  • DDL-utlösare används för DDL-händelser (Data Definition Language), t.ex. för att skapa, ta bort eller ändra en databas.
  • Utlösare för inloggning används för inloggningshändelser, t.ex. när en användarsession upprättas. Dessa utlösare startar efter godkänd autentisering och innan användarsessionen upprättas. De är användbara för granskning och kontroll av inloggningsaktivitet.

Vyer

Vyer är i princip virtuella tabeller som inte lagrar data fysiskt. De används generellt av säkerhetsskäl för att begränsa användarnas tillgång till data. Både PostgreSQL och SQL Server stöder uppdaterbara vyer.

I PostgreSQL sker dock inte uppdateringarna automatiskt om inte följande förutsättningar är uppfyllda:

  • Det bör finnas ett avsnitt i FROM-klausulen i den sökningen för den vyn. Avsnittet kan vara från en tabell eller en annan uppdaterbar vy.
  • Det får inte finnas några fönsterfunktioner, aggregeringsfunktioner eller funktioner som returnerar en uppsättning i urvalslistan.
  • Frågan får inte innehålla kommandona HAVING, LIMIT, DISTINCT, WITH, INTERSECT, EXCEPT, OFFSET eller LIMIT på högsta nivå.

Det är nästan omöjligt att uppdatera de vyer som har skapats med komplexa frågor. Å andra sidan kan komplexa vyer uppdateras med hjälp av regler. Även om PostgreSQL kanske inte tillhandahåller möjligheten att köra materialiserade vyer har den en modul som heter matviews, som kan hjälpa till att bygga om alla materialiserade vyer.

I SQL Server kan vyer uppdateras automatiskt, och det finns stöd för både användardefinierade och systemdefinierade vyer. Dessutom uppdateras två tabellvyer samtidigt om de har olika nycklar och uppdateringsförklaringen inte omfattar mer än en tabell.

Dessutom kan användaren använda utlösare för att uppdatera komplexa vyer. SQL Server erbjuder även möjligheten att köra materialiserade vyer, även kallat indexerade vyer. Till skillnad från materialiserade vyer i andra relationsdatabaser är indexerade vyer synkroniserade med de underliggande uppgifterna och uppdateras därför automatiskt.

Brister hos SQL Server och PostgreSQL

Även om vi har diskuterat alla detaljer om PostgreSQL och SQL Server har båda sina nackdelar.

Även om PostgreSQL är kostnadsfritt så ägs det inte av en enda organisation. På grund av detta har det kämpat för att hitta fotfäste bland massorna, trots att det är väldigt omskrivet. PostgreSQL fokuserar även mer på kompatibilitet än på snabbhet. Modifieringar som skapas för att öka hastigheten kräver således mer arbete.

Å andra sidan har SQL Server ofta kritiserats för sitt dåliga användargränssnitt. Den har komplexa funktioner för prestandastyrning och inget inhemskt stöd för källkontroll. Om du använder den för ditt företag kan företagsversionen bränna ett hål i fickan. Enbart SQL Server 2019 enterprise edition kostar 13 748 dollar – det är som tretton rum med Ikea-möbler! Licensieringarna kan dessutom vara ganska svåra att förstå och förändras kontinuerligt.

Om PostgreSQL och SQL Server inte riktigt faller dig i smaken kan du prova MongoDB eller MariaDB för ditt unika användningsområde.

MongoDB är ett dokumentorienterat, fritt användbart, plattformsoberoende databasprogram som enkelt kan utnyttja JSON-liknande dokument.

MariaDB, å andra sidan, är en kommersiellt stödd förgrening av MySQL vars pluggbara och specialbyggda lagringsmotorer stöder arbetsbelastningar som generellt kräver ett stort antal olika databaser.

PostgreSQL vs SQL Server: Vilken databas ska du välja?

Både PostgreSQL och SQL Server är allmänt använda relationsdatabaser, men vem vinner? Av jämförelserna ovan framgår att PostgreSQL övertrumfar SQL Server i flera scenarier. Den har inte bara öppen källkod och är kostnadsfri, utan har även flera funktioner som är lätt tillgängliga och som kan implementeras automatiskt, till skillnad från Microsoft SQL Server.

Dessutom har PostgreSQL ett mer lämpligt system för samtidighetshantering. Den kan på ett briljant sätt hantera fall där flera processer kan få tillgång till och ändra delade data samtidigt.

Om du driver ett litet företag kan PostgreSQL vara ett lämpligt val för dig eftersom den är kostnadsfri och erbjuder flera funktioner som är användbara för att hantera data. Den är lätt att installera och kan implementeras i nästan alla typer av operativsystem. För företag med en stor investering i Microsoft SQL Server-stacken har SQL Server dock sina fördelar framför PostgreSQL.

Sammanfattning

Sammantaget är både PostgreSQL och SQL Server funktionella och mångfacetterade databaser. Medan PostgreSQL kan användas för nästan alla operativsystem och är lämplig för små företag som kräver maximal funktionalitet, är SQL Server bäst för stora företag, särskilt de som kräver användning av Microsoftprodukter.

I den här artikeln har vi tagit upp de största skillnaderna mellan PostgreSQL och SQL Server och deras funktioner. Det ”rätta” valet kommer till slut att bero på hur du planerar att driva ditt företag.

PostgreSQL vs SQL Server, vilken databas skulle du planera att använda för ditt nästa projekt och varför? Vi vill gärna höra dina tankar! Dela dem i kommentarsfältet nedan.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.