AWS GlueRegistri skema - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWS GlueRegistri skema

catatan

AWS GlueRegistri Skema tidak didukung di Wilayah berikut di AWS Glue konsol: Asia Pasifik (Jakarta) dan Timur Tengah (UAE).

Registri AWS Glue Skema memungkinkan Anda menemukan, mengontrol, dan mengembangkan skema aliran data secara terpusat. Sebuah skema mendefinisikan struktur dan format catatan data. Dengan registri AWS Glue Skema, Anda dapat mengelola dan menerapkan skema pada aplikasi streaming data Anda menggunakan integrasi yang nyaman dengan Apache Kafka,, Amazon Kinesis Amazon Managed Streaming for Apache KafkaData Streams, Amazon Managed Service untuk Apache Flink, dan. AWS Lambda

Registri Skema mendukung format data AVRO (v1.10.2), format Data dengan format Skema untuk JSONskema (spesifikasi Draft-04, Draft-06, dan Draft-07) dengan validasi JSON skema menggunakan pustaka Everit, Protokol Buffer (Protobuf) versi proto2 dan proto3 tanpa dukungan untuk atau, dan dukungan bahasa Java, dengan format JSON data dan bahasa lain yang akan datang. extensions groups Fitur yang didukung termasuk kompatibilitas, sumber skema melalui metadata, registrasi otomatis skema, IAM kompatibilitas, dan ZLIB kompresi opsional untuk mengurangi penyimpanan dan transfer data. Registri Skema tanpa server dan gratis untuk digunakan.

Menggunakan sebuah skema sebagai kontrak format data antara produsen dan konsumen akan mengantarkan pada peningkatan tata kelola data, data berkualitas lebih tinggi, dan memungkinkan konsumen data untuk tahan terhadap perubahan hulu yang kompatibel.

Registri Skema memungkinkan sistem yang berbeda untuk berbagi skema untuk serialisasi dan de-serialisasi. Misalnya, anggaplah Anda memiliki produser dan konsumen data. Produsen mengetahui skemanya ketika menerbitkan data. Schema Registry menyediakan serializer dan deserializer untuk sistem tertentu seperti Amazon atau Apache Kafka. MSK

Untuk informasi selengkapnya, lihat Cara kerja registri skema.

Skema

Sebuah skema mendefinisikan struktur dan format catatan data. Sebuah skema adalah sebuah spesifikasi berversi untuk publikasi data yang handal, konsumsi, atau penyimpanan.

Dalam contoh ini skema untuk Avro, format dan strukturnya didefinisikan oleh tata letak dan nama bidang, dan format nama bidang didefinisikan oleh tipe data (misalnya, string, int).

{ "type": "record", "namespace": "ABC_Organization", "name": "Employee", "fields": [ { "name": "Name", "type": "string" }, { "name": "Age", "type": "int" }, { "name": "address", "type": { "type": "record", "name": "addressRecord", "fields": [ { "name": "street", "type": "string" }, { "name": "zipcode", "type": "int" } ] } } ] }

Dalam contoh JSON skema draft-07 ini untukJSON, formatnya ditentukan oleh organisasi Skema. JSON

{ "$id": "https://example.com/person.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } } }

Dalam contoh ini untuk Protobuf, format didefinisikan oleh versi 2 dari bahasa Protocol Buffers (proto2).

syntax = "proto2"; package tutorial; option java_multiple_files = true; option java_package = "com.example.tutorial.protos"; option java_outer_classname = "AddressBookProtos"; message Person { optional string name = 1; optional int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { optional string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phones = 4; } message AddressBook { repeated Person people = 1; }

Registrasi

Sebuah registri adalah sebuah kontainer logis dari skema. Registri memungkinkan Anda untuk mengatur skema Anda, serta mengelola kontrol akses untuk aplikasi Anda. Registri memiliki Nama Sumber Daya Amazon (ARN) untuk memungkinkan Anda mengatur dan mengatur izin akses yang berbeda ke operasi skema dalam registri.

Anda dapat menggunakan registri default atau membuat pendaftar baru sebanyak yang diperlukan.

  • RegistryName: [string]

    • RegistryArn: [AWS ARN]

    • CreatedTime: [stempel waktu]

    • UpdatedTime: [stempel waktu]

  • SchemaName: [string]

    • SchemaArn: [AWS ARN]

    • DataFormat: [Avro, Json, atau Protobuf]

    • Kompatibilitas: [misalnya. BACKWARD, BACKWARD _ALL,FORWARD, FORWARD _ALL,FULL, FULL _ALL,,NONE,DISABLED]

    • Status: [misalnya. PENDING,AVAILABLE,DELETING]

    • SchemaCheckpoint: [bilangan bulat]

    • CreatedTime: [stempel waktu]

    • UpdatedTime: [stempel waktu]

  • SchemaVersion: [string]

    • SchemaVersionNumber: [bilangan bulat]

    • Status: [misalnya. PENDING,AVAILABLE,DELETING,FAILURE]

    • SchemaDefinition: [string, Nilai:JSON]

    • CreatedTime: [stempel waktu]

  • SchemaVersionMetadata: [daftar]

    • MetadataKey: [string]

    • MetadataInfo

    • MetadataValue: [string]

    • CreatedTime: [stempel waktu]

Pembuatan versi dan kompatibilitas skema

Setiap skema dapat memiliki beberapa versi. Versioning diatur oleh sebuah aturan kompatibilitas yang diterapkan pada sebuah skema. Permintaan untuk mendaftar versi skema baru diperiksa berdasarkan aturan ini oleh Registri Skema sebelum mereka dapat berhasil.

Sebuah versi skema yang ditandai sebagai pos pemeriksaan digunakan untuk menentukan kompatibilitas pendaftaran versi baru dari skema. Ketika sebuah skema pertama kali akan membuat pos pemeriksaan default akan menjadi versi pertama. Saat skema berkembang dengan lebih banyak versi, Anda dapat menggunakanCLI/SDKuntuk mengubah pos pemeriksaan ke versi skema menggunakan UpdateSchema API yang mematuhi serangkaian kendala. Di konsol, mengedit definisi skema atau mode kompatibilitas, secara default akan mengubah pos pemeriksaan ke versi terbaru.

Mode kompatibilitas akan memungkinkan Anda untuk mengontrol bagaimana skema dapat atau tidak dapat berkembang dari waktu ke waktu. Mode ini membentuk kontrak antara aplikasi yang memproduksi dan mengkonsumsi data. Ketika versi baru dari sebuah skema dikirimkan ke registri, aturan kompatibilitas diterapkan ke nama skema yang digunakan untuk menentukan apakah versi baru dapat diterima. Ada 8 mode kompatibilitas:NONE,DISABLED,BACKWARD, BACKWARD _ALL,FORWARD, FORWARD _ALL,FULL, FULL _ALL.

Dalam format data Avro, bidang bisa opsional atau wajib. Sebuah bidang opsional adalah bidang di mana Type menyertakan nol. Bidang wajib tidak memiliki nol sebagai Type.

Dalam format data Protobuf, bidang dapat bersifat opsional (termasuk berulang) atau diperlukan dalam sintaks proto2, sementara semua bidang bersifat opsional (termasuk berulang) dalam sintaks proto3. Semua aturan kompatibilitas ditentukan berdasarkan pemahaman spesifikasi Protocol Buffer serta panduan dari dokumentasi Google Protocol Buffer.

  • NONE: Tidak ada mode kompatibilitas yang berlaku. Anda dapat menggunakan pilihan ini dalam skenario pengembangan atau jika Anda tidak tahu mode kompatibilitas yang ingin Anda terapkan untuk skema. Setiap versi baru yang ditambahkan akan diterima tanpa menjalani pemeriksaan kompatibilitas terlebih dahulu.

  • DISABLED: Pilihan kompatibilitas ini mencegah pembuatan versi untuk skema tertentu. Tidak ada versi baru yang dapat ditambahkan.

  • BACKWARD: Pilihan kompatibilitas ini direkomendasikan karena memungkinkan konsumen untuk membaca versi skema saat ini dan sebelumnya. Anda dapat menggunakan pilihan ini untuk memeriksa kompatibilitas terhadap versi skema sebelumnya saat Anda menghapus bidang atau menambahkan bidang opsional. Kasus penggunaan umum untuk BACKWARD adalah ketika aplikasi Anda telah dibuat untuk skema terbaru.

    AVRO

    Sebagai contoh, anggaplah Anda memiliki sebuah skema yang ditentukan oleh nama depan (wajib), nama belakang (wajib), email (wajib), dan nomor telepon (opsional).

    Jika versi skema berikutnya menghapus bidang email wajib, ini akan berhasil mendaftar. BACKWARDkompatibilitas mengharuskan konsumen untuk dapat membaca versi skema saat ini dan sebelumnya. Konsumen Anda akan dapat membaca skema baru karena bidang email tambahan dari pesan lama diabaikan.

    Jika Anda memiliki versi skema baru yang diusulkan yang menambahkan bidang wajib, misalnya, kode pos, ini tidak akan berhasil mendaftar dengan BACKWARD kompatibilitas. Konsumen Anda pada versi yang baru tidak akan dapat membaca pesan lama sebelum perubahan skema, karena mereka kehilangan kolom kode pos yang diperlukan. Namun demikian, jika bidang kode pos ditetapkan sebagai opsional dalam skema baru, maka versi yang diusulkan akan berhasil mendaftar karena konsumen dapat membaca skema lama tanpa bidang kode pos opsional.

    JSON

    Sebagai contoh, anggaplah Anda memiliki versi skema yang ditentukan berdasarkan nama depan (opsional), nama belakang (opsional), email (opsional) dan nomor telepon (opsional).

    Jika versi skema berikutnya menambahkan properti nomor telepon opsional, maka hal ini akan berhasil mendaftar selama versi skema asli tidak mengizinkan properti tambahan dengan menetapkan bidang additionalProperties ke SALAH. BACKWARDkompatibilitas mengharuskan konsumen untuk dapat membaca versi skema saat ini dan sebelumnya. Konsumen Anda akan dapat membaca data yang dihasilkan dengan skema asli di mana properti nomor telepon tidak ada.

    Jika Anda memiliki versi skema baru yang diusulkan yang menambahkan properti nomor telepon opsional, ini tidak akan berhasil mendaftar dengan BACKWARD kompatibilitas ketika versi skema asli menyetel additionalProperties bidang ke true, yaitu mengizinkan properti tambahan apa pun. Konsumen Anda pada versi baru tidak akan dapat membaca pesan lama sebelum ada perubahan skema, karena mereka tidak dapat membaca data dengan properti nomor telepon dalam jenis yang berbeda, misalnya string bukan nomor.

    PROTOBUF

    Misalnya, anggap Anda memiliki versi skema yang ditentukan oleh Message Person dengan bidang (required), first name (required), last name (required), dan email phone number (opsional) di bawah sintaks proto2.

    Mirip dengan AVRO skenario, jika versi skema Anda berikutnya menghapus email bidang yang diperlukan, ini akan berhasil mendaftar. BACKWARDkompatibilitas mengharuskan konsumen untuk dapat membaca versi skema saat ini dan sebelumnya. Konsumen Anda akan dapat membaca skema baru karena email bidang tambahan dari pesan lama diabaikan.

    Jika Anda memiliki versi skema baru yang diusulkan yang menambahkan bidang wajib, misalnyazip code, ini tidak akan berhasil mendaftar dengan BACKWARD kompatibilitas. Konsumen Anda pada versi baru tidak akan dapat membaca pesan lama sebelum skema berubah, karena mereka kehilangan zip code bidang yang diperlukan. Namun, jika zip code bidang ditetapkan sebagai opsional dalam skema baru, maka versi yang diusulkan akan berhasil mendaftar karena konsumen dapat membaca skema lama tanpa bidang opsionalzip code.

    Dalam kasus kasus RPC penggunaan g, menambahkan RPC layanan atau RPC metode baru adalah perubahan yang kompatibel ke belakang. Misalnya, asumsikan Anda memiliki versi skema yang ditentukan oleh RPC layanan MyService dengan dua RPC metode Foo danBar.

    Jika versi skema Anda berikutnya menambahkan RPC metode baru yang dipanggilBaz, ini akan berhasil mendaftar. Konsumen Anda akan dapat membaca data yang dihasilkan dengan skema asli sesuai dengan BACKWARD kompatibilitas karena RPC metode yang baru ditambahkan Baz adalah opsional.

    Jika Anda memiliki versi skema baru yang diusulkan yang menghapus RPC metode yang adaFoo, ini tidak akan berhasil mendaftar dengan BACKWARD kompatibilitas. Konsumen Anda pada versi baru tidak akan dapat membaca pesan lama sebelum skema berubah, karena mereka tidak dapat memahami dan membaca data dengan RPC metode yang tidak ada Foo dalam aplikasi g. RPC

  • BACKWARD_ ALL: Pilihan kompatibilitas ini memungkinkan konsumen untuk membaca versi skema saat ini dan semua versi skema sebelumnya. Anda dapat menggunakan pilihan ini untuk memeriksa kompatibilitas terhadap semua versi skema sebelumnya saat Anda menghapus bidang atau menambahkan bidang opsional.

  • FORWARD: Pilihan kompatibilitas ini memungkinkan konsumen untuk membaca versi skema saat ini dan berikutnya, tetapi belum tentu versi yang lebih baru. Anda dapat menggunakan pilihan ini untuk memeriksa kompatibilitas terhadap versi skema terakhir ketika Anda menambahkan bidang atau menghapus bidang opsional. Kasus penggunaan umum untuk FORWARD adalah ketika aplikasi Anda telah dibuat untuk skema sebelumnya dan harus dapat memproses skema yang lebih baru.

    AVRO

    Sebagai contoh, anggaplah Anda memiliki sebuah versi skema yang ditentukan berdasarkan nama depan (wajib), nama belakang (wajib), email (opsional).

    Jika Anda memiliki versi skema baru yang menambahkan bidang wajib, misalnya nomor telepon, ini akan berhasil mendaftar. FORWARDkompatibilitas mengharuskan konsumen untuk dapat membaca data yang dihasilkan dengan skema baru dengan menggunakan versi sebelumnya.

    Jika Anda memiliki versi skema yang diusulkan yang menghapus bidang nama depan yang diperlukan, ini tidak akan berhasil mendaftar dengan FORWARD kompatibilitas. Konsumen Anda pada versi sebelumnya tidak akan dapat membaca skema yang diusulkan karena mereka tidak memiliki bidang nama pertama wajib. Namun, jika bidang nama pertama awalnya bersifat opsional, maka skema baru yang diusulkan akan berhasil mendaftar karena konsumen dapat membaca data berdasarkan skema baru yang tidak memiliki bidang nama depan opsional.

    JSON

    Sebagai contoh, anggaplah Anda memiliki versi skema yang ditentukan berdasarkan nama depan (opsional), nama belakang (opsional), email (opsional) dan nomor telepon (opsional).

    Jika Anda memiliki sebuah versi skema baru yang menghapus properti nomor telepon opsional, maka ini akan berhasil mendaftar selama versi skema baru tidak mengizinkan properti tambahan dengan menetapkan bidang additionalProperties ke SALAH. FORWARDkompatibilitas mengharuskan konsumen untuk dapat membaca data yang dihasilkan dengan skema baru dengan menggunakan versi sebelumnya.

    Jika Anda memiliki versi skema yang diusulkan yang menghapus properti nomor telepon opsional, ini tidak akan berhasil mendaftar dengan FORWARD kompatibilitas ketika versi skema baru menyetel additionalProperties bidang ke true, yaitu mengizinkan properti tambahan apa pun. Konsumen Anda pada versi sebelumnya tidak akan dapat membaca skema yang diusulkan karena mereka dapat memiliki properti nomor telepon dalam jenis yang berbeda, misalnya string bukan nomor.

    PROTOBUF

    Misalnya, anggap Anda memiliki versi skema yang ditentukan oleh Pesan Person dengan bidang (wajib), first name (wajib), last name email (opsional) di bawah sintaks proto2.

    Mirip dengan AVRO skenario, jika Anda memiliki versi skema baru yang menambahkan bidang wajib, misalnyaphone number, ini akan berhasil mendaftar. FORWARDkompatibilitas mengharuskan konsumen untuk dapat membaca data yang dihasilkan dengan skema baru dengan menggunakan versi sebelumnya.

    Jika Anda memiliki versi skema yang diusulkan yang menghapus first name bidang yang diperlukan, ini tidak akan berhasil mendaftar dengan FORWARD kompatibilitas. Konsumen Anda pada versi sebelumnya tidak akan dapat membaca skema yang diusulkan karena mereka kehilangan first name bidang yang diperlukan. Namun, jika first name bidang tersebut awalnya opsional, maka skema baru yang diusulkan akan berhasil mendaftar karena konsumen dapat membaca data berdasarkan skema baru yang tidak memiliki bidang opsionalfirst name.

    Dalam kasus kasus RPC penggunaan g, menghapus RPC layanan atau RPC metode adalah perubahan yang kompatibel ke depan. Misalnya, asumsikan Anda memiliki versi skema yang ditentukan oleh RPC layanan MyService dengan dua RPC metode Foo danBar.

    Jika versi skema Anda berikutnya menghapus RPC metode yang ada bernamaFoo, ini akan berhasil mendaftar sesuai dengan FORWARD kompatibilitas karena konsumen dapat membaca data yang dihasilkan dengan skema baru dengan menggunakan versi sebelumnya. Jika Anda memiliki versi skema baru yang diusulkan yang menambahkan RPC metodeBaz, ini tidak akan berhasil mendaftar dengan FORWARD kompatibilitas. Konsumen Anda pada versi sebelumnya tidak akan dapat membaca skema yang diusulkan karena mereka kehilangan RPC metodeBaz.

  • FORWARD_ ALL: Pilihan kompatibilitas ini memungkinkan konsumen untuk membaca data yang ditulis oleh produsen skema terdaftar baru apa pun. Anda dapat menggunakan pilihan ini ketika Anda harus menambahkan bidang atau menghapus bidang opsional, dan memeriksa kompatibilitas terhadap semua versi skema sebelumnya.

  • FULLPilihan kompatibilitas ini memungkinkan konsumen untuk membaca data yang ditulis oleh produsen menggunakan versi skema sebelumnya atau berikutnya, tetapi tidak versi sebelumnya atau yang lebih baru. Anda dapat menggunakan pilihan ini untuk memeriksa kompatibilitas terhadap versi skema terakhir ketika Anda menambahkan atau menghapus bidang opsional.

  • FULL_ ALL: Pilihan kompatibilitas ini memungkinkan konsumen untuk membaca data yang ditulis oleh produsen menggunakan semua versi skema sebelumnya. Anda dapat menggunakan pilihan ini untuk memeriksa kompatibilitas terhadap semua versi skema sebelumnya saat Anda menambahkan atau menghapus bidang opsional.

Pustaka Serde sumber terbuka

AWS menyediakan pustaka Serde open-source sebagai kerangka kerja untuk membuat serial dan deserialisasi data. Desain sumber terbuka dari perpustakaan ini memungkinkan aplikasi dan kerangka kerja sumber terbuka umum untuk mendukung perpustakaan ini dalam proyek mereka.

Untuk detail lebih lanjut tentang bagaimana perpustakaan Serde bekerja, lihat Cara kerja registri skema.

Kuota Registri Skema

Kuota, juga disebut sebagai batas dalam AWS, adalah nilai maksimum untuk sumber daya, tindakan, dan item di AWS akun Anda. Berikut ini adalah batas lunak untuk Registri Skema di AWS Glue.

Pasangan nilai kunci metadata versi skema

Anda dapat memiliki hingga 10 pasangan nilai kunci SchemaVersion per AWS Wilayah.

Anda dapat melihat atau mengatur pasangan metadata kunci-nilai menggunakan atau. QuerySchemaVersionMetadata tindakan (Python: query_schema_version_metadata) PutSchemaVersionMetadata tindakan (Python: put_schema_version_metadata) APIs

Berikut ini adalah batasan sulit untuk Schema Registry diAWS Glue.

Registrasi

Anda dapat memiliki hingga 100 pendaftar per AWS Wilayah untuk akun ini.

SchemaVersion

Anda dapat memiliki hingga 10000 versi skema per AWS Wilayah untuk akun ini.

Setiap skema baru membuat versi skema baru, sehingga Anda secara teoritis dapat memiliki hingga 10000 skema per akun per wilayah, jika setiap skema hanya memiliki satu versi.

Beban skema

Ada batas ukuran 170KB untuk beban skema.