Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konektor Amazon Athena DocumentDB
Konektor Amazon Athena DocumentDB memungkinkan Athena berkomunikasi dengan instans DocumentDB Anda sehingga Anda dapat menanyakan data DocumentDB Anda. SQL Konektor juga bekerja dengan endpoint yang kompatibel dengan MongoDB.
Tidak seperti penyimpanan data relasional tradisional, koleksi Amazon DocumentDB tidak memiliki skema yang ditetapkan. DocumentDB tidak memiliki toko metadata. Setiap entri dalam koleksi DocumentDB dapat memiliki bidang dan tipe data yang berbeda.
Konektor DocumentDB mendukung dua mekanisme untuk menghasilkan informasi skema tabel: inferensi skema dasar dan metadata. AWS Glue Data Catalog
Inferensi skema adalah default. Opsi ini memindai sejumlah kecil dokumen dalam koleksi Anda, membentuk gabungan semua bidang, dan memaksa bidang yang memiliki tipe data yang tidak tumpang tindih. Opsi ini berfungsi dengan baik untuk koleksi yang sebagian besar memiliki entri seragam.
Untuk koleksi dengan variasi tipe data yang lebih besar, konektor mendukung pengambilan metadata dari file. AWS Glue Data Catalog Jika konektor melihat AWS Glue database dan tabel yang cocok dengan database DocumentDB dan nama koleksi Anda, ia mendapatkan informasi skema dari tabel yang sesuai. AWS Glue Saat Anda membuat AWS Glue tabel, kami sarankan Anda menjadikannya superset dari semua bidang yang mungkin ingin Anda akses dari koleksi DocumentDB Anda.
Jika Anda mengaktifkan Lake Formation di akun Anda, IAM peran untuk konektor Lambda federasi Athena yang Anda gunakan harus memiliki akses baca AWS Serverless Application Repository di Lake Formation ke. AWS Glue Data Catalog
Konektor ini tidak dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Konektor ini tidak mendukung kontrol akses data yang ditentukan dalam Lake Formation di tingkat katalog, database, tabel, kolom, baris, dan tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.
Prasyarat
Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat Buat koneksi sumber data atau Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data.
Parameter
Gunakan parameter di bagian ini untuk mengkonfigurasi konektor DocumentDB.
catatan
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue
Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat sebelum 3 Desember 2024. Ini dapat berbeda dari properti AWS Glue koneksi yang sesuai. Mulai 3 Desember 2024, gunakan parameter di bawah ini hanya jika Anda menggunakan konektor sumber data Athena versi sebelumnya secara manual.
-
spill_bucket - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
-
spill_prefix — (Opsional) Default ke subfolder dalam nama yang ditentukan.
spill_bucket
athena-federation-spill
Kami menyarankan Anda mengonfigurasi siklus hidup penyimpanan Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya. -
spill_put_request_headers — (Opsional) Peta header permintaan dan nilai yang JSON dikodekan untuk permintaan Amazon S3 yang digunakan untuk tumpahan (misalnya,).
putObject
{"x-amz-server-side-encryption" : "AES256"}
Untuk kemungkinan header lainnya, lihat PutObjectdi APIReferensi Layanan Penyimpanan Sederhana Amazon. -
kms_key_id — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan AES mode enkripsi yang diautentikasi dan kunci yang dihasilkan secara acak. GCM Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS like
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, Anda dapat menentukan ID KMS kunci. -
disable_spill_encryption — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan.
True
DefaultnyaFalse
agar data yang tumpah ke S3 dienkripsi menggunakan AES - GCM — baik menggunakan kunci yang dihasilkan secara acak atau untuk menghasilkan kunci. KMS Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server. -
disable_glue — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
-
glue_catalog - (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .
-
default_docdb - Jika ada, menentukan string koneksi DocumentDB untuk digunakan ketika tidak ada variabel lingkungan khusus katalog ada.
-
disable_projection_and_casing - (Opsional) Menonaktifkan proyeksi dan casing. Gunakan jika Anda ingin menanyakan tabel Amazon DocumentDB yang menggunakan nama kolom peka huruf besar/kecil.
disable_projection_and_casing
Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku pemetaan casing dan kolom:-
false — Ini adalah pengaturan default. Proyeksi diaktifkan, dan konektor mengharapkan semua nama kolom berada dalam huruf kecil.
-
benar - Menonaktifkan proyeksi dan casing. Saat menggunakan
disable_projection_and_casing
parameter, ingatlah hal-hal berikut:-
Penggunaan parameter dapat menghasilkan penggunaan bandwidth yang lebih tinggi. Selain itu, jika fungsi Lambda Anda tidak sama Wilayah AWS dengan sumber data Anda, Anda akan dikenakan biaya transfer AWS lintas wilayah standar yang lebih tinggi sebagai akibat dari penggunaan bandwidth yang lebih tinggi. Untuk informasi selengkapnya tentang biaya transfer lintas wilayah, lihat Biaya Transfer AWS Data untuk Arsitektur Server dan Tanpa Server
di Blog Jaringan Mitra. AWS -
Karena jumlah byte yang lebih besar ditransfer dan karena jumlah byte yang lebih besar memerlukan waktu deserialisasi yang lebih tinggi, latensi keseluruhan dapat meningkat.
-
-
-
enable_case_insensitive_match — (Opsional) Saat, melakukan pencarian yang tidak peka huruf besar/kecil terhadap skema dan nama tabel di
true
Amazon DocumentDB. Default-nya adalahfalse
. Gunakan jika kueri Anda berisi skema huruf besar atau nama tabel.
Menentukan string koneksi
Anda dapat memberikan satu atau beberapa properti yang menentukan detail koneksi DocumentDB untuk instance DocumentDB yang Anda gunakan dengan konektor. Untuk melakukan ini, tetapkan variabel lingkungan Lambda yang sesuai dengan nama katalog yang ingin Anda gunakan di Athena. Misalnya, Anda ingin menggunakan kueri berikut untuk menanyakan dua instance DocumentDB yang berbeda dari Athena:
SELECT * FROM "docdb_instance_1".database.table
SELECT * FROM "docdb_instance_2".database.table
Sebelum Anda dapat menggunakan dua SQL pernyataan ini, Anda harus menambahkan dua variabel lingkungan ke fungsi Lambda Anda: docdb_instance_1
dan. docdb_instance_2
Nilai untuk masing-masing harus berupa string koneksi DocumentDB dalam format berikut:
mongodb://:@:/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Menggunakan rahasia
Anda dapat secara opsional menggunakan AWS Secrets Manager sebagian atau seluruh nilai untuk detail string koneksi Anda. Untuk menggunakan fitur Kueri Federasi Athena dengan Secrets Manager, fungsi yang VPC terhubung ke Lambda Anda harus memiliki akses internet
Jika Anda menggunakan sintaks ${my_secret}
untuk memasukkan nama rahasia dari Secrets Manager di string koneksi Anda, konektor akan menggantikan ${my_secret}
dengan nilai teks biasa dari Secrets Manager persis. Rahasia harus disimpan sebagai rahasia teks biasa dengan nilai
. Rahasia yang disimpan sebagai tidak <username>
:<password>
{username:
akan diteruskan ke string koneksi dengan benar.<username>
,password:<password>
}
Rahasia juga dapat digunakan untuk seluruh string koneksi sepenuhnya, dan nama pengguna dan kata sandi dapat didefinisikan dalam rahasia.
Misalnya, Anda menyetel variabel lingkungan Lambda docdb_instance_1
ke nilai berikut:
mongodb://${docdb_instance_1_creds}@myhostname.com:123/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Federasi Kueri Athena SDK secara otomatis mencoba untuk mengambil rahasia bernama dari Secrets docdb_instance_1_creds
Manager dan menyuntikkan nilai itu sebagai pengganti. ${docdb_instance_1_creds}
Setiap bagian dari string koneksi yang dilampirkan oleh kombinasi ${
}
karakter ditafsirkan sebagai rahasia dari Secrets Manager. Jika Anda menentukan nama rahasia yang tidak dapat ditemukan konektor di Secrets Manager, konektor tidak menggantikan teks.
Menyiapkan database dan tabel di AWS Glue
Karena kemampuan inferensi skema bawaan konektor memindai sejumlah dokumen terbatas dan hanya mendukung sebagian tipe data, Anda mungkin ingin menggunakan AWS Glue metadata sebagai gantinya.
Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan Amazon DocumentDB, Anda harus memiliki AWS Glue database dan tabel untuk database dan koleksi DocumentDB yang ingin Anda berikan metadata tambahan.
Untuk menggunakan AWS Glue tabel untuk metadata tambahan
-
Gunakan AWS Glue konsol untuk membuat AWS Glue database yang memiliki nama yang sama dengan nama database Amazon DocumentDB Anda.
-
Tetapkan URI properti database untuk disertakan docdb-metadata-flag.
-
(Opsional) Tambahkan properti sourceTabletabel. Properti ini mendefinisikan nama tabel sumber di Amazon DocumentDB. Gunakan properti ini jika AWS Glue tabel Anda memiliki nama yang berbeda dari nama tabel di Amazon DocumentDB. Perbedaan aturan penamaan antara AWS Glue dan Amazon DocumentDB dapat membuat ini diperlukan. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue tabel, tetapi mereka diizinkan dalam nama tabel Amazon DocumentDB.
-
(Opsional) Tambahkan properti columnMappingtabel. Properti ini mendefinisikan pemetaan nama kolom. Gunakan properti ini jika aturan penamaan AWS Glue kolom mencegah Anda membuat AWS Glue tabel yang memiliki nama kolom yang sama dengan yang ada di tabel Amazon DocumentDB Anda. Ini dapat berguna karena huruf kapital diizinkan dalam nama kolom Amazon DocumentDB tetapi tidak diizinkan AWS Glue dalam nama kolom.
Nilai
columnMapping
properti diharapkan menjadi satu set pemetaan dalam format.col1=Col1,col2=Col2
catatan
Pemetaan kolom hanya berlaku untuk nama kolom tingkat atas dan bukan untuk bidang bersarang.
Setelah Anda menambahkan properti AWS Glue
columnMapping
tabel, Anda dapat menghapus variabel lingkungandisable_projection_and_casing
Lambda. -
Pastikan Anda menggunakan tipe data yang sesuai AWS Glue seperti yang tercantum dalam dokumen ini.
Dukungan tipe data
Bagian ini mencantumkan tipe data yang digunakan konektor DocumentDB untuk inferensi skema, dan tipe data saat metadata digunakan. AWS Glue
Jenis data inferensi skema
Fitur inferensi skema konektor DocumentDB mencoba menyimpulkan nilai sebagai milik salah satu tipe data berikut. Tabel menunjukkan tipe data yang sesuai untuk Amazon DocumentDB, Java, dan Apache Arrow.
Panah Apache | Java atau DocDB |
---|---|
VARCHAR | String |
INT | Bulat |
BIGINT | Long |
BIT | Boolean |
FLOAT4 | Desimal |
FLOAT8 | Ganda |
TIMESTAMPSEC | Tanggal |
VARCHAR | ObjectId |
LIST | Daftar |
STRUCT | Dokumen |
AWS Glue tipe data
Jika Anda menggunakan AWS Glue metadata tambahan, Anda dapat mengonfigurasi tipe data berikut. Tabel menunjukkan tipe data yang sesuai untuk AWS Glue dan Apache Arrow.
AWS Glue | Panah Apache |
---|---|
int | INT |
bigint | BIGINT |
double | FLOAT8 |
float | FLOAT4 |
boolean | BIT |
biner | VARBINARY |
string | VARCHAR |
Daftar | LIST |
Struct | STRUCT |
Izin yang Diperlukan
Untuk detail selengkapnya tentang IAM kebijakan yang diperlukan konektor ini, tinjau Policies
bagian file athena-docdb.yaml
-
Akses tulis Amazon S3 - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
-
Athena GetQueryExecution — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
-
AWS Glue Data Catalog- Konektor DocumentDB memerlukan akses baca saja ke untuk mendapatkan informasi AWS Glue Data Catalog skema.
-
CloudWatch Log — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
-
AWS Secrets Manager akses baca - Jika Anda memilih untuk menyimpan detail titik akhir DocumentDB di Secrets Manager, Anda harus memberikan akses konektor ke rahasia tersebut.
-
VPCakses - Konektor memerlukan kemampuan untuk memasang dan melepaskan antarmuka ke Anda VPC sehingga dapat terhubung dengannya dan berkomunikasi dengan instance DocumentDB Anda.
Kinerja
Konektor Athena Amazon DocumentDB saat ini tidak mendukung pemindaian paralel tetapi mencoba untuk menekan predikat sebagai bagian dari kueri DocumentDB-nya, dan predikat terhadap indeks pada koleksi DocumentDB Anda menghasilkan data yang dipindai secara signifikan lebih sedikit.
Fungsi Lambda melakukan pushdown proyeksi untuk mengurangi data yang dipindai oleh kueri. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama. LIMIT
klausa mengurangi jumlah data yang dipindai, tetapi jika Anda tidak memberikan predikat, Anda harus mengharapkan SELECT
kueri dengan LIMIT
klausa untuk memindai setidaknya 16 MB data.
Kueri passthrough
Konektor Athena Amazon DocumentDB mendukung kueri passthrough dan berbasis No. SQL Untuk informasi tentang menanyakan Amazon DocumentDB, lihat Menanyakan di Panduan Pengembang Amazon DocumentDB.
Untuk menggunakan kueri passthrough dengan Amazon DocumentDB, gunakan sintaks berikut:
SELECT * FROM TABLE( system.query( database => '
database_name
', collection => 'collection_name
', filter => '{query_syntax
}' ))
Contoh berikut menanyakan example
database dalam TPCDS
koleksi, memfilter semua buku dengan judul Bill of Rights.
SELECT * FROM TABLE( system.query( database => 'example', collection => 'tpcds', filter => '{title: "Bill of Rights"}' ))
Sumber daya tambahan
-
Untuk artikel tentang penggunaan Kueri Federasi Amazon Athena untuk menghubungkan database MongoDB ke Amazon untuk membangun dasbor dan visualisasi, lihat Memvisualisasikan data MongoDB dari Amazon QuickSight
menggunakan Kueri Federasi Amazon Athena di Blog Big Data . QuickSight AWS Untuk informasi tambahan tentang konektor ini, kunjungi situs terkait
GitHub di.com.