{"id":87609,"date":"2020-07-09T01:42:11","date_gmt":"2020-07-08T23:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum"},"modified":"2020-07-09T01:42:11","modified_gmt":"2020-07-08T23:42:11","slug":"kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","title":{"rendered":"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Een tijd geleden stonden we voor de vraag welk ETL-gereedschap we moesten kiezen voor het werken met Big Data. De eerder gebruikte oplossing Informatica BDM voldeed niet aan onze verwachtingen vanwege de beperkte functionaliteit. Het gebruik ervan beperkte zich tot een framework voor het uitvoeren van spark-submit commando's. Op de markt waren er niet veel alternatieven die in staat waren om met de enorme datavolumes te werken waarmee we dagelijks te maken hebben. Uiteindelijk kozen we voor Ab Initio. Tijdens de pilotdemonstraties toonde het product een zeer hoge verwerkingssnelheid voor gegevens. Er is bijna geen informatie over Ab Initio in het Russisch, dus besloten we onze ervaringen op Habr te delen.<\/p>\n<p>Ab Initio biedt talloze klassieke en ongebruikelijke transformaties, waarvan de code kan worden uitgebreid met behulp van de eigen PDL-taal. Voor kleine bedrijven zal zo\u2019n krachtig hulpmiddel waarschijnlijk overbodig zijn, en veel van de mogelijkheden kunnen duur en ongebruikt blijven. Maar als je schaal in de buurt van die van Sberkrant komt, kan Ab Initio interessant voor je zijn. <\/p>\n<p>Het helpt bedrijven wereldwijd kennis op te bouwen en een ecosysteem te ontwikkelen, terwijl het ontwikkelaars in staat stelt hun vaardigheden in ETL te verbeteren, hun kennis van shell uit te breiden, de mogelijkheid biedt om de PDL-taal te leren, een visueel overzicht van de laadprocessen biedt en de ontwikkeling vereenvoudigt dankzij de overvloed aan functionele componenten.<\/p>\n<p>In deze post zal ik de mogelijkheden van Ab Initio bespreken en vergelijkende kenmerken geven van de werking met Hive en GreenPlum.<\/p>\n<ul>\n<li>Beschrijving van het MDW-framework en werk aan de aanpassing ervan voor GreenPlum<\/li>\n<li>Vergelijkende kenmerken van de prestaties van Ab Initio bij het werken met Hive en GreenPlum<\/li>\n<li>De werking van Ab Initio met GreenPlum in de Near Real Time-modus<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDe functionaliteit van dit product is zeer breed en vereist veel tijd om te leren. Echter, met de juiste vaardigheden en de juiste prestatie-instellingen kunnen de verwerkingsresultaten van gegevens behoorlijk indrukwekkend zijn. Het gebruik van Ab Initio kan een ontwikkelaar interessante ervaring opleveren. Het biedt een nieuw perspectief op ETL-ontwikkeling, een hybride tussen een visuele omgeving en het gebruik van een script-achtige taal voor het laden.<\/p>\n<p>Bedrijven ontwikkelen hun ecosystemen en dit instrument komt hen op het juiste moment van pas. Met Ab Initio kan men kennis over het huidige bedrijf verzamelen en deze kennis gebruiken om bestaande bedrijven uit te breiden en nieuwe bedrijven op te richten. Alternatieven voor Ab Initio zijn de visuele ontwikkelomgevingen zoals Informatica BDM en de niet-visuele omgevingen zoals Apache Spark.<\/p>\n<h3>Beschrijving van Ab Initio<\/h3>\n<p>\nAb Initio, net als andere ETL-tools, bestaat uit een set producten.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c467fe1e8455805075856967b577f8b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAb Initio GDE (Graphical Development Environment) is een ontwikkelomgeving waar de ontwikkelaar datatransformaties instelt en deze verbindt met datastromen in de vorm van pijlen. Deze set transformaties wordt een graf genoemd:<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/7b0c19a82ae8b461a9bd85117555e106.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn- en uitgangsverbindingen van functionele componenten zijn poorten en bevatten velden die binnen de transformaties zijn berekend. Meerdere grafen, verbonden met stromen in de vorm van pijlen in de volgorde van uitvoering, worden een plan genoemd.<\/p>\n<p>Er zijn enkele honderden functionele componenten, wat erg veel is. Veel van deze componenten zijn sterk gespecialiseerd. De mogelijkheden van klassieke transformaties in Ab Initio zijn breder dan die in andere ETL-tools. Bijvoorbeeld, Join heeft meerdere uitgangen. Naast de output van de samengevoegde datasets kun je ook records van de invoerdatasets krijgen voor de sleutels waarmee niet kon worden samengevoegd. Daarnaast kunnen rejects, errors en een log van de transformatieoutput worden verkregen, die in dezelfde graf als een tekstbestand kan worden gelezen en door andere transformaties kan worden verwerkt:<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c7d70879daad364a3d4aa41a0a1b738d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOf bijvoorbeeld, je kunt de gegevensontvanger materialiseren als een tabel en in dezelfde graf gegevens eruit lezen.<\/p>\n<p>Er zijn originele transformaties. Bijvoorbeeld, de transformatie Scan heeft functionaliteit zoals bij analytische functies. Er zijn transformaties met sprekende namen: Create Data, Read Excel, Normalize, Sort within Groups, Run Program, Run SQL, Join with DB, enz. Grafen kunnen gebruikmaken van runtime-parameters, waaronder het doorgeven van parameters van of naar het besturingssysteem. Bestanden met een set van parameters die aan de graf moeten worden doorgegeven, worden parameter sets (psets) genoemd.<\/p>\n<p>Zoals het hoort, heeft Ab Initio GDE zijn eigen repository, genaamd EME (Enterprise Meta Environment). Ontwikkelaars hebben de mogelijkheid om met lokale versies van de code te werken en hun ontwikkelingen in de centrale repository in te checken.<\/p>\n<p>Het is mogelijk om tijdens of na de uitvoering van een grafiek op elke verbindingsflow te klikken en de gegevens te bekijken die tussen deze transformaties zijn doorgevoerd.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/a674507b2cd25b980cb862bda2e10cbe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDaarnaast is er de mogelijkheid om op elke flow te klikken en trackingdetails te bekijken \u2013 hoeveel parallelle uitvoeringen er waren, hoeveel rijen en bytes in welke parallel zijn geladen.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/6188d17bebe756ee59e6956f9a40ec43.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet is mogelijk om de uitvoering van de grafiek in fasen te verdelen en aan te geven dat sommige transformaties eerst moeten worden uitgevoerd (in de nul-fase), de volgende in de eerste fase, de volgende in de tweede fase, enzovoort.<\/p>\n<p>Bij elke transformatie kan een zogenaamde layout worden gekozen (waar deze zal worden uitgevoerd): zonder parallelle uitvoeringen of in parallelle streams, waarvan het aantal kan worden ingesteld. Tijdelijke bestanden die Ab Initio genereert tijdens de uitvoering van de transformaties kunnen zowel in het bestandssysteem worden geplaatst <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/nl\/server\/dts-los-angeles\/\"   title=\"de server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3635\">de server<\/a>, als in HDFS.<\/p>\n<p>In elke transformatie op basis van het standaardtemplate kan een eigen script in de PDL-taal worden gemaakt, wat enigszins lijkt op shell. <\/p>\n<p>Met de PDL-taal kunt u de functionaliteit van transformaties uitbreiden en, in het bijzonder, kunt u dynamisch (tijdens uitvoering) willekeurige codefragmenten genereren, afhankelijk van uitvoeringsparameters.<\/p>\n<p>Bovendien heeft Ab Initio een goed ontwikkelde integratie met het besturingssysteem via shell. Specifiek in Sberbank wordt linux ksh gebruikt. U kunt variabelen met shell uitwisselen en deze als parameters voor grafieken gebruiken. Vanuit shell kunt u de uitvoering van Ab Initio-grafieken aanroepen en Ab Initio beheren.<\/p>\n<p>Naast Ab Initio GDE bevat de levering veel andere producten. Er is een eigen Co&gt;Operation System dat pretentieus als besturingssysteem wordt aangeduid. Er is een Control&gt;Center, waarin u belastingstromen kunt plannen en monitoren. Er zijn producten voor ontwikkeling op een meer primitief niveau dan Ab Initio GDE toelaat.<\/p>\n<h3>Beschrijving van het MDW-framework en werk aan de aanpassing ervan voor GreenPlum<\/h3>\n<p>\nSamen met zijn producten levert de leverancier het MDW (Metadata Driven Warehouse), een grafiekconfigurator die is ontworpen om te helpen bij typische taken voor het vullen van gegevensopslagen of data vaults.<\/p>\n<p>Het bevat gebruikersspecifieke (projectspecifieke) metadata-parsers en kant-en-klare codegeneratoren 'uit de doos'.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/0842ecb9550f369875103ccb23cdf121.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMDW ontvangt een datamodel, een configuratiebestand voor de databaseverbinding (Oracle, Teradata of Hive) en enkele andere instellingen. Project-specifieke onderdelen implementeren de modellen in de database. De standaardonderdelen van het product genereren grafieken en configuratiebestanden bij het laden van gegevens in de modeltabellen. Hierbij worden grafieken (en psets) gemaakt voor verschillende modi van initi\u00eble en incrementele updates van entiteiten.<\/p>\n<p>In het geval van Hive en RDBMS worden verschillende grafieken gegenereerd voor de initi\u00eble en incrementele gegevensupdates.<\/p>\n<p>Voor Hive worden binnenkomende deltagegevens verbonden met behulp van Ab Initio Join aan de gegevens die v\u00f3\u00f3r de update in de tabel stonden. De gegevensladers in MDW (zowel in Hive als in RDBMS) voegen niet alleen nieuwe gegevens uit de delta toe, maar sluiten ook de actualiteitsperiodes van de gegevens af, op basis van de primaire sleutels waarvan de delta is ontvangen. Daarnaast moet ook het onveranderde deel van de gegevens opnieuw worden geschreven. Dit is echter noodzakelijk omdat Hive geen delete- of update-operaties ondersteunt.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/36b6dd7c4d45727ad7d7aa1183fdd5fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn het geval van RDBMS ziet het proces van de incrementele gegevensupdates er optimaler uit, omdat RDBMS echte update-mogelijkheden hebben.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b62ac222bed575a60b632b13e012f603.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe binnenkomende delta wordt geladen in een tussenliggende tabel in de database. Vervolgens worden de delta-gegevens verbonden met de gegevens die v\u00f3\u00f3r de update in de tabel stonden. Dit gebeurt via SQL met behulp van de gegenereerde SQL-query. Vervolgens worden met SQL-commando's delete+insert nieuwe gegevens uit de delta in de doeltabel ingevoegd en worden de actualiteitsperiodes van de gegevens die met de primaire sleutels zijn ontvangen, afgesloten. <br \/>\nHet is niet nodig om onveranderde gegevens opnieuw te schrijven.<\/p>\n<p>Zo zijn we tot de conclusie gekomen dat MDW in het geval van Hive de gehele tabel moet herschrijven, omdat Hive geen updatefunctie heeft. Bij een update is er niets beter dan het volledig herschrijven van de gegevens. In het geval van RDBMS vonden de productontwikkelaars daarentegen het nodig om de verbinding en update van tabellen aan SQL over te laten.<\/p>\n<p>Voor het project bij Sberbank hebben we een nieuwe herbruikbare implementatie van een database-loader voor GreenPlum ontwikkeld. Dit is gedaan op basis van de versie die MDW genereert voor Teradata. Teradata, en niet Oracle, bleek hiervoor de beste en meest geschikte keuze, aangezien het ook een MPP-systeem is. De werkwijzen en de syntaxis van Teradata en GreenPlum bleken naast elkaar te liggen.<\/p>\n<p>Voorbeelden van kritische MDW-verschillen tussen verschillende RDBMS zijn als volgt. In GreenPlum moet bij het aanmaken van tabellen in tegenstelling tot Teradata de clausule geschreven worden.<\/p>\n<pre><code class=\"sql\">distributed by<\/code><\/pre>\n<p>\nIn Teradata schrijf je<\/p>\n<pre><code class=\"sql\">Verwijder afbeeldingen &lt;table&gt; all<\/code><\/pre>\n<p>\n, terwijl je in GreenPlum schrijft<\/p>\n<pre><code class=\"sql\">verwijder van &lt;table&gt;<\/code><\/pre>\n<p>\nIn Oracle schrijf je ter optimalisatie<\/p>\n<pre><code class=\"sql\">delete from t where rowid in ()<\/code><\/pre>\n<p>\n, terwijl je in Teradata en GreenPlum schrijft<\/p>\n<pre><code class=\"sql\">delete from t where exists (select * from delta where delta.pk=t.pk)<\/code><\/pre>\n<p>\nDaarnaast dient opgemerkt te worden dat voor het gebruik van Ab Initio met GreenPlum de GreenPlum-client op alle nodes van het Ab Initio-cluster moest worden ge\u00efnstalleerd. Dit kwam doordat we tegelijkertijd van alle nodes van ons cluster naar GreenPlum verbonden waren. Om ervoor te zorgen dat het lezen uit GreenPlum parallel kon verlopen en elke parallelle thread van Ab Initio zijn eigen gegevensportie uit GreenPlum kon lezen, moest in de sectie \"where\" van de SQL-query een constructie worden geplaatst die door Ab Initio begrepen werd.<\/p>\n<pre><code class=\"sql\">where ABLOCAL()<\/code><\/pre>\n<p>\nen de waarde van deze constructie moet worden gedefinieerd door de parameter te specificeren voor de DB-lezende transformatie.<\/p>\n<pre><code class=\"sql\">ablocal_expr=\u00abstring_concat(&quot;mod(t.&quot;, string_filter_out(&quot;{$TABLE_KEY}&quot;,&quot;{}&quot;), &quot;,&quot;, (decimal(3))(number_of_partitions()),&quot;)=&quot;, (decimal(3))(this_partition()))\u00bb<\/code><\/pre>\n<p>\n, wat compileert naar iets als<\/p>\n<pre><code class=\"sql\">mod(sk,10)=3<\/code><\/pre>\n<p>\n, wat betekent dat je GreenPlum een expliciete filter voor elke partitite moet geven. Voor andere databases (Teradata, Oracle) kan Ab Initio deze parallelisatie automatisch uitvoeren.<\/p>\n<h3>Vergelijkende kenmerken van de prestaties van Ab Initio bij het werken met Hive en GreenPlum<\/h3>\n<p>\nBij Sberbank is een experiment uitgevoerd ter vergelijking van de prestaties van de door MDW gegenereerde grafen ten aanzien van Hive en GreenPlum. In het kader van het experiment had Hive 5 nodes in hetzelfde cluster als Ab Initio, terwijl GreenPlum 4 nodes in een apart cluster had. Dat wil zeggen, Hive had een bepaald voordeel ten opzichte van GreenPlum \u2018qua hardware\u2019.<\/p>\n<p>Er zijn twee paren grafen bekeken, die dezelfde taak voor het bijwerken van gegevens in Hive en GreenPlum uitvoeren. Hierbij zijn de grafen, gegenereerd door de MDW-configurator, uitgevoerd:<\/p>\n<ul>\n<li>initi\u0451le lading + incrementele lading van willekeurig gegenereerde gegevens in de Hive-tabel.<\/li>\n<li>initi\u0451le lading + incrementele lading van willekeurig gegenereerde gegevens in dezelfde GreenPlum-tabel.<\/li>\n<\/ul>\n<p>\nIn beide gevallen (Hive en GreenPlum) werden de uploads uitgevoerd in 10 parallelle stroomprocessen op dezelfde Ab Initio-cluster. De tussenresultaten voor de berekeningen werden opgeslagen in HDFS (in Ab Initio-termen werd de MFS-layout met HDFS gebruikt). E\u00e9n regel willekeurig gegenereerde gegevens nam in beide gevallen 200 byte in beslag.<\/p>\n<p>Het resultaat was als volgt:<\/p>\n<p><b>Hive:<\/b><\/p>\n<p><b>Initi\u00eble upload in Hive<\/b><\/p>\n<p>Ingevoegde rijen<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Duur van de initi\u00eble<br \/>\nupload in seconden<br \/>\n41<br \/>\n203<br \/>\n1 601<\/p>\n<p><b>Incrementele upload in Hive<\/b><\/p>\n<p>Aantal rijen in de<br \/>\ndoeltabel aan het begin van het experiment<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Aantal delta-rijen dat is toegepast op<br \/>\nde doeltabel tijdens het experiment<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Duur van de incrementele<br \/>\nupload in seconden<br \/>\n88<br \/>\n299<br \/>\n<b>2 541<\/b><\/p>\n<p>\n<b>GreenPlum:<\/b><\/p>\n<p><b>Initi\u00eble upload in GreenPlum<\/b><\/p>\n<p>Ingevoegde rijen<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Duur van de initi\u00eble<br \/>\nupload in seconden<br \/>\n72<br \/>\n360<br \/>\n3 631<\/p>\n<p><b>Incrementele upload in GreenPlum<\/b><\/p>\n<p>Aantal rijen in de<br \/>\ndoeltabel aan het begin van het experiment<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Aantal delta-rijen dat is toegepast op<br \/>\nde doeltabel tijdens het experiment<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Duur van de incrementele<br \/>\nupload in seconden<br \/>\n159<br \/>\n199<br \/>\n<b>321<\/b><\/p>\n<p>\nWe zien dat de snelheid van de initi\u00eble upload zowel in Hive als in GreenPlum lineair afhankelijk is van het datavolume en, om redenen van betere hardware, is deze iets sneller voor Hive dan voor GreenPlum.<\/p>\n<p>De incrementele upload in Hive is ook lineair afhankelijk van de hoeveelheid eerder geladen gegevens in de doeltabel en verloopt relatief langzaam met toenemende volumes. Dit komt door de noodzaak om de doeltabel volledig opnieuw te schrijven. Dit betekent dat het aanbrengen van kleine wijzigingen aan enorme tabellen geen goede gebruiksoptie voor Hive is.<\/p>\n<p>De incrementele upload in GreenPlum is daarentegen zwak afhankelijk van de hoeveelheid eerder opgeslagen gegevens in de doeltabel en verloopt relatief snel. Dit is mogelijk gemaakt door SQL Joins en de architectuur van GreenPlum, die de delete-operatie toestaat.<\/p>\n<p>Dus, GreenPlum voegt de delta samen met delete+insert-methoden toe, terwijl Hive geen delete of update-operaties heeft, waardoor de gehele dataset bij incrementele updates volledig opnieuw geschreven moest worden. De vergelijking van de vetgedrukte cellen is het meest illustratief, omdat het overeenkomt met de meest voorkomende manier van resource-intensieve uploads. We zien dat GreenPlum in deze test 8 keer beter presteert dan Hive.<\/p>\n<h3>De werking van Ab Initio met GreenPlum in de Near Real Time-modus<\/h3>\n<p>\nIn dit experiment zullen we de mogelijkheid van Ab Initio onderzoeken om de GreenPlum-tabel te updaten met willekeurig gegenereerde datastromen in een modus die dicht bij real-time is. We zullen kijken naar de GreenPlum-tabel dev42_1_db_usl.TESTING_SUBJ_org_finval, waarmee we aan de slag gaan.<\/p>\n<p>We zullen drie Ab Initio-grafieken gebruiken voor de interactie met deze tabel:<\/p>\n<p>1) Graf Create_test_data.mp \u2013 genereert in 10 gelijktijdige threads bestanden met gegevens in HDFS met 6.000.000 regels. De gegevens zijn willekeurig en hun structuur is georganiseerd voor invoeging in onze tabel.<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/8cac605c1c5931313bd016a48fb6384e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b86988bf1722329bde60013ba025d600.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n2) Graf mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 gegenereerde MDW graf voor de initi\u00eble invoeging van gegevens in onze tabel in 10 gelijktijdige threads (testgegevens zijn gegenereerd door graf (1)).<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b4228a13c088c6b96abba35e9e58fe8e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n3) Graf mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 gegenereerde MDW graf voor de incrementele update van onze tabel in 10 gelijktijdige threads met vers binnengekomen gegevens (delta's), gegenereerd door graf (1).<\/p>\n<p><img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/714a901616cf84e5a1fd7a764373e30f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLaten we het onderstaande script uitvoeren in NRT-modus:<\/p>\n<ul>\n<li>genereer 6.000.000 testregels.<\/li>\n<li>voeren we een initi\u00eble laad in van 6.000.000 testregels in een lege tabel.<\/li>\n<li>herhaal de incrementele laad 5 keer.\n<ul>\n<li>genereer 6.000.000 testregels.<\/li>\n<li>voeren we een incrementele invoeging van 6.000.000 testregels in de tabel uit (terwijl de oude gegevens een vervaldatum valid_to_ts krijgen en nieuwere gegevens met dezelfde primaire sleutel worden ingevoegd).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nDit scenario emuleert de werking van een bepaald bedrijfsysteem \u2013 in realtime komt er een aanzienlijke hoeveelheid nieuwe gegevens binnen en wordt deze direct in GreenPlum gevoegd.<\/p>\n<p>Laten we nu het log van het script bekijken:<\/p>\n<p><i>Start Create_test_data.input.pset at 2020-06-04 11:49:11.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 11:49:37.<br \/>\nStart mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:49:37.<br \/>\nEinde mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:50:42.<br \/>\nStart Create_test_data.input.pset at 2020-06-04 11:50:42.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 11:51:06.<br \/>\nStart mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:51:06.<br \/>\nEinde mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:53:41.<br \/>\nStart Create_test_data.input.pset at 2020-06-04 11:53:41.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 11:54:04.<br \/>\nStart mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:54:04.<br \/>\nEinde mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:56:51.<br \/>\nStart Create_test_data.input.pset at 2020-06-04 11:56:51.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 11:57:14.<br \/>\nStart mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:57:14.<br \/>\nEinde mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 11:59:55.<br \/>\nStart Create_test_data.input.pset at 2020-06-04 11:59:55.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 12:00:23.<br \/>\nStart mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 12:00:23.<br \/>\nEinde mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 12:03:23.<br \/>\nStart Create_test_data.input.pset at 2020-06-04 12:03:23.<br \/>\nEinde Create_test_data.input.pset at 2020-06-04 12:03:49.<br \/>\nStart mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 12:03:49<br \/>\nFinish mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset at 2020-06-04 12:06:46<\/i><\/p>\n<p>Het resultaat is als volgt:<\/p>\n<p>Grafiek<br \/>\nStarttijd<br \/>\nEindtijd<br \/>\nLengte<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:49:11<br \/>\n04.06.2020 11:49:37<br \/>\n00:00:26<\/p>\n<p>mdw_load.day_one.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:49:37<br \/>\n04.06.2020 11:50:42<br \/>\n00:01:05<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:50:42<br \/>\n04.06.2020 11:51:06<br \/>\n00:00:24<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:51:06<br \/>\n04.06.2020 11:53:41<br \/>\n00:02:35<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:53:41<br \/>\n04.06.2020 11:54:04<br \/>\n00:00:23<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:54:04<br \/>\n04.06.2020 11:56:51<br \/>\n00:02:47<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:56:51<br \/>\n04.06.2020 11:57:14<br \/>\n00:00:23<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:57:14<br \/>\n04.06.2020 11:59:55<br \/>\n00:02:41<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:59:55<br \/>\n04.06.2020 12:00:23<br \/>\n00:00:28<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 12:00:23<br \/>\n04.06.2020 12:03:23<br \/>\n00:03:00<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 12:03:23<br \/>\n04.06.2020 12:03:49<br \/>\n00:00:26<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 12:03:49<br \/>\n04.06.2020 12:06:46<br \/>\n00:02:57<\/p>\n<p>\nWe zien dat 6.000.000 rijen incrementen binnen 3 minuten worden verwerkt, wat behoorlijk snel is.<br \/>\nDe gegevens in de doel tabel zijn als volgt verdeeld:<\/p>\n<pre><code class=\"sql\">select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Wanneer u schaalgrootte hebt als Sberbank. Gebruik van Ab Initio bij het werken met Hive en GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/baefcfd8142f4ad6275333e3dcfccf94.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWe kunnen de overeenkomsten van de ingevoerde gegevens met de startmomenten van de grafieken zien.<br \/>\nDit betekent dat je in Ab Initio een incrementele dataload in GreenPlum met een zeer hoge frequentie kunt uitvoeren en de hoge snelheid van invoer van deze gegevens in GreenPlum kunt observeren. Natuurlijk zal het niet elke seconde mogelijk zijn om te starten, aangezien Ab Initio, net als elk ETL-systeem, tijd nodig heeft voor 'opwarmtijd' bij het starten.<\/p>\n<h2>Conclusie<\/h2>\n<p>\nMomenteel wordt Ab Initio gebruikt bij Sberbank voor het opbouwen van de Eenheid Semantische Laag (ESL) van gegevens. Dit project houdt in dat er een enkele versie van de status van verschillende bancaire business-entiteiten wordt gebouwd. Informatie komt uit verschillende bronnen, waarvan de replica's zijn voorbereid op Hadoop. Op basis van de behoeften van het bedrijf wordt een datamodel voorbereid en worden de datatransformaties beschreven. Ab Initio laadt informatie in de ESL en de geladen gegevens zijn niet alleen van belang voor het bedrijf op zichzelf, maar dienen ook als bron voor het opbouwen van datavitrines. Bovendien stelt de functionaliteit van het product ons in staat om verschillende systemen (Hive, Greenplum, Teradata, Oracle) als ontvangers te gebruiken, wat het mogelijk maakt om gegevens zonder al te veel moeite voor het bedrijf in verschillende gewenste formaten voor te bereiden.<\/p>\n<p>De mogelijkheden van Ab Initio zijn breed, bijvoorbeeld het bijgeleverde MDW-framework biedt de mogelijkheid om technische en zakelijke geschiedenissen van gegevens 'uit de doos' te bouwen. Voor ontwikkelaars biedt Ab Initio de mogelijkheid om 'het wiel niet opnieuw uit te vinden' en gebruik te maken van tal van beschikbare functionele componenten, die in wezen bibliotheken zijn die nodig zijn bij de omgang met gegevens.<\/p>\n<blockquote><p>Auteur \u2014 expert van de professionele gemeenschap van Sberbank SberProfi DWH\/BigData. De professionele gemeenschap SberProfi DWH\/BigData is verantwoordelijk voor de ontwikkeling van competenties in gebieden zoals het Hadoop-ecosysteem, Teradata, Oracle DB, GreenPlum, en BI-tools zoals Qlik, SAP BO, Tableau en anderen.<\/p><\/blockquote>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/509936\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0415\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u043b\u043e\u0441\u044c \u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 spark-submit. \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0438\u043c\u0435\u043b\u043e\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0435\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87610,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0441\u0431\u0435\u0440\u043e\u0432\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Ab Initio \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Hive \u0438 GreenPlum | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T23:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T23:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wanneer uw schaal vergelijkbaar is met die van Sberbank. Het gebruik van Ab Initio bij het werken met Hive en GreenPlum | ProHoster","description":"Een tijdje geleden stonden we voor de uitdaging om een ETL-tool te kiezen voor het werken met Big Data. De eerder gebruikte oplossing Informatica BDM voldeed niet aan onze verwachtingen vanwege de beperkte functionaliteit.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0441\u0431\u0435\u0440\u043e\u0432\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Ab Initio \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Hive \u0438 GreenPlum | ProHoster","og:description":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T23:42:11+00:00","article:modified_time":"2020-07-08T23:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87609","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:47:29","updated":"2026-02-22 15:29:30","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/87609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=87609"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/87609\/revisions"}],"predecessor-version":[{"id":162163,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/87609\/revisions\/162163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/87610"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=87609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=87609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=87609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}