티스토리 뷰
Introduction
Apache Avro 는 데이터 직렬화 시스템이다. Avro 는 아래 기능들을 제공한다.
- 풍부한 데이터 구조
- 간결하고 빠른 Binary Data 포멧
- 영구 데이터를 저장하기 위한 컨테이너 파일
- Remote 프로시져 콜 (RPC)
- 다양한 언어와 간단하게 연동 가능. RPC 프로토콜을 사용하거나 구현하거나 데이터를 읽거나 쓰기 위해 코드 Generation 이 필수는 아니다. 코드 Generation 은 정적인 타입을 가지는 언어를 구현할때 가치가 있는 최적화 옵션이다.
Schemas
Avro 는 Schema 에 의존한다. Avro 데이터를 읽을때는 Avro 데이터가 쓰여질 당시에 사용되었던 Schema 가 필요하다. 이것은 각 데이터가 per-value 오버헤드 없이 쓰여질 수 있도록 하고 직렬화를 빠르고 간결하게 한다. 또한 Avro 데이터는 스키마와 함께 자체적으로 완전히 해석될 수 있기 때문에 동적 스크립팅 언어와 함께 사용할 수 있다.
Avro 데이터가 스키마와 함께 파일에 저장되어있을때, 이 파일은 어떠한 프로그램든지 상관 없이 이후에 처리될 수 있다. 데이터를 읽는 프로그램이 다른 스키마를 사용할 것을 예상하더라도, old, new 스키마가 모두 있으므로 쉽게 해결될 수 있다.
Avro 가 RPC 를 사용할때, Client 와 Server 는 Connection Handshake 과정에서 스키마를 교환한다. 이렇게 되면 Client 와 Server 둘 다 완전히 동일한 전체 버전의 Schema 를 가지고있기 때문에 쉽게 해결될 수 있다.
Avro 스키마는 JSON 으로 정의된다. 이것은 이미 JSON 라이브러리가 제공되는 언어에서 구현을 용이하게 한다.
Comparison with other systems
Avro 는 Thrift, Protocol Buffers 와 같은 시스템과 비슷한 기능을 제공한다. 하지만 Avro 는 기능적으로 이런 시스템들과 아래 항목들에 대해서 다르다.
- Dynamic typing : Avro 는 Code Generation 이 필수는 아니다. 데이터는 Schema 와 항상 동반되고 Schema 는 Code Generation 없이 처리를 가능하게 한다. 이것은 일반적인 데이터 처리 시스템과 언어의 구축을 용이하게 한다
- Untagged Data : 데이터를 읽을 때 Schema 가 존재하기 때문에, Type 에 대한 정보를 데이터에 인코딩하지 않아도 되고 이것이 직렬화된 데이터의 사이즈를 작게 만들 수 있다.
- No manually-assigned field IDs: Schema 가 변경되었을때, Old 와 New Schema 는 데이터를 처리할때 항상 필요하다. 따라서 Old 와 New 의 차이는 field 의 이름을 통해서 상징적으로 처리될 수 있다.
'Avro' 카테고리의 다른 글
Avro - Serializer/Deserializer 비교 (0) | 2022.02.18 |
---|---|
Apache Avro - 설명 (0) | 2022.02.17 |
Avro 시작하기 - Java, Gradle (0) | 2022.02.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- rate limit
- Flux
- MariaDB
- circurit breaker
- router
- getBoolean
- notifyAll()
- reative
- N+1
- custom config data convertion
- aurora
- mariadb-connector-j
- HashMap
- mariada-connector
- notify()
- ResultSet
- GlobalFilter
- wait()
- reactor
- referencedColumnName
- RouteDefinition
- ConcurrentHashMap
- Seperate Chaining
- Lazy
- AbstractMethodError
- RoutePredication
- msyql-connector-java
- dynamodb
- spring cloud gateway
- DyanomoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함