AVRO - Şemalar
Şema tabanlı bir serileştirme aracı olan Avro, şemaları girdi olarak kabul eder. Çeşitli şemaların mevcut olmasına rağmen, Avro şemaları tanımlamak için kendi standartlarını takip eder. Bu şemalar aşağıdaki ayrıntıları açıklamaktadır -
- dosya türü (varsayılan olarak kaydedin)
- kayıt yeri
- kaydın adı
- ilgili veri türleriyle kayıttaki alanlar
Bu şemaları kullanarak, serileştirilmiş değerleri daha az alan kullanarak ikili biçimde depolayabilirsiniz. Bu değerler, herhangi bir meta veri olmadan saklanır.
Avro Şemaları Oluşturma
Avro şeması, hafif bir metin tabanlı veri değişim biçimi olan JavaScript Nesne Gösterimi (JSON) belge biçiminde oluşturulur. Aşağıdaki yollardan biriyle oluşturulur -
- JSON dizesi
- Bir JSON nesnesi
- JSON dizisi
Example - Aşağıdaki örnek, Employee adıyla, alan adı ve yaşı olan, Tutorialspoint ad alanı altında bir belgeyi tanımlayan bir şemayı gösterir.
{
"type" : "record",
"namespace" : "Tutorialspoint",
"name" : "Employee",
"fields" : [
{ "name" : "Name" , "type" : "string" },
{ "name" : "Age" , "type" : "int" }
]
}
Bu örnekte, her kayıt için dört alan olduğunu gözlemleyebilirsiniz -
type - Bu alan, belgenin altında olduğu gibi, alanlar adlı alanın altında gelir.
Belge durumunda, birden çok alan olduğundan genellikle bir kayıt olan belgenin türünü gösterir.
Alan olduğunda, tür, veri türünü tanımlar.
namespace - Bu alan, nesnenin bulunduğu ad alanının adını açıklar.
name - Bu alan, belgenin altında olduğu gibi, alanlar adlı alanın altında gelir.
Belge olması durumunda, şema adını açıklar. Bu şema adı, ad alanıyla birlikte mağazadaki şemayı benzersiz şekilde tanımlar (Namespace.schema name). Yukarıdaki örnekte, şemanın tam adı Tutorialspoint.Employee olacaktır.
Alanlar durumunda, alanın adını açıklar.
Avro'nun İlkel Veri Türleri
Avro şeması, karmaşık veri türlerinin yanı sıra ilkel veri türlerine sahiptir. Aşağıdaki tablo,primitive data types Avro -
Veri tipi | Açıklama |
---|---|
boş | Null, değeri olmayan bir türdür. |
int | 32 bitlik işaretli tamsayı. |
uzun | 64 bitlik işaretli tamsayı. |
yüzer | tek duyarlıklı (32 bit) IEEE 754 kayan noktalı sayı. |
çift | çift duyarlıklı (64 bit) IEEE 754 kayan noktalı sayı. |
bayt | 8 bitlik işaretsiz bayt dizisi. |
dizi | Unicode karakter dizisi. |
Avro'nun Karmaşık Veri Türleri
İlkel veri türlerinin yanı sıra Avro, Kayıtlar, Numaralandırmalar, Diziler, Haritalar, Birlikler ve Sabit olmak üzere altı karmaşık veri türü sağlar.
Kayıt
Avro'daki bir kayıt veri türü, birden çok özniteliğin bir koleksiyonudur. Aşağıdaki nitelikleri destekler -
name - Bu alanın değeri kaydın adını tutar.
namespace - Bu alanın değeri, nesnenin depolandığı ad alanının adını tutar.
type - Bu özniteliğin değeri, belgenin türünü (kayıt) veya şemadaki alanın veri türünü içerir.
fields - Bu alan, şemadaki her biri ada ve tür özniteliklerine sahip tüm alanların listesine sahip bir JSON dizisini tutar.
Example
Aşağıda bir kayıt örneği verilmiştir.
{
" type " : "record",
" namespace " : "Tutorialspoint",
" name " : "Employee",
" fields " : [
{ "name" : " Name" , "type" : "string" },
{ "name" : "age" , "type" : "int" }
]
}
Sıralama
Numaralandırma, bir koleksiyondaki öğelerin listesidir, Avro numaralandırması aşağıdaki öznitelikleri destekler -
name - Bu alanın değeri numaralandırmanın adını tutar.
namespace - Bu alanın değeri, Numaralandırmanın adını nitelendiren dizeyi içerir.
symbols - Bu alanın değeri, numaralandırmanın sembollerini bir ad dizisi olarak tutar.
Example
Aşağıda bir numaralandırma örneği verilmiştir.
{
"type" : "enum",
"name" : "Numbers",
"namespace": "data",
"symbols" : [ "ONE", "TWO", "THREE", "FOUR" ]
}
Diziler
Bu veri türü, tek öznitelik öğelerine sahip bir dizi alanını tanımlar. Bu öğeler özniteliği, dizideki öğelerin türünü belirtir.
Example
{ " type " : " array ", " items " : " int " }
Haritalar
Eşleme veri türü, anahtar-değer çiftlerinden oluşan bir dizidir, verileri anahtar-değer çiftleri olarak düzenler. Bir Avro haritasının anahtarı bir dizge olmalıdır. Bir haritanın değerleri, harita içeriğinin veri türünü tutar.
Example
{"type" : "map", "values" : "int"}
Sendikalar
Alanda bir veya daha fazla veri türü olduğunda, bir birleşim veri türü kullanılır. JSON dizileri olarak temsil edilirler. Örneğin, int veya null olabilen bir alan varsa, birleşim ["int", "null"] olarak temsil edilir.
Example
Aşağıda sendikaların kullanıldığı örnek bir belge verilmiştir -
{
"type" : "record",
"namespace" : "tutorialspoint",
"name" : "empdetails ",
"fields" :
[
{ "name" : "experience", "type": ["int", "null"] }, { "name" : "age", "type": "int" }
]
}
Sabit
Bu veri türü, ikili verileri depolamak için kullanılabilecek sabit boyutlu bir alan bildirmek için kullanılır. Nitelik olarak alan adı ve veriye sahiptir. Ad, alanın adını ve boyut, alanın boyutunu tutar.
Example
{ "type" : "fixed" , "name" : "bdata", "size" : 1048576}