Avro skeemojen määrittelyyn
Oppikaa määrittelemään tapahtumaskeemoja Apache Avrolla, joka on kompakti ja tehokas datan serialisointikehys.
Avro skeemojen määrittelyyn on ilmainen Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-kurssilla on yhteensä 4 oppituntia.
Mikä Apache Avro on?
Tervetuloa! Tässä oppitunnissa tutustumme Apache Avroon, tehokkaaseen datan serialisointijärjestelmään. Sitä käytetään laajasti tapahtumavetoisissa arkkitehtuureissa, erityisesti Kafkan yhteydessä.
Avro auttaa määrittämään datan eli tapahtumien rakenteen skeeman avulla. Skeema toimii suunnitelmana, joka varmistaa yhdenmukaisuuden ja mahdollistaa saumattoman viestinnän eri sovellusten välillä.
Miksi Avro-skeemoja käytetään?
Avron skeemalähtöinen lähestymistapa tarjoaa useita hyötyjä:
- Datan tiiviys: Avro serialisoi datan tehokkaasti, mikä pienentää viestien kokoa.
- Skeeman kehittyminen: Se tarjoaa vankat säännöt sille, miten skeemat voivat muuttua ajan mittaan rikkomatta vanhoja sovelluksia.
- Riippumattomuus ohjelmointikielestä: Skeemat eivät riipu kielestä, joten eri ohjelmointikielet voivat lukea ja kirjoittaa samaa dataa.
- Vahva tyypitys: Se varmistaa tietotyyppien yhdenmukaisuuden ja vähentää ajonaikaisia virheitä.
Avro-skeeman rakenne
Avro-skeemat määritetään JSON-muodossa. Jokainen skeema kuvaa tietorakennetta, useimmiten record-tyyppiä.
Avro-skeeman keskeisiä elementtejä ovat:
type: Skeeman tyyppi, kuten "record", "enum" tai "array".name: Skeeman nimi, kuten "User" tai "Order".namespace: Valinnainen merkkijono nimen tarkentamista varten.fields: Tietue-tyypeille tarkoitettu kenttämäärittelyjen taulukko.
Avron primitiivityypit
Avro tukee seuraavia perus- eli primitiivityyppejä:
null: Ei arvoa.boolean:truetaifalse.int: 32-bittinen etumerkillinen kokonaisluku.long: 64-bittinen etumerkillinen kokonaisluku.float: Yhden tarkkuuden (32-bittinen) liukuluku.double: Kaksinkertaisen tarkkuuden (64-bittinen) liukuluku.bytes: 8-bittisten etumerkittömien tavujen sarja.string: Unicode-merkkijono.
Yksinkertaisen tietueen määrittäminen
Määritetään yksinkertainen Avro-record-skeema kohteelle User. Jokainen kenttä tarvitsee ominaisuudet name ja type.
Tässä id on tyyppiä int ja name tyyppiä string.
{
"type": "record",
"name": "User",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "id", "type": "int"},
{"name": "name", "type": "string"}
]
}Monimutkainen tyyppi: sisäkkäiset tietueet
Monimutkaisia tietorakenteita voi määrittää sijoittamalla tietueita toistensa sisään. Esimerkiksi Order-tietue voi sisältää Customer-tietueen yhdessä kentistään.
{
"type": "record",
"name": "Order",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "orderId", "type": "string"},
{"name": "customer", "type": {
"type": "record",
"name": "Customer",
"fields": [
{"name": "customerId", "type": "int"},
{"name": "email", "type": "string"}
]
}}
]
}Monimutkaiset tyypit: taulukot ja kartat
Avro tukee myös kokoelmatyyppejä:
array: Samantyyppisten kohteiden luetteloa varten. Ominaisuusitemsmäärittää alkioiden tyypin.map: Avain–arvo-pareja varten; avaimet ovat aina tyyppiästring. Ominaisuusvaluesmäärittää arvojen tyypin.
{
"type": "record",
"name": "Product",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "productId", "type": "string"},
{"name": "tags", "type": {"type": "array", "items": "string"}},
{"name": "attributes", "type": {"type": "map", "values": "string"}}
]
}Monimutkainen tyyppi: enumeraatiot
enum määrittelee kiinteän joukon nimettyjä arvoja. Tämä on hyödyllistä kentille, joiden mahdolliset arvot muodostavat rajatun ja ennalta määritetyn joukon.
symbols-ominaisuus luettelee kaikki enum-tyypille sallitut merkkijonoarvot.
{
"type": "record",
"name": "Payment",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "transactionId", "type": "string"},
{"name": "status", "type": {
"type": "enum",
"name": "PaymentStatus",
"symbols": ["PENDING", "COMPLETED", "FAILED"]
}}
]
}Monimutkaiset tyypit: unionit ja nullable-tyypit
union mahdollistaa sen, että kentän tyyppi on yksi useista määritetyistä tyypeistä. Tämä on olennaista valinnaisten tai null-arvon sallivien kenttien määrittämisessä.
Kentästä tehdään null-arvon salliva määrittämällä sen tyypiksi "null"-tyypin ja varsinaisen tyypin unioni, esimerkiksi ["null", "string"]. Unionin ensimmäinen tyyppi on usein oletustyyppi, jos sitä ei ole erikseen määritetty.
{
"type": "record",
"name": "LogEntry",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "timestamp", "type": "long"},
{"name": "message", "type": "string"},
{"name": "userId", "type": ["null", "string"], "default": null}
]
}Kenttien oletusarvojen määrittäminen
Kentälle voi määrittää default-arvon. Tämä on erityisen tärkeää skeeman kehityksen kannalta, koska sen ansiosta vanhat tiedot, joissa uutta kenttää ei ole, voidaan edelleen lukea ilman virhettä oletusarvoa käyttäen.
Oletusarvon on oltava kentän tyypin kelvollinen ilmentymä.
{
"type": "record",
"name": "Settings",
"namespace": "com.coddykit.avro",
"fields": [
{"name": "theme", "type": "string", "default": "dark"},
{"name": "notificationsEnabled", "type": "boolean", "default": true}
]
}Avro-skeemaa koskeva kysymys
Oletetaan, että tapahtumaa varten on Avro-tietue. Tarvitsemme comment-nimisen kentän, joka voi sisältää string-arvon, mutta on valinnainen eli voi olla null ja jonka oletusarvo on null, jos sitä ei anneta.
Avro-määrittelyn kertaus
Hienoa työtä! Olette oppineet Apache Avron skeemojen määrittämisen perusteet.
- Avro-skeemat ovat datan JSON-pohjaisia suunnitelmia.
- Ne tukevat primitiivityyppejä (int, string jne.) ja monimutkaisia tyyppejä (tietueet, taulukot, mapit, enumit ja unionit).
- Unionit ovat keskeisiä null-arvon sallivien ja valinnaisten kenttien määrittämisessä.
- Oletusarvot ovat ratkaisevan tärkeitä taaksepäin yhteensopivuuden ja skeeman kehityksen kannalta.
Seuraavaksi tarkastelemme, miten nämä skeemat integroidaan Spring Bootin ja Schema Registryn kanssa.
Opi Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka) tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Avro skeemojen määrittelyyn” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolun 3 oppituntia, myös oppitunnin “Avro skeemojen määrittelyyn”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Avro skeemojen määrittelyyn”?
Oppikaa määrittelemään tapahtumaskeemoja Apache Avrolla, joka on kompakti ja tehokas datan serialisointikehys. Harjoittelet Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Avro skeemojen määrittelyyn”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunnilla?
Kyllä. Jokainen Spring Boot 4:n edistyneet aiheet: tapahtumavetoinen arkkitehtuuri (Kafka)-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Skeemojen hallinnan merkitys
- Avro skeemojen määrittelyyn
- Spring Bootin ja Schema Registryn integrointi
- Skeeman kehitys ja yhteensopivuustilat