Konektor Amazon Athena DocumentDB - Amazon Athena

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 AWS Glue Data Catalog metadata.

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 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 yang sesuai AWS Glue meja. Saat Anda membuat AWS Glue tabel, kami menyarankan 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 di AWS Serverless Application Repository harus memiliki akses baca di Lake Formation ke AWS Glue Data Catalog.

Prasyarat

Parameter

Gunakan variabel lingkungan Lambda di bagian ini untuk mengkonfigurasi konektor DocumentDB.

  • 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 likea7e63k4b-8loc-40db-a2a1-4d0en2cd8331, Anda dapat menentukan ID KMS kunci.

  • disable_spill_encryption — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. True Defaultnya False 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 mengambil metadata tambahan dari AWS Glue.

  • glue_catalog - (Opsional) Gunakan opsi ini untuk menentukan cross-account AWS Glue katalog. Secara default, konektor mencoba untuk mendapatkan metadata dari miliknya sendiri AWS Glue akun.

  • 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_casingParameter 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 sebagai sumber data Anda, Anda akan dikenakan standar yang lebih tinggi AWS biaya transfer lintas wilayah sebagai akibat dari penggunaan bandwidth yang lebih tinggi. Untuk informasi selengkapnya tentang biaya transfer lintas wilayah, lihat AWS Biaya Transfer Data untuk Arsitektur Server dan Tanpa Server di AWS Blog Jaringan Mitra.

      • 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 adalah false. 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 untuk 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 atau titik VPCakhir untuk terhubung ke Secrets Manager.

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<username>:<password>. Rahasia yang disimpan sebagai tidak {username:<username>,password:<password>} akan diteruskan ke string koneksi dengan benar.

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 menggunakannya AWS Glue untuk metadata sebagai gantinya.

Untuk mengaktifkan AWS Glue tabel untuk digunakan dengan Amazon DocumentDB, Anda harus memiliki AWS Glue database dan tabel untuk database DocumentDB dan koleksi yang Anda ingin menyediakan metadata tambahan untuk.

Untuk menggunakan AWS Glue tabel untuk metadata tambahan
  1. Gunakan AWS Glue konsol untuk membuat AWS Glue database yang memiliki nama yang sama dengan nama database Amazon DocumentDB Anda.

  2. Tetapkan URI properti database untuk disertakan docdb-metadata-flag.

  3. (Opsional) Tambahkan properti sourceTabletabel. Properti ini mendefinisikan nama tabel sumber di Amazon DocumentDB. Gunakan properti ini jika Anda AWS Glue tabel 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 masuk AWS Glue nama tabel, tetapi diizinkan dalam nama tabel Amazon DocumentDB.

  4. (Opsional) Tambahkan properti columnMappingtabel. Properti ini mendefinisikan pemetaan nama kolom. Gunakan properti ini jika AWS Glue aturan penamaan 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 di AWS Glue 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 AWS Glue columnMappingproperti tabel, Anda dapat menghapus variabel lingkungan disable_projection_and_casing Lambda.

  5. 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 AWS Glue metadata digunakan.

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 untuk metadata tambahan, Anda dapat mengonfigurasi tipe data berikut. Tabel menunjukkan tipe data yang sesuai untuk AWS Glue dengan 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 lengkap tentang IAM kebijakan yang diperlukan konektor ini, tinjau Policies bagian file athena-docdb.yaml. Daftar berikut merangkum izin yang diperlukan.

  • 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 membutuhkan akses baca saja ke AWS Glue Data Catalog untuk mendapatkan informasi 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. LIMITklausa 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 membuat dasbor dan visualisasi, lihat Memvisualisasikan data MongoDB dari Amazon QuickSight menggunakan Kueri Federasi Amazon Athena di QuickSight AWS Blog Data Besar.

  • Untuk informasi tambahan tentang konektor ini, kunjungi situs terkait GitHub di.com.