sql >> Database >  >> RDS >> Oracle

Top tien redenen om te migreren van Oracle naar PostgreSQL

Oracle Relational Database Management System (RDBMS) wordt veel gebruikt door grote organisaties en wordt verreweg beschouwd als de meest geavanceerde databasetechnologie die op de markt verkrijgbaar is. Het is meestal het RDBMS dat het vaakst wordt vergeleken met andere databaseproducten die dienen als de standaard "de-facto" van wat een product zou moeten bieden. Het wordt door db-engines.com gerangschikt als de #1 RDBMS die momenteel op de markt verkrijgbaar is.

PostgreSQL is gerangschikt als de #4 RDBMS, maar dat betekent niet dat er geen voordelen zijn aan het migreren naar PostgreSQL. PostgreSQL bestaat al sinds 1989 en was in 1996 open source. PostgreSQL won twee opeenvolgende jaren van 2017 en 2018 de DBMS van het jaar. Dat geeft alleen maar aan dat er geen tekenen zijn van het stoppen van het aantrekken van een groot aantal gebruikers en grote organisaties.

Een van de redenen waarom PostgreSQL veel aandacht heeft getrokken, is dat mensen op zoek zijn naar een alternatief voor Oracle, zodat ze de hoge kosten van de organisatie kunnen besparen en kunnen ontsnappen aan vendor lock-in.

Verhuizen van een werkende en productieve Oracle-database kan een ontmoedigende taak zijn. Zorgen zoals de TCO (Total Cost of Ownership) van het bedrijf is een van de redenen waarom bedrijven slepen met hun beslissing om Oracle al dan niet te dumpen.

In deze blog zullen we enkele van de belangrijkste redenen bekijken waarom bedrijven ervoor kiezen Oracle te verlaten en naar PostgreSQL te migreren.

Reden één:het is een echt open source-project

PostgreSQL is open-source en wordt vrijgegeven onder de PostgreSQL-licentie, een liberale Open Source-licentie, vergelijkbaar met de BSD- of MIT-licenties. Voor het aanschaffen van het product en de ondersteuning zijn geen kosten vereist.

Als u gebruik wilt maken van de databasesoftware, betekent dit dat u alle beschikbare functies van de PostgreSQL-database gratis kunt krijgen. PostgreSQL is al meer dan 30 jaar volwassen in de databasewereld en is sinds 1996 op aanraking gebaseerd als open-source. Het heeft tientallen jaren van ontwikkelaars genoten om extensies te maken. Dat op zich zorgt ervoor dat ontwikkelaars, instellingen en organisaties voor PostgreSQL kiezen voor bedrijfsapplicaties; voor toonaangevende zakelijke en mobiele applicaties.

Organisaties worden zich opnieuw bewust van het besef dat open source database-oplossingen zoals Postgres meer capaciteit, flexibiliteit en ondersteuning bieden die niet volledig afhankelijk is van één bedrijf of ontwikkelaar. Postgres, zoals Linux ervoor, is (en wordt nog steeds) ontwikkeld door toegewijde gebruikers die dagelijkse zakelijke problemen oplossen en ervoor kiezen hun oplossingen terug te geven aan de gemeenschap. In tegenstelling tot een grote ontwikkelaar als Oracle, die verschillende motieven kan hebben om producten te ontwikkelen die winstgevend zijn of een smalle maar lucratieve markt ondersteunen, zet de Postgres-gemeenschap zich in om de best mogelijke tools te ontwikkelen voor alledaagse relationele databasegebruikers.

PostgreSQL voert deze taken vaak uit zonder al te veel complexiteit toe te voegen. Het ontwerp is strikt gericht op het omgaan met de database zonder middelen te verspillen, zoals het beheren van extra IT-omgevingen door middel van toegevoegde functies. Het is een van de dingen die consumenten van deze open-sourcesoftware leuk vinden wanneer ze migreren van Oracle naar PostgreSQL. Uren besteden aan het bestuderen van complexe technologie over hoe een Oracle-database functioneert, of hoe deze kan worden geoptimaliseerd en afgesteld, kan leiden tot dure ondersteuning. Dit verleidt instellingen of organisaties om een ​​alternatief te vinden dat minder kopzorgen op de kosten kan opleveren en winst en productiviteit oplevert. Bekijk onze vorige blog over hoe PostgreSQL in staat is om de aanwezigheid van SQL-syntaxis te matchen met de syntaxis van Oracle.

Reden twee:geen licentie en een grote community

Voor gebruikers van het Oracle RDBMS-platform is het moeilijk om enige vorm van community-ondersteuning te vinden die gratis of zonder forse vergoeding is. Instellingen, organisaties en ontwikkelaars vinden vaak online alternatieve informatie die gratis antwoorden of oplossingen voor hun problemen kan bieden.

Als je Oracle gebruikt, is het moeilijk om te beslissen over een specifiek product of productondersteuning, omdat er (meestal) veel geld mee gemoeid is. Je zou een specifiek product kunnen proberen om het te testen, het uiteindelijk kopen, gewoon om te beseffen dat het je niet kan helpen. Met PostgreSQL is de community gratis en vol experts met uitgebreide ervaring die u graag helpen met uw huidige problemen.

Je kunt je hier op https://lists.postgresql.org/ abonneren op de mailinglijst om contact te zoeken met de community. Nieuwkomers of wonderkinderen van PostgreSQL raken hier gevestigd om hun oplossingen, technologie, bugs, nieuwe bevindingen te communiceren, te presenteren en te delen of zelfs hun opkomende software te delen. Je kunt zelfs hulp vragen aan de IRC-chat door irc.freenode.net te gebruiken en lid te worden van het #postgresql-kanaal. Je kunt ook contact opnemen met de community via Slack door lid te worden van https://postgres-slack.herokuapp.com/ of https://postgresteam.slack.com/. Er zijn veel opties en veel Open Source-organisaties die u vragen kunnen stellen

Voor meer details en informatie over waar te beginnen, ga naar https://www.postgresql.org/community/.

Als je wilt afrekenen voor Professional Services in PostgreSQL, zijn er talloze opties om uit te kiezen. Zelfs als u hun website bezoekt op https://www.postgresql.org/support/professional_support/northamerica/, kunt u daar een grote lijst met bedrijven vinden en sommige hiervan hebben een goedkope prijs. Zelfs hier bij Multiplenines bieden we ook ondersteuning voor Postgres, dat deel uitmaakt van de ClusterControl-licentie of een DBA-consultancy.

Reden drie:  Brede ondersteuning voor SQL-conformiteit

PostgreSQL is er altijd op gebrand om SQL aan te passen en te conformeren als een de facto standaard voor zijn taal. De formele naam van de SQL-standaard is ISO/IEC 9075 “Database Language SQL”. Elke opeenvolgende herziene versie van de standaard releases vervangt de vorige, dus claims van conformiteit met eerdere versies hebben geen officiële waarde.

In tegenstelling tot Oracle zijn er nog enkele trefwoorden of operators aanwezig die niet voldoen aan de ANSI-standaard SQL (Structured Query Language). De operator OUTER JOIN (+) kan bijvoorbeeld verwarringen met andere DBA's die Oracle niet hebben geraakt of met de minste bekendheid zijn, toeschrijven. PostgreSQL volgt de ANSI-SQL-standaard voor JOIN-syntaxis en dat biedt het voordeel om gemakkelijk en eenvoudig te springen met andere open-source RDBMS-databases zoals MySQL/Percona/MariaDB-databases.

Een andere syntaxis die heel gebruikelijk is bij Oracle, is het gebruik van hiërarchische query's. Oracle gebruikt de niet-standaard START WITH..CONNECT BY-syntaxis, terwijl in SQL:1999 hiërarchische query's worden geïmplementeerd door middel van recursieve algemene tabelexpressies. De onderstaande query's verschillen bijvoorbeeld qua syntaxis in overeenstemming met hiërarchische query's:

Oracle

SELECT

    restaurant_name, 

    city_name 

FROM

    restaurants rs 

START WITH rs.city_name = 'TOKYO'

CONNECT BY PRIOR rs.restaurant_name = rs.city_name;

PostgreSQL

WITH RECURSIVE tmp AS (SELECT restaurant_name, city_name

                                 FROM restaurants

                                WHERE city_name = 'TOKYO'

                                UNION

                               SELECT m.restaurant_name, m.city_name

                                 FROM restaurants m

                                 JOIN tmp ON tmp.restaurant_name = m.city_name)

                  SELECT restaurant_name, city_name FROM tmp;

PostgreSQL heeft een vergelijkbare aanpak als de andere top-open-source RDBMS zoals MySQL/MariaDB.

Volgens de PostgreSQL-handleiding streeft de ontwikkeling van PostgreSQL naar conformiteit met de nieuwste officiële versie van de standaard, waar dergelijke conformiteit niet in strijd is met traditionele kenmerken of gezond verstand. Veel van de door de SQL-standaard vereiste functies worden ondersteund, hoewel soms met een iets andere syntaxis of functie. Dit is in feite het geweldige van PostgreSQL, omdat het ook wordt ondersteund en samengewerkt door de verschillende organisaties, of het nu klein of groot is. De schoonheid blijft op zijn SQL-taalconformiteit met wat de standaard doorzet.

De ontwikkeling van PostgreSQL streeft naar conformiteit met de laatste officiële versie van de standaard, waar dergelijke conformiteit niet in strijd is met traditionele kenmerken of gezond verstand. Veel van de door de SQL-standaard vereiste functies worden ondersteund, hoewel soms met een iets andere syntaxis of functie. Na verloop van tijd kunnen verdere stappen in de richting van conformiteit worden verwacht.

Reden vier:parallellisme opvragen

Om eerlijk te zijn, PostgreSQL's Query Parallelism is niet zo rijk in vergelijking met Oracle's parallelle uitvoering voor SQL-statements. Tot de kenmerken van het parallellisme van Oracle behoren het in de rij staan ​​voor instructies met hints, de mogelijkheid om de mate van parallellisme (DOP) in te stellen, een beleid voor parallelle gradaties in te stellen of adaptief parallellisme.

PostgreSQL heeft een eenvoudige mate van parallellisme op basis van de ondersteunde plannen, maar dat definieert niet dat Oracle boven de open source PostgreSQL uitsteekt.

Het parallellisme van PostgreSQL is voortdurend verbeterd en voortdurend verbeterd door de gemeenschap. Toen PostgreSQL 10 werd uitgebracht, maakte het meer aantrekkingskracht voor het publiek, met name de verbeteringen op het gebied van parallellisme-ondersteuning voor merge join, bitmap heap-scan, indexscan en alleen-indexscan, verzamel merge, enz. Verbeteringen voegen ook statistieken toe aan pg_stat_activity.

In PostgreSQL-versies <10 is parallellisme standaard uitgeschakeld. U moet de variabele max_parallel_workers_per_gather instellen.

postgres=# \timing

Timing is on.

postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

                                                   QUERY PLAN                                                   

----------------------------------------------------------------------------------------------------------------

 Seq Scan on movies  (cost=0.00..215677.28 rows=41630 width=68) (actual time=0.013..522.520 rows=84473 loops=1)

   Filter: ((birthyear >= 1980) AND (birthyear <= 2005))

   Rows Removed by Filter: 8241546

 Planning time: 0.039 ms

 Execution time: 525.195 ms

(5 rows)



Time: 525.582 ms

postgres=# \o /dev/null 

postgres=#  select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

Time: 596.947 ms

Het queryplan laat zien dat de werkelijke tijd ongeveer 522,5 ms kan zijn, terwijl de werkelijke uitvoeringstijd van de query ongeveer 596,95 ms is. Terwijl parallellisme mogelijk is,

postgres=# set max_parallel_workers_per_gather=2;

Time: 0.247 ms

postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

                                                          QUERY PLAN                                                           

-------------------------------------------------------------------------------------------------------------------------------

 Gather  (cost=1000.00..147987.62 rows=41630 width=68) (actual time=0.172..339.258 rows=84473 loops=1)

   Workers Planned: 2

   Workers Launched: 2

   ->  Parallel Seq Scan on movies  (cost=0.00..142824.62 rows=17346 width=68) (actual time=0.029..264.980 rows=28158 loops=3)

         Filter: ((birthyear >= 1980) AND (birthyear <= 2005))

         Rows Removed by Filter: 2747182

 Planning time: 0.096 ms

 Execution time: 342.735 ms

(8 rows)



Time: 343.142 ms

postgres=# \o /dev/null

postgres=#  select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

Time: 346.020 ms

Het queryplan bepaalt dat de query parallellisme moet gebruiken en gebruikt vervolgens een Gather-knooppunt. Het zijn geschatte werkelijke tijd tot 339 ms met 2 werken en schattingen tot 264 ms voordat het is geaggregeerd door het queryplan. De werkelijke uitvoeringstijd van de query duurde nu 346 ms, wat zeer dicht bij de geschatte werkelijke tijd van het queryplan ligt.

Dit illustreert alleen maar hoe snel en voordelig het is met PostgreSQL. Hoewel PostgreSQL zijn eigen limieten heeft wanneer parallellisme kan optreden of wanneer het queryplan bepaalt dat het sneller is dan het gebruik van parallellisme, maakt het zijn functie geen enorm verschil met Oracle. Het parallellisme van PostgreSQL is flexibel en kan correct worden ingeschakeld of gebruikt, zolang uw zoekopdracht overeenkomt met de volgorde die vereist is voor het parallellisme van de zoekopdracht.

Reden vijf:geavanceerde JSON-ondersteuning en wordt altijd verbeterd

JSON-ondersteuning in PostgreSQL is altijd gelijk aan die van andere open source RDBMS. Bekijk deze externe blog van LiveJournal waar de JSON-ondersteuning van PostgreSQL altijd geavanceerder blijkt te zijn in vergelijking met de andere RDBMS. PostgreSQL heeft een groot aantal JSON-functies en features.

Het JSON-gegevenstype is geïntroduceerd in PostgreSQL-9.2. Sindsdien heeft het veel belangrijke verbeteringen en een van de belangrijkste toevoegingen in PostgreSQL-9.4 met de toevoeging van het JSONB-gegevenstype. PostgreSQL biedt twee gegevenstypen voor het opslaan van JSON-gegevens:json en jsonb. Met jsonb is het een geavanceerde versie van het JSON-gegevenstype dat de JSON-gegevens in binair formaat opslaat. Dit is de belangrijkste verbetering die een groot verschil maakte voor de manier waarop JSON-gegevens werden doorzocht en verwerkt in PostgreSQL.

Oracle heeft ook uitgebreide ondersteuning voor JSON. PostgreSQL heeft daarentegen uitgebreide ondersteuning en functies die kunnen worden gebruikt voor het ophalen van gegevens, het formatteren van gegevens of voorwaardelijke bewerkingen die de uitvoer van de gegevens of zelfs de gegevens die in de database zijn opgeslagen, beïnvloeden. Gegevens die zijn opgeslagen met het jsonb-gegevenstype hebben een groter voordeel met de mogelijkheid om GIN (Generalized Inverted Index) te gebruiken, die kan worden gebruikt om efficiënt te zoeken naar sleutels of sleutel/waarde-paren die voorkomen in een groot aantal jsonb-documenten.

PostgreSQL heeft extra extensies die handig zijn om TRANSFORM FOR TYPE voor het jsonb-type te implementeren in de ondersteunde proceduretalen. Deze extensies zijn jsonb_plperl en jsonb_plperlu voor PL/Perl. Terwijl dit voor PL/Python jsonb_plpythonu, jsonb_plpython2u en jsonb_plpython3u zijn. Als u bijvoorbeeld jsonb-waarden gebruikt om Perl-arrays toe te wijzen, kunt u de extensies jsonb_plperl of jsonb_plperlu gebruiken.

ArangoDB had een benchmark gepubliceerd waarin de JSON-prestaties van PostgreSQL werden vergeleken met andere JSON-ondersteuningsdatabases. Hoewel het een oude blog is, laat het toch zien hoe PostgreSQL's JSON presteert in vergelijking met andere databases waar JSON de kernfunctie is in hun databasekernel. Dit zorgt ervoor dat PostgreSQL zijn eigen voordeel heeft, zelfs met zijn nevenfunctie.

Reden zes:DBaaS-ondersteuning door grote cloudleveranciers

PostgreSQL wordt breed ondersteund als een DBaaS. Deze services zijn afkomstig van Amazon, Microsoft's met zijn Azure Database for PostgreSQL en Google's Cloud SQL voor PostgreSQL.

Ter vergelijking is Oracle alleen beschikbaar op Amazon RDS voor Oracle. De diensten die worden aangeboden door de grote spelers beginnen tegen een betaalbare prijs en zijn zeer flexibel in te stellen in overeenstemming met uw behoeften. Dit helpt instellingen en organisaties om dienovereenkomstig in te stellen en te verlichten van de hoge kosten die verbonden zijn aan het Oracle-platform.

Reden zeven:  Betere verwerking van enorme hoeveelheden gegevens

PostgreSQL RDBMS zijn niet ontworpen voor het verwerken van analytische en datawarehousing-workloads. PostgreSQL is een rij-georiënteerde database, maar het heeft de mogelijkheid om grote hoeveelheden gegevens op te slaan. PostgreSQL heeft de volgende limieten voor het omgaan met gegevensopslag:

Limiet

Waarde

Maximale databasegrootte

Onbeperkt

Maximale tafelgrootte

32 TB

Maximale rijgrootte

1,6 TB

Maximale veldgrootte

1 GB

Maximum aantal rijen per tafel

Onbeperkt

Maximum aantal kolommen per tabel

250-1600 afhankelijk van kolomtypes

Maximale indexen per tabel

Onbeperkt

Het grote voordeel van PostgreSQL is dat er plug-ins zijn die kunnen worden ingebouwd om grote hoeveelheden gegevens te verwerken. TimeScaleDB en cstore_fdw van CitusData zijn een van de plug-ins die u kunt opnemen voor een tijdreeksdatabase, het opslaan van grote gegevens van mobiele toepassingen of gegevens van uw IoT-toepassingen, of gegevensanalyse of datawarehousing. ClusterControl biedt zelfs ondersteuning voor TimeScaleDB, waardoor het eenvoudig maar gemakkelijk te implementeren is.

Als u de kernfuncties van PostgreSQL wilt gebruiken, kunt u grote hoeveelheden gegevens opslaan met jsonb. Maak bijvoorbeeld een grote hoeveelheid documenten (PDF, Word, Spreadsheets) en sla deze op met het gegevenstype jsonb. Voor geolocatietoepassingen en -systemen kunt u PostGIS gebruiken.

Reden acht:schaalbaarheid, hoge beschikbaarheid, redundantie/geo-redundantie en fouttolerante oplossingen op de goedkope

Oracle biedt vergelijkbare, maar krachtige oplossingen zoals Oracle Grid, Oracle Real Application Clusters (RAC), Oracle Clusterware en Oracle Data Guard om er maar een paar te noemen. Deze technologieën kunnen uw kosten verhogen en zijn onvoorspelbaar duur om te implementeren en stabiel te maken. Het is moeilijk om deze oplossingen te dumpen. Training en vaardigheden moeten worden verbeterd en de mensen die betrokken zijn bij het implementatie- en implementatieproces moeten worden ontwikkeld.

PostgreSQL heeft enorme ondersteuning en dat heeft veel opties om uit te kiezen. PostgreSQL bevat streaming en logische replicatie ingebouwd in het kernpakket van de software. U kunt mogelijk ook een synchrone replicatie instellen voor PostgreSQL om meer high-availability cluster te hebben, terwijl u een stand-by-knooppunt maakt om uw leesquery's te verwerken. Voor hoge beschikbaarheid raden we je aan onze blog Top PG Clustering High Availability (HA)-oplossingen voor PostgreSQL te lezen, waarin een groot aantal geweldige tools en technologie wordt beschreven om uit te kiezen.

Er zijn ook bedrijfsfuncties die oplossingen voor hoge beschikbaarheid, monitoring en back-up bieden. ClusterControl is een van deze technologie en biedt een betaalbare prijs in vergelijking met Oracle Solutions.

Reden negen:  Ondersteuning voor verschillende proceduretalen:PL/pgSQL, PL/Tcl, PL/Perl en PL/Python.

Sinds versie 9.4 heeft PostgreSQL een geweldige functie waarmee u een nieuwe proceduretaal kunt definiëren in overeenstemming met uw keuze. Hoewel niet alle verschillende programmeertalen worden ondersteund, heeft het een aantal talen die worden ondersteund. Momenteel omvat het met basisdistributie PL/pgSQL, PL/Tcl, PL/Perl en PL/Python. De externe talen zijn:

Naam

Taal

Website

PL/Java

Java

https://tada.github.io/pljava/

PL/Lua

Lua

https://github.com/pllua/pllua

PL/R

R

https://github.com/postgres-plr/plr

PL/sh

Unix-shell

https://github.com/petere/plsh

PL/v8

JavaScript

https://github.com/plv8/plv8

Het mooie hiervan is dat, in tegenstelling tot Oracle, ontwikkelaars die onlangs zijn overgestapt op PostgreSQL, snel bedrijfslogica aan hun applicatiesystemen kunnen leveren zonder dat ze meer tijd nodig hebben om over PL/SQL te leren. PostgreSQL maakt de omgeving voor ontwikkelaars eenvoudiger en efficiënter. Deze aard van PostgreSQL draagt ​​bij aan de reden waarom ontwikkelaars van PostgreSQL houden en beginnen te verschuiven van enterprise-platformoplossingen naar de open source-omgeving.

Reden tien:  Flexibele indexen voor grote en tekstuele gegevens (GIN, GiST, SP-GiST en BRIN)

PostgreSQL heeft een enorm voordeel als het gaat om de ondersteuning van indexen die gunstig zijn voor het verwerken van grote gegevens. Oracle heeft veel indextypen die ook gunstig zijn voor het verwerken van grote gegevenssets, vooral voor indexering van volledige tekst. Maar voor PostgreSQL zijn dit soort indexen gemaakt om flexibel te zijn volgens uw doel. Dit soort indexen zijn bijvoorbeeld van toepassing op grote gegevens:

GIN - (algemene geïnverteerde indexen) 

Dit type index is van toepassing op jsonb-, hstore-, range- en arrays-gegevenstypekolommen. Dit is handig wanneer u gegevenstypen hebt die meerdere waarden in één kolom bevatten. Volgens de PostgreSQL-documenten:"GIN is ontworpen voor het afhandelen van gevallen waarin de items die moeten worden geïndexeerd samengestelde waarden zijn en de zoekopdrachten die door de index moeten worden afgehandeld, moeten zoeken naar elementwaarden die binnen de samengestelde items verschijnen. De items kunnen bijvoorbeeld documenten zijn en de zoekopdrachten kunnen zoekopdrachten zijn naar documenten die specifieke woorden bevatten.”

GiST - (algemene zoekstructuur)

Een zoekstructuur met uitgebalanceerde hoogte die bestaat uit knooppuntpagina's. De knooppunten bestaan ​​uit indexrijen. Elke rij van een bladknooppunt (bladrij) bevat in het algemeen een predikaat (booleaanse uitdrukking) en een verwijzing naar een tabelrij (TID). GiST-indexen zijn het beste als je dit gebruikt voor geometrisch gegevenstype, zoals je wilt zien of twee polygonen een punt bevatten. In het ene geval kan een specifiek punt zich in een vak bevinden, terwijl een ander punt alleen binnen één polygoon bestaat. De meest voorkomende gegevenstypen waarbij u GiST-indexen wilt gebruiken, zijn geometrietypen en tekst bij het zoeken in volledige tekst

Bij het kiezen van het te gebruiken indextype, GiST of GIN, moet u rekening houden met deze prestatieverschillen:

  • GIN-indexzoekopdrachten zijn ongeveer drie keer sneller dan GiST
  • GIN-indexen duren ongeveer drie keer langer om te bouwen dan GiST
  • GIN-indexen zijn matig langzamer te updaten dan GiST-indexen, maar ongeveer 10 keer langzamer als ondersteuning voor snelle updates was uitgeschakeld
  • GIN-indexen zijn twee tot drie keer groter dan GiST-indexen

Als vuistregel zijn GIN-indexen het beste voor statische gegevens, omdat het opzoeken sneller gaat. Voor dynamische gegevens kunnen GiST-indexen sneller worden bijgewerkt.

SP-GiST - (GiST met ruimtepartities) 

Voor grotere datasets met natuurlijke maar ongelijkmatige clustering. Dit type index maakt gebruik van ruimteverdelingsbomen. SP-GiST-indexen zijn het nuttigst wanneer uw gegevens een natuurlijk clusterelement bevatten en ook geen even evenwichtige boomstructuur zijn. Een goed voorbeeld hiervan zijn telefoonnummers, bijvoorbeeld in de VS gebruiken ze het volgende formaat:

  • 3 cijfers voor netnummer
  • 3 cijfers voor prefix (historisch gerelateerd aan de overstap van een telefoonaanbieder)
  • 4 cijfers voor regelnummer

Dit betekent dat je een natuurlijke clustering hebt rond de eerste set van 3 cijfers, rond de tweede set van 3 cijfers, waarna getallen kunnen uitwaaieren in een meer gelijkmatige verdeling. Maar bij telefoonnummers hebben sommige netnummers een veel hogere verzadiging dan andere. Het gevolg kan zijn dat de boom erg uit balans is. Vanwege die natuurlijke clustering vooraf en de ongelijke verdeling van gegevens, kunnen gegevens zoals telefoonnummers SP-GiST goed verdedigen.

BRIN - (Blokbereikindex) 

Voor echt grote datasets die opeenvolgend worden opgesteld. Een blokbereik is een groep pagina's naast elkaar, waar samenvattende informatie over al die pagina's wordt opgeslagen in Index. Blokbereikindexen kunnen zich richten op enkele vergelijkbare gebruiksscenario's als SP-GiST, omdat ze het beste zijn wanneer er een natuurlijke ordening in de gegevens zit en de gegevens meestal erg groot zijn. Heeft u een tabel met miljardenrecords, vooral als het tijdreeksgegevens zijn? BRIN kan misschien helpen. Als u een query uitvoert op een grote reeks gegevens die van nature bij elkaar zijn gegroepeerd, zoals gegevens voor verschillende postcodes (die vervolgens oprollen naar een bepaalde stad), helpt BRIN ervoor te zorgen dat vergelijkbare postcodes zich dicht bij elkaar op de schijf bevinden.

Als je erg grote datasets hebt die geordend zijn, zoals datums of postcodes, kun je met BRIN-indexen heel snel veel onnodige data overslaan of uitsluiten. BRIN wordt bovendien onderhouden als kleinere indexen in verhouding tot de totale gegevensomvang, waardoor ze een grote overwinning zijn voor wanneer u een grote gegevensset heeft.

Conclusie

PostgreSQL heeft een aantal grote voordelen wanneer het moet concurreren met Oracle's bedrijfsplatform en bedrijfsoplossingen. Het is zeker gemakkelijk om PostgreSQL te prijzen als uw favoriete open source RDBMS, aangezien het bijna krachtig is als Oracle.

Oracle is moeilijk te verslaan (en dat is een harde waarheid om te accepteren) en het is ook niet gemakkelijk om het enterprise-platform van de techgigant te dumpen. Wanneer systemen u kracht en productieve resultaten bieden, kan dat een dilemma zijn.

Soms zijn er echter situaties waarin een beslissing moet worden genomen, omdat voortdurend te veel investeren in uw platformkosten zwaarder kan wegen dan de kosten van uw andere bedrijfslagen en prioriteiten, wat de voortgang kan beïnvloeden.

PostgreSQL en de onderliggende platformoplossingen kunnen de beste keuze zijn om u te helpen de kosten te verlagen, uw budgettaire problemen te verlichten; allemaal met matige tot kleine veranderingen.


  1. Hoe de statusbalkkleur in SSMS in te stellen voor verschillende SQL Server-instanties - SQL Server / TSQL-zelfstudie, deel 6

  2. Hoe de Unix-tijdstempel in Oracle te retourneren

  3. SQL Server-fout 4104:de meerdelige id kan niet worden gebonden.

  4. Hoe milliseconden tot nu toe te converteren in SQLite