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 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

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 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_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 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 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 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 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
  1. Menggunakan AWS Glue konsol untuk mengedit database, atur URI properti database untuk disertakan docdb-metadata-flag.

  2. Menggunakan AWS Glue konsol untuk mengedit tabel, tambahkan juga docdb-metadata-flagsebagai properti tabel. Properti ini menunjukkan ke konektor DocumentDB bahwa konektor dapat menggunakan tabel untuk metadata tambahan. Anda dapat memberikan nilai apa pun docdb-metadata-flag selama docdb-metadata-flag properti hadir dalam daftar properti tabel.

  3. (Opsional) Tambahkan properti sourceTabletabel. Properti ini mendefinisikan nama tabel sumber di Amazon DocumentDB. Gunakan properti ini jika aturan penamaan AWS Glue tabel mencegah Anda membuat AWS Glue tabel dengan nama yang sama dengan tabel Amazon DocumentDB Anda. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue tabel, tetapi mereka diizinkan dalam nama tabel Amazon DocumentDB.

  4. (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 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 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 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 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. 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 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.