SQL vai NoSQL? Lai gan šīm divām datu bāzēm ir kopīgas iezīmes, atkarībā no paredzētā lietojuma ir iespējams iz­vē­lē­ties jums pie­mē­ro­tā­ko variantu. Turp­mā­ka­jā MongoDB un PostgreSQL sa­lī­dzi­nā­ju­mā galvenā uzmanība pievērsta ātruma un drošības faktoriem.

MongoDB: ho­ri­zon­tā­la mē­ro­go­ja­mī­ba un maksimāla elastība

Lai izprastu šajā sa­lī­dzi­nā­ju­mā iz­man­to­tās dažādās metodes, sniegsim īsu pārskatu par MongoDB un PostgreSQL datu bāzēm. MongoDB nosaukums cēlies no angļu valodas vārda „humongous” (milzīgs). Sistēma tika publicēta 2009. gadā, un tās iz­strā­dā­tājs ir 10gen (tagad MongoDB Inc.). Tā ir iz­strā­dā­ta, lai lietotāji varētu pārvaldīt milzīgus datu apjomus skaidrā un konkrētā veidā. Lai to padarītu iespējamu, NoSQL datu bāze ir īpaši elastīga un viegli mē­ro­go­ja­ma. Struk­tu­rē­tie, daļēji struk­tu­rē­tie vai ne­struk­tu­rē­tie dati tiek uzglabāti JSON līdzīgā formātā BSON dokumentu veidā. MongoDB ir rakstīta C++ valodā un joprojām tiek izplatīta visā pasaulē saskaņā ar atvērtā koda SSPL.

PostgreSQL: domājams vecmodīgs ri­si­nā­jums ar mūs­die­nī­gām priekš­ro­cī­bām

Mūsu MongoDB un PostgreSQL sa­lī­dzi­nā­ju­mā otrais ri­si­nā­jums izmanto pilnīgi atšķirīgu pieeju. PostgreSQL darbojas pilnīgi relatīvi un ir daudz­plat­for­mu, lai gan tiek at­bal­stī­ti arī ne­sais­tī­ti datu tipi. Sistēma pirmo reizi parādījās 1996. gadā un vismaz daļēji balstās uz datu bāzēm, kas kopš 1980. gadiem ir iz­strā­dā­tas Bērkli Uni­ver­si­tā­tē. Sistēma, ko uztur PostgreSQL Global De­ve­lopment Group, joprojām ir atvērta avota sistēma. PostgreSQL apgalvo, ka tā ir vis­prog­re­sī­vā­kā atvērta avota datu bāze pasaulē. Ir skaidrs, ka tā tiek novērtēta visā pasaulē par tās elas­tī­gu­mu un sta­bi­li­tā­ti. Vadības sistēma ir rakstīta C valodā un bieži vien tiek saukta vienkārši par “Postgres”.

Kādiem nolūkiem tiek izmantoti MongoDB un PostgreSQL?

No pirmā acu uzmetiena mūsu MongoDB un PostgreSQL sa­lī­dzi­nā­jums liecina, ka abas datu bāzes var izmantot līdzīgiem mērķiem. Abas ri­si­nā­ju­mi ir labi pārdomāti, ļoti fun­kcio­nā­li un sa­lī­dzi­no­ši elastīgi, no­dro­ši­not kārtību un pār­ska­tā­mī­bu pat tad, ja jāstrādā ar lieliem vai pie­au­go­šiem datu apjomiem. De­ta­li­zē­tā­ka analīze liecina, ka uz­ņē­mu­miem ir jāizlemj at­bil­sto­ši savām prasībām, kura no abām datu bāzēm ir labāka un kura atbilst to va­ja­dzī­bām.

NoSQL ri­si­nā­jums ir īpaši piemērots, ja jums ir ne­pie­cie­ša­ma sistēma, kas var at­tīs­tī­ties līdzi jūsu prasībām. Tas attiecas ne tikai uz datu apjomu, bet arī uz dažādiem datu tipiem. MongoDB ir ho­ri­zon­tā­li skalējams, kas padara šo sistēmu par ideālu ri­si­nā­ju­mu e-ko­mer­ci­jas nozarē, kur darījumu dati ir jā­pār­rai­da ātri un droši. Šīs priekš­ro­cī­bas kopā ar elas­tī­gu­mu attiecībā uz datu tipiem nodrošina, ka MongoDB ir lieliska izvēle satura pār­val­dī­bas sistēmām. Ja jums ne­pie­cie­ša­mas kon­fi­gu­rā­ci­jas opcijas un plašas analīzes funkcijas reālajā laikā, MongoDB ir vērts apsvērt.

PostgreSQL ir piemērots plaša mēroga tīmekļa lie­to­jum­prog­ram­mām un nodrošina vērtīgus resursus e-ko­mer­ci­jai. Šī sistēma ir laba izvēle lie­to­jum­prog­ram­mām mākonī un lietu internetā. PostgreSQL ir arī ļoti efektīvs sadarbībā ar citām datu bāzēm.

Fun­kcio­na­li­tā­te

MongoDB un PostgreSQL izmanto ļoti at­šķi­rī­gas metodes, lai sasniegtu savus mērķus. Kā tīrs NoSQL ri­si­nā­jums, MongoDB pilnībā atsakās no stingrām re­la­tī­va­jām tabulām un tā vietā darbojas dokumentu orientētā veidā. Šie binārie JSON dokumenti (sauc par BSON) tiek apkopoti ko­lek­ci­jās. Sistēma balstās uz atslēgas-vērtības pāriem. Atslēga šeit sastāv no rakstzīm­ju virknes; vērtības var būt citi dokumenti, Boole’a vērtības, skaitļi vai pilnīgi atšķirīgi failu tipi. JSON dokumenta struktūru var viegli mainīt, dzēšot vai pie­vie­no­jot at­se­viš­ķus laukus. Lai iden­ti­fi­cē­tu konkrētus do­ku­men­tus, tiek no­dro­ši­nā­ta teksta meklēšana. Tiek ņemti vērā struk­tu­rē­ti, daļēji struk­tu­rē­ti un ne­struk­tu­rē­ti dati.

Sa­lī­dzi­nā­ju­mā PostgreSQL izmanto relatīvo pieeju. Lai gan pastāv daudzas NoSQL al­ter­na­tī­vas, tabulu sistēmas iz­man­to­ša­nai ir arī savas priekš­ro­cī­bas. Svarīga PostgreSQL iezīme ir tā, ka pār­val­dī­bas sistēma ir daudz elas­tī­gā­ka nekā citas SQL opcijas un atļauj kolonnas ar ap­akš­vēr­tī­bām. Datubāzes pār­val­dī­bas sistēma balstās arī uz ārējām atslēgām un trigeriem. Vaicājumi tiek veikti, iz­man­to­jot klasisko klientu-servera principu. Faili un sa­vie­no­ju­mi tiek pār­val­dī­ti ar centrālā servera kom­po­nen­ta „pos­tmas­ter” palīdzību. Tad dažādi klienti nosūta savus vai­cā­ju­mus. PostgreSQL atbalsta daudzus datu tipus, lai gan tie iepriekš jā­struk­tu­rē.

Veikt­spē­ja

MongoDB nosaukums liecina, ka tas spēj apstrādāt milzīgus datu apjomus bez jebkādām būtiskām problēmām. Sistēma pilnībā atbilst šim ap­gal­vo­ju­mam. Datubāze ir ho­ri­zon­tā­li skalējama un nav atkarīga no at­se­viš­ķas ierīces aprēķinu jaudas. Pa­tei­co­ties plaša spektra ap­ara­tū­ras opciju kom­bi­nā­ci­jai, teo­rē­tis­ki tās veikt­spē­jai un uz­gla­bā­ša­nas apjomam nav ie­ro­be­žo­ju­mu. Pat ja daudzi lietotāji vien­lai­kus piekļūst datiem, vaicājumu ātrums paliek augsts. Sharding sadala slodzi starp dažādām datoriem. Tas ne tikai veicina labāku veikt­spē­ju, bet arī nodrošina vislabāko iespējamo aiz­sar­dzī­bu pret ie­spē­ja­mām servera kļūmēm.

PostgreSQL, no otras puses, datus skalē vertikāli un tādēļ nevar pilnībā konkurēt ar NoSQL ri­si­nā­ju­ma veikt­spē­ju. Tomēr relatīvās sistēmas veikt­spē­ja ir ie­spai­dī­ga. Piemēram, ir iespējams vien­lai­kus veikt rak­stī­ša­nas un lasīšanas ope­rā­ci­jas. Datu au­ten­ti­fi­kā­ci­ja un pa­dzi­ļi­nā­ta datu analīze ar mazu kavēšanos bieži vien ir labāka ar PostgreSQL nekā ar daudziem tā ko­mer­ciā­la­jiem kon­ku­ren­tiem. Datubāze strādā ar sa­rež­ģī­tiem datu tipiem un vai­cā­ju­miem, tādēļ tā var gūt punktus arī liela apjoma datu apstrādē. Papildu resursus, piemēram, atmiņu vai pro­ce­so­rus, var pievienot, lai ap­mie­ri­nā­tu pie­au­go­šās prasības. Tādas funkcijas kā just-in-time kom­pi­lā­ci­ja un tabulu sa­da­lī­ša­na arī palīdz apstrādāt lielus datu apjomus.

Saderība

Abi ri­si­nā­ju­mi darbojas dažādās plat­for­mās, tādēļ tos var izmantot Linux, macOS, Solaris un Windows. PostgreSQL iet vēl tālāk un darbojas arī FreeBSD, HP-UX, NetBSD un OpenBSD. SQL datu bāze pēc savas būtības atbilst ACID prin­ci­piem (atomicity, con­sis­tency, isolation, du­ra­bi­lity), savukārt MongoDB vismaz piedāvā šo iespēju. Abas sistēmas atbalsta daudzas prog­ram­mē­ša­nas valodas, taču, sa­lī­dzi­not MongoDB un PostgreSQL, jaunākā sistēma piedāvā ie­vē­ro­ja­mi plašāku izvēli.

Prog­ram­mē­ša­nas valoda Atbalsta Mongo DB Atbalsta PostgreSQL
Ac­tionscript
C
C
C
Clojure
ColdFu­sion
D
Darts
Delphi
Erlang
Go
Groovy
Haskell
Java
Ja­vaScript
Kotlin
Lisp
Lua
MatLab
.net
Perl
PHP
PowerShell
Prolog
Python
R
Rubīns
Scala
Smalltalk
Swift
Tcl

Drošība

Viens no sva­rī­gā­ka­jiem iemesliem, kāpēc lietotāji izvēlas PostgreSQL, ir datu bāzes spēcīgā drošības ar­hi­tek­tū­ra. Tā ietver vieglā di­rek­to­ri­ju piekļuves protokolu (LDAP) un pie­vie­no­ja­mu au­ten­ti­fi­kā­ci­jas moduli (PAM), kā arī uz serveri balstītu au­ten­ti­fi­kā­ci­ju, datu šifrēšanu un SSL ser­ti­fi­kā­tus. Iepriekš definētā datu bāzes struktūra arī nodrošina, ka jūsu dati vienmēr ir aiz­sar­gā­ti vis­la­bā­ka­jā iespējamā veidā. MongoDB piedāvā arī daudzas drošības funkcijas, tostarp šifrēšanu lauka līmenī un klienta pusē. Iz­pla­tī­ša­na uz dažādiem serveriem nodrošina vismaz augstu uz­ti­ca­mī­bas līmeni un garantē, ka dati atkal būs pieejami bez lielām kavēšanās.

Kādas ir dažādās MongoDB un PostgreSQL versijas?

Viena no MongoDB un PostgreSQL līdzībām ir to atvērtā koda pieeja. Abas sistēmas ir ne tikai atvērtā koda, bet arī pieejamas bez maksas, vismaz to pamata versijas. Lai gan tas nozīmē, ka šajā gadījumā nav pieejams pro­fe­sio­nāls atbalsts, divas dedzīgas kopienas kompensē šo trūkumu un labprāt sniedz padomus jaun­pie­nā­cē­jiem. Do­ku­men­tā­ci­ja un pa­pla­ši­nā­ša­nas iespējas ir arī nedaudz plašākas, jo PostgreSQL ir ilgāk bijis pieejams tirgū. MongoDB piedāvā arī dažādas Pro versijas. Versijas „En­terpri­se” un „Atlas” (iz­man­to­ša­nai mākonī) ir maksas, bet tām ir arī dažas papildu funkcijas un vi­s­ap­tve­rošs atbalsts.

Kuras uzņēmumi izmanto šīs divas datu bāzes?

Pat ja MongoDB un PostgreSQL sa­lī­dzi­nā­jums liecina, ka abas ri­si­nā­ju­mi izmanto divas ļoti at­šķi­rī­gas pieejas, tām tomēr ir viens kopīgs elements – daudzi lielie uzņēmumi pilnībā vai daļēji paļaujas uz abu datubāzu pie­dā­vā­ta­jiem pa­kal­po­ju­miem un priekš­ro­cī­bām.

Vislabāk pa­zīs­ta­mie uzņēmumi, kas izmanto MongoDB, ir šādi:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Foursqua­re
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

PostgreSQL izmanto, cita starpā, šādas uz­ņē­mēj­sa­bied­rī­bas un plat­for­mas:

  • Apple
  • IMDB
  • Instagram
  • Reddit
  • Runkeeper
  • Skype
  • Spotify
  • Twitch
Go to Main Menu