{"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\/it\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","title":{"rendered":"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Qualche tempo fa ci siamo trovati di fronte alla scelta di uno strumento ETL per lavorare con il Big Data. La soluzione precedentemente utilizzata, Informatica BDM, non ci soddisfaceva a causa delle sue funzionalit\u00e0 limitate. Il suo utilizzo si riduceva a un framework per l'esecuzione dei comandi spark-submit. Sul mercato non c'erano molti equivalenti in grado di gestire il volume di dati con cui abbiamo a che fare ogni giorno. Alla fine abbiamo scelto Ab Initio. Durante le dimostrazioni pilota, il prodotto ha mostrato velocit\u00e0 molto elevate nel trattamento dei dati. Ci sono pochissime informazioni su Ab Initio in russo, quindi abbiamo deciso di condividere la nostra esperienza su Habr.<\/p>\n<p>Ab Initio offre molte trasformazioni classiche e insolite, il cui codice pu\u00f2 essere esteso utilizzando il proprio linguaggio PDL. Per le piccole imprese, uno strumento cos\u00ec potente potrebbe essere sovrabbondante, e molte delle sue funzionalit\u00e0 potrebbero rivelarsi costose e non richieste. Tuttavia, se le vostre esigenze si avvicinano a quelle delle grandi banche, Ab Initio potrebbe essere interessante per voi. <\/p>\n<p>Aiuta le aziende a raccogliere conoscenze globali e sviluppare un ecosistema, mentre consente agli sviluppatori di migliorare le proprie competenze in ETL, di approfondire le conoscenze nel shell, offre la possibilit\u00e0 di apprendere il linguaggio PDL, fornisce una visione visiva dei processi di caricamento e semplifica lo sviluppo grazie a un'ampia gamma di componenti funzionali.<\/p>\n<p>In questo post parler\u00f2 delle possibilit\u00e0 di Ab Initio e fornir\u00f2 caratteristiche comparative del suo utilizzo con Hive e GreenPlum.<\/p>\n<ul>\n<li>Descrizione del framework MDW e dei lavori per la sua configurazione su GreenPlum<\/li>\n<li>Caratteristiche comparative delle prestazioni di Ab Initio con Hive e GreenPlum<\/li>\n<li>Funzionamento di Ab Initio con GreenPlum in modalit\u00e0 Near Real Time<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLe funzionalit\u00e0 di questo prodotto sono molto ampie e richiedono tempo per essere comprese. Tuttavia, con le giuste competenze e impostazioni delle prestazioni, i risultati del trattamento dei dati sono molto impressionanti. L'utilizzo di Ab Initio pu\u00f2 fornire agli sviluppatori un'esperienza interessante. \u00c8 un nuovo approccio allo sviluppo ETL, un ibrido tra un ambiente visivo e lo sviluppo di caricamenti in un linguaggio simile a uno script.<\/p>\n<p>Le aziende stanno sviluppando i propri ecosistemi e questo strumento si rivela estremamente utile. Con Ab Initio \u00e8 possibile accumulare conoscenze sull\u2019attivit\u00e0 attuale e sfruttarle per espandere le attivit\u00e0 esistenti e aprirne di nuove. Tra le alternative ad Ab Initio si possono citare gli ambienti di sviluppo visivi come Informatica BDM e gli ambienti non visivi come Apache Spark.<\/p>\n<h3>Descrizione di Ab Initio<\/h3>\n<p>\nAb Initio, come altri strumenti ETL, \u00e8 un insieme di prodotti.<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c467fe1e8455805075856967b577f8b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAb Initio GDE (Graphical Development Environment) \u00e8 l\u2019ambiente per gli sviluppatori, dove si configurano le trasformazioni dei dati e si collegano tramite flussi di dati rappresentati da frecce. Questo insieme di trasformazioni \u00e8 chiamato grafo:<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/7b0c19a82ae8b461a9bd85117555e106.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe connessioni in ingresso e in uscita dei componenti funzionali sono porte e contengono campi calcolati all'interno delle trasformazioni. Diversi grafi, connessi tramite flussi di frecce nell'ordine della loro esecuzione, sono chiamati piano.<\/p>\n<p>Ci sono diverse centinaia di componenti funzionali, un numero considerevole. Molti di essi sono altamente specializzati. Le capacit\u00e0 delle trasformazioni classiche in Ab Initio sono pi\u00f9 ampie rispetto ad altri strumenti ETL. Ad esempio, Join ha pi\u00f9 uscite. Oltre al risultato dell'unione dei dataset, \u00e8 possibile ottenere come uscita le registrazioni dei dataset in ingresso che non sono riusciti a unirsi. Inoltre, si possono ottenere rejects, errors e log del funzionamento della trasformazione, che possono essere letti come un file di testo in questo stesso grafo e trattati da altre trasformazioni:<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c7d70879daad364a3d4aa41a0a1b738d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO, ad esempio, \u00e8 possibile materializzare il ricevitore di dati come una tabella e leggere i dati da esso nello stesso grafo.<\/p>\n<p>Ci sono trasformazioni originali. Ad esempio, la trasformazione Scan ha funzionalit\u00e0 simili a quelle delle funzioni analitiche. Ci sono trasformazioni con nomi esplicativi: Create Data, Read Excel, Normalize, Sort within Groups, Run Program, Run SQL, Join with DB, ecc. I grafi possono utilizzare parametri di runtime, inclusa la possibilit\u00e0 di trasferire parametri dal sistema operativo o al sistema operativo. I file con un insieme pronto di parametri da trasferire al grafo sono chiamati parameter sets (psets).<\/p>\n<p>Come ci si aspetta, Ab Initio GDE ha il suo repository, chiamato EME (Enterprise Meta Environment). Gli sviluppatori hanno la possibilit\u00e0 di lavorare con versioni locali del codice e di effettuare check in delle proprie sviluppazioni nel repository centrale.<\/p>\n<p>\u00c8 possibile, durante o dopo l'esecuzione del grafo, fare clic su qualsiasi connessione della trasformazione del flusso e visualizzare i dati passati tra queste trasformazioni:<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/a674507b2cd25b980cb862bda2e10cbe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e8 anche la possibilit\u00e0 di fare clic su qualsiasi flusso e visualizzare i dettagli di tracciamento: quante parallelismi ha elaborato la trasformazione, quante righe e byte sono state caricate in ciascuna delle parallelismi:<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/6188d17bebe756ee59e6956f9a40ec43.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 possibile suddividere l'esecuzione del grafo in fasi e contrassegnare quali trasformazioni devono essere eseguite per prime (nella fase zero), quali nella prima fase, quali nella seconda fase, e cos\u00ec via.<\/p>\n<p>Per ogni trasformazione \u00e8 possibile scegliere un layout (dove sar\u00e0 eseguita): senza parallelismi o in flussi paralleli, il cui numero pu\u00f2 essere specificato. In questo caso, i file temporanei creati da Ab Initio durante l'elaborazione delle trasformazioni possono essere collocati sia nel file system <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/server\/dts-los-angeles\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3635\">server<\/a>, che in HDFS.<\/p>\n<p>In ogni trasformazione basata su un template predefinito \u00e8 possibile creare il proprio script in linguaggio PDL, che ricorda un po' la shell. <\/p>\n<p>Utilizzando il linguaggio PDL, \u00e8 possibile estendere le funzionalit\u00e0 delle trasformazioni e, in particolare, \u00e8 possibile generare dinamicamente (durante l'esecuzione) frammenti di codice arbitrari in base ai parametri di runtime.<\/p>\n<p>Inoltre, Ab Initio ha una buona integrazione con il sistema operativo tramite shell. In particolare, in Sberbank si utilizza linux ksh. \u00c8 possibile scambiare variabili con la shell e utilizzarle come parametri nei grafic. \u00c8 possibile chiamare l'esecuzione dei grafici Ab Initio dalla shell e gestire Ab Initio.<\/p>\n<p>Oltre ad Ab Initio GDE, nella fornitura sono inclusi molti altri prodotti. C'\u00e8 il proprio Co&gt;Operation System che ambisce a essere un sistema operativo. C'\u00e8 Control&gt;Center, dove \u00e8 possibile programmare e monitorare i flussi di caricamento. Esistono prodotti per lo sviluppo a un livello pi\u00f9 primitivo rispetto a quanto consente Ab Initio GDE.<\/p>\n<h3>Descrizione del framework MDW e dei lavori per la sua configurazione su GreenPlum<\/h3>\n<p>\nInsieme ai propri prodotti, il fornitore offre il prodotto MDW (Metadata Driven Warehouse), che \u00e8 un configuratore di grafi progettato per assistere nelle attivit\u00e0 tipiche di popolamento dei data warehouse o dei data vault.<\/p>\n<p>Contiene parser di metadati personalizzati (specifici per il progetto) e generatori di codice pronti all'uso 'out of the box'.<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/0842ecb9550f369875103ccb23cdf121.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMDW riceve in input un modello di dati, un file di configurazione per la connessione al database (Oracle, Teradata o Hive) e alcune altre impostazioni. La parte specifica del progetto, ad esempio, distribuisce il modello nel database. La parte standard del prodotto genera grafi e file di configurazione corrispondenti in base al caricamento dei dati nelle tabelle del modello. Durante questo processo vengono creati grafi (e psets) per diverse modalit\u00e0 di lavoro iniziale e incrementale per l'aggiornamento delle entit\u00e0.<\/p>\n<p>Nei casi di Hive e RDBMS, vengono generati grafi differenti per l'aggiornamento iniziale e incrementale dei dati.<\/p>\n<p>Nel caso di Hive, i dati di delta ricevuti vengono uniti tramite Ab Initio Join ai dati che erano presenti nella tabella prima dell'aggiornamento. I caricamenti di dati in MDW (sia in Hive che in RDBMS) non solo inseriscono nuovi dati dalla delta, ma chiudono anche i periodi di validit\u00e0 dei dati in base alle chiavi primarie da cui proviene la delta. Inoltre, \u00e8 necessario riscrivere da zero la parte di dati non modificata. Questo \u00e8 necessario, dato che in Hive non ci sono operazioni di delete o update.<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/36b6dd7c4d45727ad7d7aa1183fdd5fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel caso di RDBMS, i grafi per l'aggiornamento incrementale dei dati appaiono pi\u00f9 ottimali, poich\u00e9 gli RDBMS hanno reali capacit\u00e0 di aggiornamento.<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b62ac222bed575a60b632b13e012f603.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa delta ricevuta viene caricata in una tabella intermedia nel database. Successivamente avviene l'unione della delta con i dati che erano presenti nella tabella prima dell'aggiornamento. Questo avviene tramite SQL utilizzando una query SQL generata. Successivamente, con i comandi SQL delete+insert nella tabella di destinazione, vengono inseriti i nuovi dati dalla delta e chiusi i periodi di validit\u00e0 dei dati in base alle chiavi primarie da cui proviene la delta. <br \/>\nNon \u00e8 necessario riscrivere i dati non modificati.<\/p>\n<p>Pertanto, siamo giunti alla conclusione che nel caso di Hive, MDW deve procedere a riscrivere l'intera tabella, poich\u00e9 Hive non ha una funzione di aggiornamento. Non c'\u00e8 niente di meglio della completa riscrittura dei dati durante l'aggiornamento. Nel caso di RDBMS, al contrario, i creatori del prodotto hanno ritenuto opportuno affidare l'unione e l'aggiornamento delle tabelle all'uso di SQL.<\/p>\n<p>Per un progetto con Sberbank, abbiamo creato una nuova implementazione riutilizzabile del caricatore di basi dati per GreenPlum. Questo \u00e8 stato realizzato sulla base di una versione generata da MDW per Teradata. Proprio Teradata, e non Oracle, \u00e8 risultata la pi\u00f9 adatta e simile, poich\u00e9 \u00e8 anch'essa un sistema MPP. I metodi operativi e la sintassi di Teradata e GreenPlum si sono dimostrati affini.<\/p>\n<p>Ecco alcuni esempi delle differenze critiche per MDW tra diversi RDBMS. In GreenPlum, a differenza di Teradata, \u00e8 necessario scrivere una clausola durante la creazione delle tabelle.<\/p>\n<pre><code class=\"sql\">distributed by<\/code><\/pre>\n<p>\nIn Teradata si scrive<\/p>\n<pre><code class=\"sql\">delete &lt;table&gt; all<\/code><\/pre>\n<p>\n, mentre in GreenPlum si scrive<\/p>\n<pre><code class=\"sql\">elimina da &lt;table&gt;<\/code><\/pre>\n<p>\nIn Oracle, per ottimizzare, si scrive<\/p>\n<pre><code class=\"sql\">delete from t where rowid in ()<\/code><\/pre>\n<p>\n, mentre in Teradata e GreenPlum si scrive<\/p>\n<pre><code class=\"sql\">delete from t where exists (select * from delta where delta.pk=t.pk)<\/code><\/pre>\n<p>\nVa inoltre notato che per far funzionare Ab Initio con GreenPlum \u00e8 stato necessario installare il client GreenPlum su tutti i nodi del cluster Ab Initio. Questo perch\u00e9 ci siamo connessi a GreenPlum contemporaneamente da tutti i nodi del nostro cluster. E affinch\u00e9 la lettura da GreenPlum fosse parallela e ogni flusso parallelo di Ab Initio leggesse la propria porzione di dati da GreenPlum, abbiamo dovuto inserire nella sezione \"where\" delle query SQL una costruzione comprensibile da Ab Initio.<\/p>\n<pre><code class=\"sql\">where ABLOCAL()<\/code><\/pre>\n<p>\ne definire il valore di questa costruzione, specificando il parametro per la trasformazione che legge dal DB.<\/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, che si compila in qualcosa di simile a<\/p>\n<pre><code class=\"sql\">mod(sk,10)=3<\/code><\/pre>\n<p>\n, cio\u00e8 \u00e8 necessario fornire a GreenPlum un filtro esplicito per ogni partizione. Per altri database (Teradata, Oracle), Ab Initio pu\u00f2 eseguire automaticamente questo parallelismo.<\/p>\n<h3>Caratteristiche comparative delle prestazioni di Ab Initio con Hive e GreenPlum<\/h3>\n<p>\nIn Sberbank \u00e8 stato condotto un esperimento per confrontare le prestazioni dei grafi generati da MDW in relazione a Hive e a GreenPlum. Nell'ambito dell'esperimento, nel caso di Hive c'erano 5 nodi nello stesso cluster di Ab Initio, mentre nel caso di GreenPlum c'erano 4 nodi in un cluster separato. Cio\u00e8, Hive aveva un certo vantaggio su GreenPlum 'in termini di hardware'.<\/p>\n<p>Sono state esaminate due coppie di grafi che eseguono lo stesso compito di aggiornamento dei dati in Hive e in GreenPlum. Nel frattempo, sono stati avviati i grafi generati dal configuratore MDW:<\/p>\n<ul>\n<li>caricamento iniziale + caricamento incrementale di dati generati casualmente nella tabella Hive<\/li>\n<li>caricamento iniziale + caricamento incrementale di dati generati casualmente nella stessa tabella GreenPlum<\/li>\n<\/ul>\n<p>\nIn entrambi i casi (Hive e GreenPlum) sono state avviate le operazioni di caricamento in 10 flussi paralleli su uno stesso cluster Ab Initio. I dati intermedi per il calcolo sono stati salvati in HDFS (in termini di Ab Initio \u00e8 stato utilizzato MFS layout usando HDFS). Una riga di dati generati casualmente occupava in entrambi i casi 200 byte.<\/p>\n<p>Il risultato \u00e8 stato il seguente:<\/p>\n<p><b>Hive:<\/b><\/p>\n<p><b>Caricamento iniziale in Hive<\/b><\/p>\n<p>Righe inserite<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Durata del caricamento iniziale<br \/>\nin secondi<br \/>\n41<br \/>\n203<br \/>\n1 601<\/p>\n<p><b>Caricamento incrementale in Hive<\/b><\/p>\n<p>Numero di righe presenti nella<br \/>\ntabella di destinazione all'inizio dell'esperimento<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Numero di righe delta applicate alla<br \/>\ntabella di destinazione durante l'esperimento<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Durata del caricamento incrementale<br \/>\nin secondi<br \/>\n88<br \/>\n299<br \/>\n<b>2 541<\/b><\/p>\n<p>\n<b>GreenPlum:<\/b><\/p>\n<p><b>Caricamento iniziale in GreenPlum<\/b><\/p>\n<p>Righe inserite<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Durata del caricamento iniziale<br \/>\nin secondi<br \/>\n72<br \/>\n360<br \/>\n3 631<\/p>\n<p><b>Caricamento incrementale in GreenPlum<\/b><\/p>\n<p>Numero di righe presenti nella<br \/>\ntabella di destinazione all'inizio dell'esperimento<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Numero di righe delta applicate alla<br \/>\ntabella di destinazione durante l'esperimento<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Durata del caricamento incrementale<br \/>\nin secondi<br \/>\n159<br \/>\n199<br \/>\n<b>321<\/b><\/p>\n<p>\nPossiamo vedere che la velocit\u00e0 del caricamento iniziale sia in Hive che in GreenPlum dipende linearmente dalla quantit\u00e0 di dati e per motivi di hardware migliore risulta essere leggermente pi\u00f9 veloce per Hive rispetto a GreenPlum.<\/p>\n<p>Il caricamento incrementale in Hive dipende anch'esso linearmente dalla quantit\u00e0 di dati precedentemente caricati nella tabella di destinazione e procede piuttosto lentamente con l'aumento della quantit\u00e0. Questo \u00e8 dovuto alla necessit\u00e0 di riscrivere l'intera tabella di destinazione. Ci\u00f2 significa che applicare piccole modifiche a tabelle enormi non \u00e8 un buon approccio per Hive.<\/p>\n<p>Al contrario, il caricamento incrementale in GreenPlum dipende poco dalla quantit\u00e0 di dati precedentemente caricati nella tabella di destinazione e procede piuttosto rapidamente. Questo \u00e8 stato possibile grazie alle SQL Joins e all'architettura di GreenPlum, che consente l'operazione di delete.<\/p>\n<p>Quindi, GreenPlum inserisce il delta tramite delete+insert, mentre in Hive non ci sono operazioni delete o update, quindi l'intero set di dati durante l'aggiornamento incrementale ha dovuto essere riscritto completamente. I dati evidenziati in grassetto sono particolarmente significativi poich\u00e9 corrispondono al caso pi\u00f9 comune di utilizzo di carichi di lavoro che richiedono molte risorse. Possiamo vedere che GreenPlum ha superato Hive in questo test di 8 volte.<\/p>\n<h3>Funzionamento di Ab Initio con GreenPlum in modalit\u00e0 Near Real Time<\/h3>\n<p>\nIn questo esperimento verificheremo la capacit\u00e0 di Ab Initio di aggiornare la tabella GreenPlum con porzioni di dati generate casualmente in un modo vicino al tempo reale. Considereremo la tabella GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval, con la quale si lavorer\u00e0.<\/p>\n<p>Useremo tre grafi Ab Initio per lavorarci:<\/p>\n<p>1) Grafico Create_test_data.mp \u2013 crea file di dati in HDFS con 6.000.000 di righe in 10 flussi paralleli. I dati sono casuali, la loro struttura \u00e8 organizzata per l'inserimento nella nostra tabella.<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/8cac605c1c5931313bd016a48fb6384e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b86988bf1722329bde60013ba025d600.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n2) Grafico mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 grafico MDW generato per l'inserimento iniziale dei dati nella nostra tabella in 10 flussi paralleli (vengono utilizzati dati di test generati dal grafico (1)).<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b4228a13c088c6b96abba35e9e58fe8e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n3) Grafico mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 grafico MDW generato per l'aggiornamento incrementale della nostra tabella in 10 flussi paralleli utilizzando un lotto di dati freschi in arrivo (delta), generati dal grafico (1).<\/p>\n<p><img decoding=\"async\" alt=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/714a901616cf84e5a1fd7a764373e30f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEseguiamo il seguente scenario in modalit\u00e0 NRT:<\/p>\n<ul>\n<li>generare 6.000.000 righe di test<\/li>\n<li>effettuare un caricamento iniziale, inserire 6.000.000 righe di test in una tabella vuota<\/li>\n<li>ripetere 5 volte il caricamento incrementale\n<ul>\n<li>generare 6.000.000 righe di test<\/li>\n<li>effettuare un'inserzione incrementale di 6.000.000 righe di test nella tabella (in questo caso, ai dati esistenti viene assegnata una scadenza valid_to_ts e vengono inseriti dati pi\u00f9 recenti con la stessa chiave primaria).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nQuesto scenario emula il funzionamento reale di un sistema aziendale: una quantit\u00e0 significativa di nuovi dati appare in tempo reale e viene immediatamente inserita in GreenPlum.<\/p>\n<p>Ora diamo un'occhiata al registro dell'esecuzione dello scenario:<\/p>\n<p><i>Inizio Create_test_data.input.pset alle 2020-06-04 11:49:11<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 11:49:37<br \/>\nInizio mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:49:37<br \/>\nFine mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:50:42<br \/>\nInizio Create_test_data.input.pset alle 2020-06-04 11:50:42<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 11:51:06<br \/>\nInizio mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:51:06<br \/>\nFine mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:53:41<br \/>\nInizio Create_test_data.input.pset alle 2020-06-04 11:53:41<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 11:54:04<br \/>\nInizio mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:54:04<br \/>\nFine mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:56:51<br \/>\nInizio Create_test_data.input.pset alle 2020-06-04 11:56:51<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 11:57:14<br \/>\nInizio mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:57:14<br \/>\nFine mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 11:59:55<br \/>\nInizio Create_test_data.input.pset alle 2020-06-04 11:59:55<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 12:00:23<br \/>\nInizio mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 12:00:23<br \/>\nFine mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset alle 2020-06-04 12:03:23<br \/>\nInizio Create_test_data.input.pset alle 2020-06-04 12:03:23<br \/>\nFine Create_test_data.input.pset alle 2020-06-04 12:03:49<br \/>\nInizia mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset il 2020-06-04 12:03:49<br \/>\nFine mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset il 2020-06-04 12:06:46<\/i><\/p>\n<p>Ecco l'immagine risultante:<\/p>\n<p>Grafico<br \/>\nStart time<br \/>\nTempo di fine<br \/>\nLunghezza<\/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>\nPossiamo vedere che 6.000.000 righe di incremento vengono elaborate in 3 minuti, il che \u00e8 abbastanza veloce.<br \/>\nI dati nella tabella di destinazione sono stati distribuiti nel seguente modo:<\/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=\"Quando hai scale da Sberbank. Utilizzo di Ab Initio per lavorare con Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/baefcfd8142f4ad6275333e3dcfccf94.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSi pu\u00f2 notare la corrispondenza dei dati inseriti con i momenti di avvio dei grafi.<br \/>\nQuindi, \u00e8 possibile avviare in Ab Initio il caricamento incrementale dei dati in GreenPlum con una frequenza molto alta e osservare un'alta velocit\u00e0 di inserimento di questi dati in GreenPlum. Naturalmente, non sar\u00e0 possibile avviarsi ogni secondo, poich\u00e9 Ab Initio, come qualsiasi strumento ETL, richiede del tempo per l'inizializzazione all'avvio.<\/p>\n<h2>Conclusione<\/h2>\n<p>\nAttualmente, Ab Initio \u00e8 utilizzato da Sberbank per costruire un Unico Livello Semantico dei Dati (ECS). Questo progetto prevede la creazione di una versione unica dello stato di diverse entit\u00e0 di business bancario. Le informazioni provengono da diverse fonti, le cui repliche vengono preparate su Hadoop. Sulla base delle esigenze aziendali, viene preparato un modello di dati e vengono descritte le trasformazioni dei dati. Ab Initio carica l'informazione nell'ECS e i dati caricati non solo sono di interesse per il business, ma servono anche come fonte per costruire vetrine dei dati. Inoltre, le funzionalit\u00e0 del prodotto permettono di utilizzare come destinatario diversi sistemi (Hive, Greenplum, Teradata, Oracle), il che consente di preparare i dati per il business in vari formati richiesti senza eccessivi sforzi.<\/p>\n<p>Le capacit\u00e0 di Ab Initio sono ampie; ad esempio, il framework allegato MDW consente di costruire la storicit\u00e0 tecnica e aziendale dei dati \"out of the box\". Per gli sviluppatori, Ab Initio offre la possibilit\u00e0 di \"non reinventare la ruota\" e di utilizzare i molteplici componenti funzionali gi\u00e0 disponibili, che essenzialmente fungono da librerie necessarie per lavorare con i dati.<\/p>\n<blockquote><p>Autore \u2014 esperto della comunit\u00e0 professionale di Sberbank SberProfi DWH\/BigData. La comunit\u00e0 professionale SberProfi DWH\/BigData \u00e8 responsabile dello sviluppo delle competenze nei settori come l'ecosistema Hadoop, Teradata, Oracle DB, GreenPlum, cos\u00ec come negli strumenti BI Qlik, SAP BO, Tableau e altri.<\/p><\/blockquote>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47 Quando avete dimensioni da gigante. Utilizzo di Ab Initio con Hive e GreenPlum | ProHoster","description":"Tempo fa ci siamo trovati di fronte alla questione della scelta di uno strumento ETL per lavorare con Big Data. La soluzione precedente, Informatica BDM, non ci soddisfaceva a causa delle sue funzionalit\u00e0 limitate.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/87609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=87609"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87609\/revisions"}],"predecessor-version":[{"id":162163,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87609\/revisions\/162163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/87610"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=87609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=87609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=87609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}