introduktion
relationsdatamodellen, som organiserar data i tabeller med rader och kolumner, dominerar i databashanteringsverktyg. Idag finns det andra datamodeller, inklusive NoSQL och NewSQL, men relationsdatabashanteringssystem (rdbmss) förblir dominerande för lagring och hantering av data över hela världen.
den här artikeln jämför och kontrasterar tre av de mest implementerade RDBMS: erna med öppen källkod: SQLite, MySQL och PostgreSQL. Specifikt kommer det att undersöka de datatyper som varje RDBMS använder, deras fördelar och nackdelar och situationer där de bäst optimeras.
lite om databashanteringssystem
databaser är logiskt modellerade kluster av information eller data. A databashanteringssystem (DBMS), å andra sidan, är ett datorprogram som interagerar med en databas. Med ett DBMS kan du styra åtkomst till en databas, skriva data, köra frågor och utföra andra uppgifter relaterade till databashantering. Även om databashanteringssystem ofta kallas ”databaser” är de två termerna inte utbytbara. En databas kan vara någon insamling av data, inte bara en lagras på en dator, medan en DBMS är den programvara som låter dig interagera med en databas.
alla databashanteringssystem har en underliggande modell som strukturerar hur data lagras och nås. Ett relationsdatabashanteringssystem är ett DBMS som använder relationsdatamodellen. I denna modell organiseras data i tabeller, som i samband med RDBMSs mer formellt kallas relationer. En relation är en uppsättning tupler, eller rader i en tabell, där varje tupel delar en uppsättning attribut eller kolumner:
de flesta relationsdatabaser använder structured query language (SQL) för att hantera och fråga data. Men många RDBMS använder sin egen specifika dialekt av SQL, som kan ha vissa begränsningar eller tillägg. Dessa tillägg innehåller vanligtvis extra funktioner som gör det möjligt för användare att utföra mer komplexa operationer än de annars kunde med standard SQL.
notera: Termen ”standard SQL” kommer upp flera gånger i den här guiden. SQL-standarder upprätthålls gemensamt av American National Standards Institute (ANSI), International Organization for Standardization (ISO) och International Electrotechnical Commission (IEC). När den här artikeln nämner ”standard SQL” eller ”SQL-standarden” hänvisar den till den aktuella versionen av SQL-standarden som publiceras av dessa organ.
det bör noteras att den fullständiga SQL-standarden är stor och komplex: full core SQL:2011-överensstämmelse kräver 179 funktioner. På grund av detta stöder de flesta RDBMS inte hela standarden, även om vissa kommer närmare full överensstämmelse än andra.
varje kolumn tilldelas en datatyp som dikterar vilken typ av poster som är tillåtna i den kolumnen. Olika RDBMS implementerar olika datatyper, som inte alltid är direkt utbytbara. Några vanliga datatyper inkluderar datum, strängar, heltal och Booleaner.
numeriska datatyper kan antingen signeras, vilket innebär att de kan representera både positiva och negativa tal, eller osignerade, vilket innebär att de bara kan representera positiva tal. Till exempel kan MySQL: s tinyint
datatyp innehålla 8 bitar data, vilket motsvarar 256 möjliga värden. Det signerade intervallet för denna datatyp är från -128 till 127, medan det osignerade intervallet är från 0 till 255.
Ibland kommer en Databasadministratör att införa en begränsning på en tabell för att begränsa vilka värden som kan matas in i den. En begränsning gäller vanligtvis för en viss kolumn, men vissa begränsningar kan också gälla för en hel tabell. Här är några begränsningar som vanligtvis används i SQL:
-
UNIQUE
: Att tillämpa denna begränsning på en kolumn säkerställer att inga två poster i den kolumnen är identiska. -
NOT NULL
: denna begränsning säkerställer att en kolumn inte har någraNULL
poster. -
PRIMARY KEY
: en kombination avUNIQUE
ochNOT NULL
PRIMARY KEY
begränsningen säkerställer att ingen post i kolumnen ärNULL
och att varje post är distinkt. -
FOREIGN KEY
: AFOREIGN KEY
är en kolumn i en tabell som hänvisar tillPRIMARY KEY
I en annan tabell. Denna begränsning används för att länka samman två tabeller: poster till kolumnenFOREIGN KEY
måste redan finnas i den överordnade kolumnenPRIMARY KEY
för att skrivprocessen ska lyckas. -
CHECK
: denna begränsning begränsar intervallet av värden som kan matas in i en kolumn. Om din ansökan till exempel endast är avsedd för invånare i Alaska kan du lägga till enCHECK
begränsning i en postnummerkolumn för att endast tillåta poster mellan 99501 och 99950.
om du vill lära dig mer om databashanteringssystem, kolla in vår artikel om att förstå SQL-och NoSQL-databaser och olika databasmodeller.
Nu när vi har täckt relationsdatabashanteringssystem i allmänhet, låt oss gå vidare till den första av de tre relationsdatabaserna med öppen källkod den här artikeln kommer att täcka: SQLite.
SQLite
SQLite är en fristående, filbaserad och helt öppen källkod RDBMS känd för sin bärbarhet, tillförlitlighet och stark prestanda även i miljöer med lågt minne. Dess transaktioner är ACID-kompatibla, även i fall där systemet kraschar eller genomgår ett strömavbrott.
SQLite-projektets webbplats beskriver det som en” serverlös ” databas. De flesta relationsdatabasmotorer implementeras som en serverprocess där program kommunicerar med värdservern genom en interprocess-kommunikation som vidarebefordrar förfrågningar. Med SQLite läser dock alla processer som kommer åt databasen direkt från och skriver till databasdiskfilen. Detta förenklar sqlites installationsprocess, eftersom det eliminerar något behov av att konfigurera en serverprocess. På samma sätt behövs ingen konfiguration för program som använder SQLite-databasen: allt de behöver är åtkomst till disken.
SQLite är fri och öppen källkod, och ingen särskild licens krävs för att använda den. Projektet erbjuder dock flera tillägg-var och en för en engångsavgift-som hjälper till med komprimering och kryptering. Dessutom erbjuder projektet olika kommersiella supportpaket, var och en för en årlig avgift.
SQLite stöds datatyper
SQLite tillåter en mängd olika datatyper, organiserade i följande lagringsklasser:
datatyp | förklaring |
---|---|
null |
innehåller alla NULL värden. |
integer |
signerade heltal, lagrade i 1, 2, 3, 4, 6, eller 8 byte beroende på värdet av värdet. |
real |
reella tal, eller flyttalsvärden, lagrade som 8-byte flyttalsnummer. |
text |
textsträngar lagrade med databaskodningen, som antingen kan vara UTF-8, UTF-16be eller UTF-16LE. |
blob |
varje blob av data, med varje blob lagras exakt som den var inmatad. |
i samband med SQLite anses termerna” lagringsklass ”och” datatyp ” utbytbara. Om du vill lära dig mer om sqlites datatyper och SQLite-typaffinitet, kolla in Sqlites officiella dokumentation om ämnet.
fördelar med SQLite
- litet fotavtryck: som namnet antyder är SQLite-biblioteket mycket lätt. Även om utrymmet det använder varierar beroende på systemet där det är installerat, kan det ta mindre än 600 KB utrymme. Dessutom är det helt fristående, vilket innebär att det inte finns några externa beroenden du måste installera på ditt system för att SQLite ska fungera.
- användarvänlig: SQLite beskrivs ibland som en” nollkonfiguration ” -databas som är klar för användning ur lådan. SQLite körs inte som en serverprocess, vilket innebär att den aldrig behöver stoppas, startas eller startas om och inte kommer med några konfigurationsfiler som behöver hanteras. Dessa funktioner hjälper till att effektivisera vägen från att installera SQLite till att integrera den med en applikation.
- bärbar: Till skillnad från andra databashanteringssystem, som vanligtvis lagrar data som ett stort antal separata filer, lagras en hel SQLite-databas i en enda fil. Den här filen kan placeras var som helst i en kataloghierarki och kan delas via flyttbart media eller filöverföringsprotokoll.
nackdelar med SQLite
- begränsad samtidighet: även om flera processer kan komma åt och fråga en SQLite-databas samtidigt, kan endast en process göra ändringar i databasen vid varje given tidpunkt. Det betyder att SQLite stöder större samtidighet än de flesta andra inbyggda databashanteringssystem, men inte lika mycket som klient/server RDBMS som MySQL eller PostgreSQL.
- ingen användarhantering: databassystem har ofta stöd för användare eller hanterade anslutningar med fördefinierade åtkomstbehörigheter till databasen och tabellerna. Eftersom SQLite läser och skriver direkt till en vanlig diskfil är de enda tillämpliga åtkomstbehörigheterna de typiska åtkomstbehörigheterna för det underliggande operativsystemet. Detta gör SQLite till ett dåligt val för applikationer som kräver flera användare med speciella åtkomstbehörigheter.
- säkerhet: en databasmotor som använder en server kan i vissa fall ge bättre skydd mot buggar i klientprogrammet än en serverlös databas som SQLite. Till exempel kan herrelösa pekare i en klient inte skada minnet på servern. Eftersom en server är en enda beständig process kan en klient-serverdatabas också kontrollera dataåtkomst med mer precision än en serverlös databas, vilket möjliggör mer finkornig låsning och bättre samtidighet.
När ska man använda SQLite
- inbäddade applikationer: SQLite är ett utmärkt val av databas för applikationer som behöver portabilitet och inte kräver framtida expansion. Exempel är lokala applikationer för en användare och mobila applikationer eller spel.
- Disk access replacement: i de fall där ett program behöver läsa och skriva filer till disk direkt, kan det vara fördelaktigt att använda SQLite för ytterligare funktionalitet och enkelhet som kommer med att använda SQL.
- testning: För många applikationer kan det vara overkill att testa deras funktionalitet med en DBMS som använder en extra serverprocess. SQLite har en in-memory-läge som kan användas för att köra tester snabbt utan overhead av faktiska databasoperationer, vilket gör det till ett idealiskt val för testning.
när du inte ska använda SQLite
- arbeta med massor av data: SQLite kan tekniskt stödja en databas upp till 140 TB i storlek, så länge hårddisken och filsystemet också stöder databasens storlekskrav. SQLite-webbplatsen rekommenderar dock att alla databaser som närmar sig 1TB placeras i en centraliserad klient-serverdatabas, eftersom en SQLite-databas av den storleken eller större skulle vara svår att hantera.
- höga skrivvolymer: SQLite tillåter endast en skrivoperation att äga rum vid varje given tidpunkt, vilket väsentligt begränsar dess genomströmning. Om din ansökan kräver massor av skrivoperationer eller flera samtidiga författare kanske SQLite inte är tillräckligt för dina behov.
- nätverksåtkomst krävs: Eftersom SQLite är en serverlös databas ger den inte direkt nätverksåtkomst till dess data. Denna åtkomst är inbyggd i applikationen, så om data i SQLite finns på en separat maskin från applikationen kommer det att kräva en motor-till-disk-länk med hög bandbredd över nätverket. Detta är en dyr, ineffektiv lösning, och i sådana fall kan en klient-server DBMS vara ett bättre val.
MySQL
enligt DB-Engines Ranking har MySQL varit den mest populära open-source RDBMS sedan webbplatsen började spåra databas popularitet i 2012. Det är en funktionsrik produkt som driver många av världens största webbplatser och applikationer, inklusive Twitter, Facebook, Netflix och Spotify. Att komma igång med MySQL är relativt enkelt, till stor del tack vare dess uttömmande dokumentation och stora community av utvecklare, liksom överflödet av MySQL-relaterade resurser online.
MySQL designades för hastighet och tillförlitlighet, på bekostnad av fullständig efterlevnad av standard SQL. MySQL-utvecklarna arbetar kontinuerligt mot närmare efterlevnad av standard SQL, men det ligger fortfarande bakom andra SQL-implementeringar. Det kommer dock med olika SQL-lägen och tillägg som tar det närmare efterlevnaden. Till skillnad från applikationer som använder SQLite får applikationer som använder en MySQL-databas åtkomst till den via en separat demonprocess. Eftersom serverprocessen står mellan databasen och andra applikationer möjliggör det större kontroll över vem som har åtkomst till databasen.
MySQL har inspirerat en mängd tredjepartsapplikationer, verktyg och integrerade bibliotek som utökar dess funktionalitet och hjälper till att göra det lättare att arbeta med. Några av de mer använda av dessa tredjepartsverktyg är phpMyAdmin, Dbeaver och HeidiSQL.
MySQL: s datatyper som stöds
MySQL: s datatyper kan organiseras i tre breda kategorier: numeriska typer, datum-och tidstyper och strängtyper.
numeriska typer:
datatyp | förklaring |
---|---|
tinyint |
ett mycket litet heltal. Det signerade intervallet för denna numeriska datatyp är -128 till 127, medan det osignerade intervallet är 0 till 255. |
smallint |
ett litet heltal. Det signerade intervallet för denna numeriska typ är -32768 till 32767, medan det osignerade intervallet är 0 till 65535. |
mediumint |
ett medelstort heltal. Det signerade intervallet för denna numeriska datatyp är -8388608 till 8388607, medan det osignerade intervallet är 0 till 16777215. |
int eller integer |
ett normalstor heltal. Det signerade intervallet för denna numeriska datatyp är -2147483648 till 2147483647, medan det osignerade intervallet är 0 till 4294967295. |
bigint |
ett stort heltal. Det signerade intervallet för denna numeriska datatyp är -9223372036854775808 till 9223372036854775807, medan det osignerade intervallet är 0 till 18446744073709551615. |
float |
ett litet (enkel precision) flytpunktsnummer. |
double double precision , eller real |
en normalstor (dubbel precision) flyttal nummer. |
dec decimal fixed , eller numeric |
ett packat fastpunktsnummer. Visningslängden för poster för den här datatypen definieras när kolumnen skapas, och varje post följer den längden. |
bool eller boolean |
en boolesk är en datatyp som bara har två möjliga värden, vanligtvis antingen true eller false . |
bit |
en bitvärdestyp för vilken du kan ange antalet bitar per värde, från 1 till 64. |
datum-och tidstyper:
Data Type | Explanation |
---|---|
date |
A date, represented as YYYY-MM-DD . |
datetime |
A timestamp showing the date and time, displayed as YYYY-MM-DD HH:MM:SS . |
timestamp |
A timestamp indicating the amount of time since the Unix epoch (00:00:00 on January 1, 1970). |
time |
A time of day, displayed as HH:MM:SS . |
year |
A year expressed in either a 2 or 4 digit format, with 4 digits being the default. |
String types:
Data Type | Explanation |
---|---|
char |
A fixed-length string; inlägg av denna typ är vadderade till höger med mellanslag för att uppfylla den angivna längden när de lagras. |
varchar |
en sträng med variabel längd. |
binary |
liknande typenchar , men en binär bytesträng med en angiven längd snarare än en icke-binär teckensträng. |
varbinary |
liknande typenvarchar , men en binär bytesträng med en variabel längd snarare än en icke-binär teckensträng. |
blob |
A binary string with a maximum length of 65535 (2^16 – 1) bytes of data. |
tinyblob |
A blob column with a maximum length of 255 (2^8 – 1) bytes of data. |
mediumblob |
A blob column with a maximum length of 16777215 (2^24 – 1) bytes of data. |
longblob |
A blob column with a maximum length of 4294967295 (2^32 – 1) bytes of data. |
text |
A string with a maximum length of 65535 (2^16 – 1) characters. |
tinytext |
A text column with a maximum length of 255 (2^8 – 1) characters. |
mediumtext |
A text column with a maximum length of 16777215 (2^24 – 1) characters. |
longtext |
A text column with a maximum length of 4294967295 (2^32 – 1) characters. |
enum |
en uppräkning, som är ett strängobjekt som tar ett enda värde från en lista med värden som deklareras när tabellen skapas. |
set |
liknande en uppräkning, ett strängobjekt som kan ha noll eller flera värden, som var och en måste väljas från en lista med tillåtna värden som anges när tabellen skapas. |
fördelar med MySQL
- popularitet och användarvänlighet: Som ett av världens mest populära databassystem finns det ingen brist på databasadministratörer som har erfarenhet av att arbeta med MySQL. På samma sätt finns det ett överflöd av dokumentation i tryck och online om hur man installerar och hanterar en MySQL-databas, liksom ett antal tredjepartsverktyg — som phpMyAdmin — som syftar till att förenkla processen att komma igång med databasen.
- säkerhet: MySQL installeras med ett skript som hjälper dig att förbättra säkerheten i din databas genom att ställa in installationens lösenordsäkerhetsnivå, definiera ett lösenord för rotanvändaren, ta bort anonyma konton och ta bort testdatabaser som som standard är tillgängliga för alla användare. Till skillnad från SQLite stöder MySQL användarhantering och låter dig ge åtkomstbehörigheter på användarbasis.
- hastighet: genom att välja att inte implementera vissa funktioner i SQL kunde MySQL-utvecklarna prioritera hastighet. Medan nyare benchmark-tester visar att andra RDBMS som PostgreSQL kan matcha eller åtminstone komma nära MySQL när det gäller hastighet, har MySQL fortfarande ett rykte som en mycket snabb databaslösning.
- replikering: MySQL stöder ett antal olika typer av replikering, vilket är praxis att dela information över två eller flera värdar för att förbättra tillförlitlighet, tillgänglighet och feltolerans. Detta är användbart för att ställa in en databas backup lösning eller horisontellt skalning en databas.
nackdelar med MySQL
- kända begränsningar: Eftersom MySQL designades för snabbhet och användarvänlighet snarare än full SQL-överensstämmelse, kommer det med vissa funktionella begränsningar. Det saknar till exempel stöd för
FULL JOIN
– klausuler. - licensiering och proprietära funktioner: MySQL är dubbellicensierad programvara, med en gratis och öppen källkodsutgåva licensierad under GPLv2 och flera betalda kommersiella utgåvor som släppts under proprietära licenser. På grund av detta är vissa funktioner och plugins endast tillgängliga för de egna utgåvorna.
- långsam utveckling: Sedan MySQL-projektet förvärvades av Sun Microsystems 2008 och senare av Oracle Corporation 2009 har det förekommit klagomål från användare om att utvecklingsprocessen för DBMS har avtagit avsevärt, eftersom samhället inte längre har byrån att snabbt reagera på problem och genomföra förändringar.
när du ska använda MySQL
- distribuerade operationer: MySQL: s replikationsstöd gör det till ett utmärkt val för distribuerade databasinställningar som primär-sekundär eller primär-primär arkitekturer.
- webbplatser och webbapplikationer: MySQL driver många webbplatser och applikationer över internet. Detta är till stor del tack vare hur lätt det är att installera och konfigurera en MySQL-databas, liksom dess totala hastighet och skalbarhet på lång sikt.
- förväntad framtida tillväxt: MySQL: s replikeringsstöd kan underlätta horisontell skalning. Dessutom är det en relativt enkel process att uppgradera till en kommersiell MySQL-produkt, som MySQL Cluster, som stöder automatisk sharding, en annan horisontell skalningsprocess.
när du inte ska använda MySQL
- SQL-överensstämmelse är nödvändig: Eftersom MySQL inte försöker implementera hela SQL-standarden är det här verktyget inte helt SQL-kompatibelt. Om fullständig eller till och med nästan fullständig SQL-efterlevnad är ett måste för ditt användningsfall kanske du vill använda en mer fullständigt kompatibel DBMS.
- samtidighet och stora datavolymer: även om MySQL i allmänhet fungerar bra med lästunga operationer kan samtidiga lässkrivningar vara problematiska. Om din ansökan kommer att ha många användare att skriva data till det på en gång, kan en annan RDBMS som PostgreSQL vara ett bättre val av Databas.
PostgreSQL
PostgreSQL, även känd som Postgres, räknar sig själv som ”den mest avancerade relationsdatabasen med öppen källkod i världen.”Det skapades med målet att vara mycket utbyggbart och standardkompatibelt. PostgreSQL är en objektrelationsdatabas, vilket innebär att även om det främst är en relationsdatabas innehåller den också funktioner-som tabellarv och funktionsöverbelastning — som oftare är associerade med objektdatabaser.
Postgres kan effektivt hantera flera uppgifter samtidigt, en egenskap som kallas samtidighet. Det uppnår detta utan läslås tack vare dess implementering av Multiversion Concurrency Control (MVCC), vilket säkerställer atomicitet, konsistens, isolering och hållbarhet i sina transaktioner, även känd som SYRAÖVERENSSTÄMMELSE.
PostgreSQL används inte lika mycket som MySQL, men det finns fortfarande ett antal tredjepartsverktyg och bibliotek som är utformade för att förenkla arbetet med PostgreSQL, inklusive pgAdmin och Postbird.
PostgreSQL stöds datatyper
PostgreSQL stöder numeriska, sträng, och datum och tid datatyper som MySQL. Dessutom stöder den datatyper för geometriska former, nätverksadresser, bitsträngar, textsökningar och JSON-poster, samt flera idiosynkratiska datatyper.
numeriska typer:
datatyp | förklaring |
---|---|
bigint |
ett signerat 8 byte heltal. |
bigserial |
An autoincrementing 8 byte integer. |
double precision |
An 8 byte double precision floating-point number. |
integer |
A signed 4 byte integer. |
numeric or decimal |
An number of selectable precision, recommended for use in cases where exactness is crucial, such as monetary amounts. |
real |
A 4 byte single precision floating-point number. |
smallint |
A signed 2 byte integer. |
smallserial |
An autoincrementing 2 byte integer. |
serial |
An autoincrementing 4 byte integer. |
Character types:
Data Type | Explanation |
---|---|
character |
A character string with a specified fixed length. |
character varying or varchar |
A character string with a variable but limited length. |
text |
A character string of a variable, unlimited length. |
Date and time types:
Data Type | Explanation |
---|---|
date |
A calendar date consisting of the day, month, and year. |
interval |
A time span. |
time or time without time zone |
A time of day, not including the time zone. |
time with time zone |
A time of day, including the time zone. |
timestamp or timestamp without time zone |
A date and time, not including the time zone. |
timestamp with time zone |
A date and time, including the time zone. |
Geometric types:
Data Type | Explanation |
---|---|
box |
A rectangular box on a plane. |
circle |
A circle on a plane. |
line |
An infinite line on a plane. |
lseg |
A line segment on a plane. |
path |
A geometric path on a plane. |
point |
A geometric point on a plane. |
polygon |
A closed geometric path on a plane. |
Network address types:
Data Type | Explanation |
---|---|
cidr |
An IPv4 or IPv6 network address. |
inet |
An IPv4 or IPv6 host address. |
macaddr |
A Media Access Control (MAC) address. |
Bit string types:
Data Type | Explanation |
---|---|
bit |
A fixed-length bit string. |
bit varying |
A variable-length bit string. |
Text search types:
Data Type | Explanation |
---|---|
tsquery |
A text search query. |
tsvector |
A text search document. |
JSON types:
Data Type | Explanation |
---|---|
json |
Textual JSON data. |
jsonb |
Decomposed binary JSON data. |
Other data types:
Data Type | Explanation |
---|---|
boolean |
A logical Boolean, representing either true or false . |
bytea |
Short for ”byte array”, this type is used for binary data. |
money |
An amount of currency. |
pg_lsn |
A PostgreSQL Log Sequence Number. |
txid_snapshot |
A user-level transaction ID snapshot. |
uuid |
A universally unique identifier. |
xml |
XML data. |
Advantages of PostgreSQL
- SQL compliance: More so than SQLite or MySQL, PostgreSQL aims to closely adhere to SQL standards. According to the official PostgreSQL documentation, PostgreSQL supports 160 out of the 179 features required for full core SQL:2011 efterlevnad, förutom en lång lista med valfria funktioner.
- öppen källkod och community-driven: ett helt open source-projekt, PostgreSQL källkod är utvecklad av en stor och hängiven gemenskap. På samma sätt upprätthåller och bidrar Postgres-communityn till många online-resurser som beskriver hur man arbetar med DBMS, inklusive den officiella dokumentationen, PostgreSQL wiki och olika onlineforum.
- Extensible: användare kan utöka PostgreSQL programmatiskt och i farten genom sin katalogdrivna drift och dess användning av dynamisk laddning. Man kan ange en objektkodfil, till exempel ett delat bibliotek, och PostgreSQL laddar det efter behov.
nackdelar med PostgreSQL
- minnesprestanda: för varje ny klientanslutning gafflar PostgreSQL en ny process. Varje ny process tilldelas cirka 10 MB minne, vilket snabbt kan läggas till för databaser med många anslutningar. Följaktligen är PostgreSQL för enkla lästunga operationer vanligtvis mindre prestanda än andra RDBMS, som MySQL.
- Popularitet: Även om det har använts mer de senaste åren, har PostgreSQL historiskt legat bakom MySQL när det gäller popularitet. En konsekvens av detta är att det fortfarande finns färre tredjepartsverktyg som kan hjälpa till att hantera en PostgreSQL-databas. På samma sätt finns det inte så många databasadministratörer med erfarenhet av att hantera en Postgres-databas jämfört med dem med MySQL-upplevelse.
när du ska använda PostgreSQL
- dataintegritet är viktigt: PostgreSQL har varit helt syra-kompatibel sedan 2001 och implementerar multiversion valutakontroll för att säkerställa att data förblir konsekvent, vilket gör det till ett starkt val av RDBMS när dataintegritet är kritisk.
- Integration med andra verktyg: PostgreSQL är kompatibel med ett brett utbud av programmeringsspråk och plattformar. Det betyder att om du någonsin behöver migrera din databas till ett annat operativsystem eller integrera det med ett specifikt verktyg, kommer det sannolikt att bli enklare med en PostgreSQL-databas än med en annan DBMS.
- komplexa operationer: Postgres stöder frågeplaner som kan utnyttja flera processorer för att svara på frågor med högre hastighet. Detta, tillsammans med sitt starka stöd för flera samtidiga författare, gör det till ett utmärkt val för komplexa operationer som datalagring och online transaktionsbehandling.
när du inte ska använda PostgreSQL
- hastighet är absolut nödvändigt: på bekostnad av hastighet designades PostgreSQL med tanke på töjbarhet och kompatibilitet. Om ditt projekt kräver snabbast möjliga läsoperationer är PostgreSQL kanske inte det bästa valet av DBMS.
- enkla inställningar: På grund av sin stora uppsättning funktioner och stark anslutning till standard SQL, kan Postgres vara overkill för enkla databasinställningar. För lästunga operationer där hastighet krävs är MySQL vanligtvis ett mer praktiskt val.
- komplex replikering: även om PostgreSQL ger starkt stöd för replikering, är det fortfarande en relativt ny funktion och vissa konfigurationer — som en primär-primär arkitektur — är endast möjliga med tillägg. Replikering är en mer mogen funktion på MySQL och många användare ser MySQL: s replikering för att vara lättare att implementera, särskilt för dem som saknar den nödvändiga databas-och systemadministrationsupplevelsen.
slutsats
idag är SQLite, MySQL och PostgreSQL de tre mest populära relationsdatabashanteringssystemen med öppen källkod i världen. Var och en har sina egna unika egenskaper och begränsningar, och utmärker sig i vissa scenarier. Det finns en hel del variabler som spelar när man bestämmer sig för en RDBMS, och valet är sällan så enkelt som att välja den snabbaste eller den med flest funktioner. Nästa gång du behöver en relationsdatabaslösning, se till att undersöka dessa och andra verktyg på djupet för att hitta den som bäst passar dina behov.
Om du vill veta mer om SQL och hur man använder den för att hantera en relationsdatabas, vi uppmuntrar dig att hänvisa till vår Hur man hanterar en SQL-databas fusklapp. Å andra sidan, om du vill lära dig om icke-relationella (eller NoSQL) databaser, kolla in vår Jämförelse av NoSQL-databashanteringssystem.