Recensione Greenplum 6: Jack of all trades, master of some

Un database MPP (massively parallel processing) distribuisce dati e query su ogni nodo in un cluster di commodity server. L'approccio di Greenplum alla creazione di un data warehouse MPP è unico. Basandosi su un database open source consolidato, PostgreSQL, sono in grado di concentrare gli sforzi ingegneristici sull'aggiunta di valore laddove conta: parallelizzazione e pianificazione delle query associate, un archivio dati colonnare per analisi e capacità di gestione.

Greenplum è di proprietà e sviluppato da Pivotal, con il supporto della comunità open source, ed è disponibile gratuitamente con la licenza Apache 2. L'ultima versione, Greenplum 6.0, fa molto per reintegrare il core Greenplum con PostgreSQL, incorporando quasi sei anni di miglioramenti dal progetto PostgreSQL. Questi sforzi significano che, in futuro, Greenplum otterrà nuove funzionalità e miglioramenti "gratuitamente", mentre Pivotal si concentra sul far funzionare bene queste aggiunte in un ambiente parallelo.

Architettura Greenplum

Un database MPP utilizza quella che è nota come architettura nulla condiviso . In questa architettura, i singoli server di database (basati su PostgreSQL), noti come segmenti, elaborano ciascuno una parte dei dati prima di restituire i risultati a un host principale. Architetture simili si vedono in altri sistemi di elaborazione dati, come Spark o Solr. Questa è una delle caratteristiche architettoniche chiave che consente a Greenplum di integrare altri sistemi paralleli, come l'apprendimento automatico o l'analisi del testo.

Poiché Solr, ad esempio, ha un'architettura distribuita simile, Greenplum può collegare le singole istanze di elaborazione Solr con gli host del segmento per fornire una query e un'esperienza analitica più o meno fluide. Ciò significa anche che i dati vengono elaborati sul posto, evitando costosi spostamenti di dati attraverso la rete.

Fondamentale

Distribuzione di Greenplum

Greenplum può essere implementato in diversi modi: in tutti e tre i principali cloud tramite i rispettivi marketplace, containerizzato o bare metal. Come con qualsiasi applicazione cluster, le migliori prestazioni si ottengono su macchine bare metal dedicate. Ho distribuito un cluster a due nodi su Google Cloud Platform con tutti i campanelli e fischietti in pochi minuti. E ho installato Greenplum localmente in una VM utilizzando i binari precompilati in circa un'ora.

L'installazione locale è stata necessaria perché Greenplum 6 non è ancora disponibile nelle nuvole; è previsto per novembre 2019. L'installazione locale mi ha anche dato l'opportunità di valutare la qualità della documentazione di Greenplum. Come ci si potrebbe aspettare da un prodotto proprietario precedentemente closed-source, è eccellente.

La disponibilità di più opzioni di distribuzione consente alle aziende di ottimizzare le proprie distribuzioni per soddisfare i requisiti operativi. Ad esempio, i modelli possono essere addestrati su un cluster bare metal multi-nodo per lo sviluppo rapido del modello, quindi distribuiti su una singola istanza di Pivotal Postgres che esegue un endpoint REST in un contenitore per rendere operativo il modello.

Query federate di Greenplum

I dati oggi sono ovunque: in luoghi diversi, formati diversi e "temperature" diverse. Il Pivotal Extension Framework (PXF), introdotto in Greenplum 5, è cresciuto dal vecchio connettore HDFS in un metodo generico per l'accesso alle tabelle di dati esterne in Greenplum. PXF si connette anche a diversi formati di dati, come file di testo (es. Web log), database esterni, ORC, Parquet e HBase. È possibile aggiungere nuove origini dati a PFX utilizzando un'API Java.

Combinando PXF con le funzionalità di accesso esterno apportate con PostgreSQL 9.4, Greenplum può eseguire query federate su posizioni di dati, inclusi flussi Kafka, HDFS, Spark e archivi di oggetti Amazon S3. Quest'ultima capacità, interrogando gli store di oggetti Amazon S3, include l'API SELECT S3 nativa di Amazon, migliorando le prestazioni filtrando all'edge. 

Le query federate possono essere più utili di quanto immagini. Ad esempio, supponiamo di voler individuare tutti gli individui che:

lavorare in "" e conoscersi "direttamente" e i cui nomi suonano come "Doug" o "Steve" e essersi scambiati una telefonata entro 24 ore da Singapore o San Francisco

Questo tipo di query potrebbe essere visto in un'indagine sulle frodi o in risposta alla richiesta di informazioni di un regolatore finanziario. In una tipica impresa, queste informazioni saranno distribuite su una mezza dozzina o più sistemi diversi e richiederanno forse una settimana o più per rispondere. Con la query federata, possiamo unirla insieme in una singola query e rispondere entro un'ora. In un'epoca di maggiore controllo normativo, molte aziende lottano per evitare multe per aver risposto in ritardo alle domande e le query federate aiutano molto qui.

Analisi e machine learning Greenplum

L'estensione MADlib di Greenplum, una libreria basata su SQL per l'analisi dei dati e l'apprendimento automatico, è stata inizialmente sviluppata da diverse università e Greenplum. MADlib è stato progettato per funzionare con l'architettura parallela del nulla condiviso di Greenplum. Non tutti gli algoritmi di apprendimento automatico possono essere resi paralleli, ma per quelli che possono, MADlib raggiunge una scalabilità più o meno lineare con la dimensione del set di dati, evitando il trasferimento dei dati. MADlib include poco più di 50 degli algoritmi di apprendimento automatico più comunemente utilizzati.

Una delle funzionalità più utili di MADlib è l'interfaccia SQL, che consente al citizen data scientist di aggiungere valore senza dover scalare la curva di apprendimento di Python o R. I modelli possono essere implementati tramite un endpoint REST MADlib per rendere operative le intuizioni analitiche. Per un'azienda che ha un livello medio di maturità analitica e che implementa strategie di gestione delle decisioni campione / sfidante, l'utilizzo di SQL può aumentare il numero di modelli presi in considerazione senza che le risorse aggiuntive vengano dirottate da un team centrale.

Per l'analista di dati tradizionale, il connettore PivotalR (disponibile su CRAN) fornisce una classica interfaccia in linguaggio R a MADlib traducendo il codice R nelle istruzioni SQL corrispondenti sul client, quindi inviandole al cluster Greenplum per l'esecuzione. Ciò evita il trasferimento di dati e consente la manipolazione di grandi frame di dati che altrimenti sarebbe impossibile in R a causa dei vincoli di memoria.

Fondamentale

Data warehouse HTAP

Elaborazione ibrida transazionale / analitica (HTAP) è un termine coniato da Gartner. La loro definizione:

L'HTAP (Hybrid Transaction / Analytical Processing) è un'architettura applicativa emergente che "rompe il muro" tra elaborazione delle transazioni e analisi. Consente un processo decisionale più informato e "in tempo reale". 

In pratica, ciò significa che i casi d'uso del sistema sono un mix di query lunghe e brevi, nonché aggiornamenti ed eliminazioni. Per supportare HTAP e prevenire la fame di risorse, Greenplum implementa una forma di containerizzazione SQL chiamata gruppi di risorse che consente l'isolamento delle risorse in un ambiente HTAP multi-tenant. Utilizzando un gruppo di risorse è possibile limitare CPU, RAM (per gruppo o query) e massima concorrenza. I gruppi di risorse migliorano le prestazioni sui carichi di lavoro misti e prevengono la concorrenza tra le query per le risorse.

Una delle principali differenze tra PostgreSQL e Greenplum è il pianificatore di query. Sebbene Greenplum abbia ereditato il pianificatore di query PostgreSQL quando è stato biforcato, una pianificazione efficiente delle query in un ambiente distribuito è significativamente diversa rispetto a una singola macchina. Per questo motivo Greenplum ha deciso di creare il proprio pianificatore di query, basandosi sul Cascades Framework for Query Optimization. Questo algoritmo valuta tutti i possibili piani di query e assegna loro un costo, selezionando il piano con il costo più basso (più veloce) per l'esecuzione.

Greenplum fornisce alcune funzionalità per aiutare il pianificatore di query a evitare lo spostamento dei dati, come la possibilità di replicare le tabelle delle dimensioni su ogni nodo del cluster per operazioni di join locale più veloci e compressione dei dati regolabile.

L'elaborazione dei dati semi-strutturata viene ereditata da PostgreSQL e include JSON e JSONB, XML, coppie chiave-valore (HSTORE) e testo normale. GIN (Generalized Inverted Index), anch'esso ereditato da PostgreSQL, può essere utilizzato per indicizzare una colonna di testo utilizzata di frequente. Per query di testo più complesse, è possibile utilizzare GPText. GPText integra segmenti Greenplum con frammenti Apache Solr per fornire query di ricerca in linguaggio naturale. Poiché i frammenti Solr si trovano sullo stesso nodo, hanno la stessa architettura parallela.

Prestazioni Greenplum

I database HTAP richiedono un bilanciamento tra query analitiche di grandi dimensioni e di lunga esecuzione, query ad-hoc brevi e transazioni ACID sul lato OLTP dell'equazione. Buone prestazioni in questo scenario di carico di lavoro misto sono importanti per il caso d'uso ibrido a cui mira Greenplum. Il kernel PostgreSQL 9.4 ha fornito a Greenplum 6 una serie di ottimizzazioni, principalmente per evitare blocchi, che si traducono in un aumento di 60 volte delle prestazioni rispetto a Greenplum 5 sui benchmark TPC-B.

Fondamentale

Dato che PostgreSQL ha aperto la strada a ulteriori ottimizzazioni (ed è ora alla versione 12), possiamo aspettarci ulteriori miglioramenti in Greenplum man mano che il kernel viene aggiornato nuovamente in Greenplum 7.

Centro di comando Greenplum

Il Greenplum Command Center fa parte dell'offerta Pivotal e fornisce un'interfaccia basata sul web per il monitoraggio e la gestione di un cluster Greenplum (o più cluster). Sebbene è improbabile che i DBA hard-core rinuncino alle loro interfacce della riga di comando, il Command Center è uno strumento di gestione ben accetto per le distribuzioni a livello di reparto che potrebbero non avere accesso a un DBA a tempo pieno. L'ho trovato facile da navigare e ben documentato. Utenti, query, nodi, segmenti e gruppi di risorse possono essere facilmente gestiti tramite l'interfaccia.

Greenplum nell'impresa

Greenplum è la scelta ideale per uno standard dipartimentale, in quanto può gestire carichi di lavoro misti, inclusa l'analisi predittiva, in un'unica piattaforma. Se non stai scegliendo software à la carte da un menu ELA o desideri sfuggire al `` purgatorio pilota '' dell'IA, l'investimento nell'approccio HTAP di Greenplum potrebbe fornire un modo per aumentare gli usi innovativi dell'apprendimento automatico e dell'analisi a un prezzo inferiore rispetto a soluzioni concorrenti.

Greenplum è anche un gioco da ragazzi per le sostituzioni di livello aziendale Netezza o Teradata. E sebbene Greenplum non sia all'altezza di strappare OLTP da Oracle Database o Microsoft SQL Server in tutta l'azienda, funzionerà bene per i sistemi transazionali di medie dimensioni.

Greenplum è un buon esempio della regola 80/20. Sebbene non esegua alcuna singola attività così come uno strumento appositamente progettato, la fa abbastanza bene da coprire l'80% dei casi d'uso, e questo senza il sovraccarico organizzativo e operativo coinvolto nell'unione di più sistemi e integrandoli in una pipeline di analisi. Ciò pesa molto a suo favore se si considera il costo totale di proprietà.

Costo : open source gratuito con licenza Apache 2.0. 

Piattaforme : disponibile come codice sorgente; come pacchetti per le distribuzioni CentOS, Red Hat, Debian e Ubuntu Linux; e nei marketplace di Amazon Web Services, Microsoft Azure e Google Cloud Platform.