Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connettore Amazon Athena DocumentDB
Il connettore Amazon Athena DocumentDB consente ad Athena di comunicare con le tue istanze DocumentDB in modo da poter interrogare i tuoi dati DocumentDB. SQL Il connettore funziona anche con qualsiasi endpoint compatibile con MongoDB.
A differenza dei tradizionali archivi di dati relazionali, le raccolte Amazon DocumentDB non hanno uno schema prestabilito. DocumentDB non dispone di un archivio dei metadati. Ogni voce in una raccolta DocumentDB può avere campi e tipi di dati diversi.
Il connettore DocumentDB supporta due meccanismi per la generazione di informazioni sullo schema delle tabelle: inferenza di base dello schema e AWS Glue Data Catalog metadati.
L'inferenza dello schema è l'impostazione predefinita. Questa opzione esegue la scansione di un numero limitato di documenti della raccolta, forma un'unione di tutti i campi e forza i campi che hanno tipi di dati non sovrapposti. Questa opzione funziona bene per le raccolte che hanno voci per lo più uniformi.
Per le raccolte con una maggiore varietà di tipi di dati, il connettore supporta il recupero dei metadati dal AWS Glue Data Catalog. Se il connettore vede un AWS Glue database e tabella che corrispondono ai nomi del database e della raccolta DocumentDB, ottiene le informazioni sullo schema dal corrispondente AWS Glue tabella. Quando crei il tuo AWS Glue tabella, ti consigliamo di renderla un superset di tutti i campi a cui potresti voler accedere dalla tua raccolta DocumentDB.
Se hai abilitato Lake Formation nel tuo account, il IAM ruolo del tuo connettore Lambda federato Athena che hai distribuito nel AWS Serverless Application Repository deve aver letto l'accesso in Lake Formation al AWS Glue Data Catalog.
Prerequisiti
Distribuisci il connettore sul tuo Account AWS utilizzando la console Athena o AWS Serverless Application Repository. Per ulteriori informazioni, vedere Implementa un connettore di origine dati oUtilizzare il AWS Serverless Application Repository per distribuire un connettore di origine dati.
Parametri
Utilizza le variabili di ambiente Lambda illustrate in questa sezione per configurare il connettore DocumentDB.
-
spill_bucket: specifica il bucket Amazon S3 per i dati che superano i limiti della funzione Lambda.
-
spill_prefix: (facoltativo) per impostazione predefinita, viene utilizzata una sottocartella nello
spill_bucket
specificato chiamataathena-federation-spill
. Ti consigliamo di configurare un ciclo di vita dell'archiviazione di Amazon S3 in questa posizione per eliminare gli spill più vecchi di un numero predeterminato di giorni o ore. -
spill_put_request_headers — (Facoltativo) Una mappa JSON codificata delle intestazioni e dei valori delle richieste per la richiesta Amazon S3 utilizzata per lo spilling (ad esempio,).
putObject
{"x-amz-server-side-encryption" : "AES256"}
Per altre possibili intestazioni, consulta PutObjectAmazon Simple Storage Service API Reference. -
kms_key_id — (Facoltativo) Per impostazione predefinita, tutti i dati trasferiti su Amazon S3 vengono crittografati utilizzando la modalità di crittografia autenticata e una chiave generata AES GCM casualmente. Per fare in modo che la funzione Lambda utilizzi chiavi di crittografia più potenti generate da KMS like
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, puoi specificare un ID di KMS chiave. -
disable_spill_encryption: (facoltativo) se impostato su
True
, disabilita la crittografia dello spill. L'impostazione predefinita èFalse
che i dati trasferiti su S3 vengano crittografati utilizzando AES GCM -, utilizzando una chiave generata casualmente o per generare chiavi. KMS La disabilitazione della crittografia dello spill può migliorare le prestazioni, soprattutto se la posizione dello spill utilizza la crittografia lato server. -
disable_glue — (Facoltativo) Se presente e impostato su true, il connettore non tenta di recuperare metadati supplementari da AWS Glue.
-
glue_catalog — (Facoltativo) Utilizzate questa opzione per specificare un account multiplo AWS Gluecatalogo. Per impostazione predefinita, il connettore tenta di ottenere i metadati dal proprio AWS Glue conto.
-
default_docdb: se presente, specifica una stringa di connessione DocumentDB da utilizzare quando non esiste alcuna variabile di ambiente specifica del catalogo.
-
disable_projection_and_casing: (facoltativo) disabilita la proiezione e la formattazione delle maiuscole. Usa questa opzione se desideri eseguire query sulle tabelle Amazon DocumentDB che utilizzano nomi di colonna con distinzione tra maiuscole e minuscole. Il parametro
disable_projection_and_casing
utilizza i seguenti valori per specificare il comportamento di formattazione di maiuscole e minuscole e della mappatura delle colonne:-
false: si tratta dell'impostazione di default. La proiezione è abilitata e il connettore prevede che tutti i nomi delle colonne siano in minuscolo.
-
true: disabilita la proiezione e la combinazione di maiuscole e minuscole. Quando utilizzi il parametro
disable_projection_and_casing
, tieni presente i seguenti punti:-
L'utilizzo del parametro può comportare un consumo maggiore di larghezza di banda. Inoltre, se la funzione Lambda non è nella stessa Regione AWS come fonte di dati, applicherai uno standard più elevato AWS costi di trasferimento tra regioni a causa del maggiore utilizzo della larghezza di banda. Per ulteriori informazioni sui costi di trasferimento tra regioni, vedere AWS Costi di trasferimento dati per le architetture
server e serverless in AWS Blog sulla rete di partner. -
Dato che viene trasferito un numero maggiore di byte e poiché un numero maggiore di byte richiede un tempo di deserializzazione maggiore, la latenza complessiva può aumentare.
-
-
-
enable_case_insensitive_match — (Facoltativo) When, esegue ricerche senza distinzione tra maiuscole e minuscole su nomi di schemi e
true
tabelle in Amazon DocumentDB. Il valore predefinito èfalse
. Utilizzalo se la tua query contiene nomi di schemi o tabelle in maiuscolo.
Specifica delle stringhe di connessione
Puoi specificare una o più proprietà che definiscono i dettagli di connessione DocumentDB per le istanze DocumentDB utilizzate con il connettore. A tale scopo, imposta una variabile di ambiente Lambda che corrisponda al nome del catalogo che desideri utilizzare in Athena. Ad esempio, supponiamo di voler utilizzare le seguenti query per interrogare due diverse istanze DocumentDB da Athena:
SELECT * FROM "docdb_instance_1".database.table
SELECT * FROM "docdb_instance_2".database.table
Prima di poter utilizzare queste due SQL istruzioni, è necessario aggiungere due variabili di ambiente alla funzione Lambda: docdb_instance_1
and. docdb_instance_2
Il valore di ciascuno deve essere una stringa di connessione DocumentDB nel formato seguente:
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Utilizzo dei segreti
Facoltativamente, puoi usare AWS Secrets Manager per una parte o tutto il valore dei dettagli della stringa di connessione. Per utilizzare la funzionalità Athena Federated Query con Secrets Manager, la persona VPC connessa alla funzione Lambda deve avere accesso a Internet
Se si utilizza la sintassi ${my_secret}
per inserire il nome di un segreto di Secrets Manager nella stringa di connessione, il connettore sostituisce esattamente ${my_secret}
con il valore di testo semplice di Secrets Manager. I segreti devono essere archiviati come segreti di testo semplice con valore
. I segreti memorizzati come <username>
:<password>
{username:
non verranno passati correttamente alla stringa di connessione.<username>
,password:<password>
}
I segreti possono essere utilizzati esclusivamente anche per l'intera stringa di connessione e il nome utente e la password possono essere definiti all'interno del segreto.
Ad esempio, supponiamo di impostare la variabile di ambiente Lambda per docdb_instance_1
sul seguente valore:
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Athena Query Federation tenta SDK automaticamente di recuperare un segreto denominato da Secrets docdb_instance_1_creds
Manager e di inserire quel valore al posto di. ${docdb_instance_1_creds}
Qualsiasi parte della stringa di connessione racchiusa entro la combinazione di caratteri ${
}
viene interpretata come un segreto da Secrets Manager. Se specifichi un nome del segreto che il connettore non riesce a trovare in Secrets Manager, il connettore non sostituisce il testo.
Configurazione di database e tabelle in AWS Glue
Poiché la funzionalità di inferenza dello schema integrata nel connettore esegue la scansione di un numero limitato di documenti e supporta solo un sottoinsieme di tipi di dati, potresti voler utilizzare AWS Glue per i metadati invece.
Per abilitare un AWS Glue tabella da usare con Amazon DocumentDB, è necessario disporre di un AWS Glue database e tabella per il database e la raccolta DocumentDB per cui si desidera fornire metadati supplementari.
Per usare un AWS Glue tabella per metadati supplementari
-
Usa il AWS Glue console per creare un AWS Glue database con lo stesso nome del database Amazon DocumentDB.
-
Imposta la URI proprietà del database da includere docdb-metadata-flag.
-
(Facoltativo) Aggiungere la proprietà della sourceTabletabella. Questa proprietà definisce il nome della tabella di origine in Amazon DocumentDB. Usa questa proprietà se AWS Glue la tabella ha un nome diverso dal nome della tabella in Amazon DocumentDB. Differenze nelle regole di denominazione tra AWS Glue e Amazon DocumentDB può renderlo necessario. Ad esempio, le lettere maiuscole non sono consentite in AWS Glue nomi di tabella, ma sono consentiti nei nomi di tabella di Amazon DocumentDB.
-
(Facoltativo) Aggiungi la proprietà della columnMappingtabella. Questa proprietà definisce le mappature dei nomi delle colonne. Utilizzate questa proprietà se AWS Glue le regole di denominazione delle colonne impediscono di creare un AWS Glue tabella con gli stessi nomi di colonna di quelli della tabella Amazon DocumentDB. Questo può essere utile perché le lettere maiuscole sono consentite nei nomi delle colonne di Amazon DocumentDB, ma non sono consentite in AWS Glue nomi di colonne.
Il valore della proprietà
columnMapping
dovrebbe essere un insieme di mappature nel formatocol1=Col1,col2=Col2
.Nota
Il mapping di colonne si applica solo ai nomi delle colonne di primo livello e non ai campi annidati.
Dopo aver aggiunto il AWS Glue
columnMapping
proprietà table, è possibile rimuovere la variabile di ambientedisable_projection_and_casing
Lambda. -
Assicurati di utilizzare i tipi di dati appropriati per AWS Glue come elencato in questo documento.
Supporto dei tipi di dati
Questa sezione elenca i tipi di dati utilizzati dal connettore DocumentDB per l'inferenza dello schema e i tipi di dati quando AWS Glue vengono utilizzati i metadati.
Tipi di dati di inferenza dello schema
La funzionalità di inferenza dello schema del connettore DocumentDB tenta di dedurre i valori come appartenenti a uno dei seguenti tipi di dati. Nella tabella seguente vengono illustrati i tipi di dati corrispondenti per Amazon DocumentDB, Java e Apache Arrow.
Apache Arrow | Java o DocDB |
---|---|
VARCHAR | Stringa |
INT | Numero intero |
BIGINT | Long |
BIT | Booleano |
FLOAT4 | Float |
FLOAT8 | Doppio |
TIMESTAMPSEC | Data |
VARCHAR | ObjectId |
LIST | Elenco |
STRUCT | Documento |
AWS Glue tipi di dati
Se si utilizza AWS Glue per i metadati supplementari, puoi configurare i seguenti tipi di dati. La tabella mostra i tipi di dati corrispondenti per AWS Glue e Apache Arrow.
AWS Glue | Apache Arrow |
---|---|
int | INT |
bigint | BIGINT |
double | FLOAT8 |
float | FLOAT4 |
booleano | BIT |
binary | VARBINARY |
string | VARCHAR |
Elenco | LIST |
Struct | STRUCT |
Autorizzazioni richieste
Per tutti i dettagli sulle IAM politiche richieste da questo connettore, consulta la Policies
sezione del file athena-docdb.yaml
-
Accesso in scrittura ad Amazon S3: per trasferire i risultati di query di grandi dimensioni, il connettore richiede l'accesso in scrittura a una posizione in Amazon S3.
-
Athena GetQueryExecution: il connettore utilizza questa autorizzazione per fallire rapidamente quando la query Athena upstream è terminata.
-
AWS Glue Data Catalog— Il connettore DocumentDB richiede l'accesso in sola lettura a AWS Glue Data Catalog per ottenere informazioni sullo schema.
-
CloudWatch Registri: il connettore richiede l'accesso ai CloudWatch registri per l'archiviazione dei registri.
-
AWS Secrets Manager accesso in lettura: se si sceglie di archiviare i dettagli degli endpoint di DocumentDB in Secrets Manager, è necessario concedere al connettore l'accesso a tali segreti.
-
VPCaccesso: il connettore richiede la possibilità di collegare e scollegare interfacce all'utente in VPC modo che possa connettersi ad esso e comunicare con le istanze di DocumentDB.
Prestazioni
Il connettore Amazon DocumentDB per Athena al momento non supporta le scansioni in parallelo, ma tenta di eseguire il pushdown dei predicati come parte delle query DocumentDB e i predicati sugli indici della raccolta DocumentDB risultano in una quantità di dati scansionati significativamente inferiore.
La funzione Lambda esegue il pushdown dei predicati per ridurre la quantità di dati scansionati dalla query. Tuttavia, la selezione di un sottoinsieme di colonne a volte comporta un runtime delle query più lungo. Le clausole LIMIT
riducono la quantità di dati scansionati, ma se non viene fornito un predicato, le query SELECT
con una clausola LIMIT
eseguiranno la scansione di almeno 16 MB di dati.
Interrogazioni pass-through
Il connettore Amazon DocumentDB Athena supporta le query passthrough ed è basato su No. SQL Per informazioni sull'esecuzione di query in Amazon DocumentDB, consulta la sezione Querying nella Amazon DocumentDB Developer Guide.
Per utilizzare le query passthrough con Amazon DocumentDB, utilizza la seguente sintassi:
SELECT * FROM TABLE( system.query( database => '
database_name
', collection => 'collection_name
', filter => '{query_syntax
}' ))
L'esempio seguente interroga il example
database all'interno della TPCDS
raccolta, filtrando tutti i libri con il titolo Bill of Rights.
SELECT * FROM TABLE( system.query( database => 'example', collection => 'tpcds', filter => '{title: "Bill of Rights"}' ))
Risorse aggiuntive
-
Per un articolo sull'utilizzo di Amazon Athena Federated Query per connettere un database MongoDB ad Amazon per creare dashboard e visualizzazioni, consulta QuickSight Visualizzare i dati MongoDB
da Amazon usando Amazon Athena Federated Query nel QuickSight AWS Blog sui Big Data. Per ulteriori informazioni su questo connettore, visita il sito corrispondente
su GitHub .com.