SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
Apache Avro .NET
최흥배
twitter: @jacking75
Apache Avro ?
 Thrift, ProtocolBuf와 비슷한 데이터 직렬화 라이브러리.
 여기에 RPC 호출 과 파일에 데이터 저장하는 기능이 있음.
 지원 언어
C/C++, Java, PHP, Python, Ruby
MS에서 직접 닷넷 버전 구현
 Hadoop의 RPC를 Avro RPC로 교체
 풍부한 데이터 구조
 작고 빠른 바이너리 타입 지원
 컨테이너에 파일을 영구적으로 저장
 기본적으로 바이너리 구조의 데이터와 Json 구조의 데이터 통신 Schema
지원
 Thrift에 비해 개발이 활발하고 카산드라의 내부 인터페이스로도 사용
Thrift, ProtocolBuf와 비교
 Dynamic typing
Json으로 하다보니 serialization/deserialization에 대해서 통신 가능
 Untagged data
데이터 인코딩을 compact하게 하기 위해서 data 정도에 대한 필드정보
가 없음
 No manually-assigned field IDs
Thrift와 protocol buffer는 꼭 필요. (ordering이중요)
Thrift, Avro, MessagePack 성능 비교
 자바를 기준으로 테스트
 2014.03.01 테스트
출처: http://symfoware.blog68.fc2.com/blog-entry-1292.html
우편번호 약 12만건을 사용.
소스: https://bitbucket.org/symfo/postgresql-map-sample/src
시리얼라이즈 용량 비교 시리얼라이즈 시간 비교(ms)
Avro 스키마 예
{"namespace": "org.jacob.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
GenAvro 파일로 스키마 파일 만들기
 GenAvro 파일을 이용하면 스키마 파일을 쉽게 만들 수 있다.
 아래는 자바의 경우.
http://blog.naver.com/cookatrice/50106992022
Microsoftr Avro
 MS에서 직접 만든 Apache Avro의 닷넷 버전
 Azure용 Haddop인 Azure HDInsight를 위해 만든 것 같음.
 Apache Avro에 완벽하게 호환되고 고성능으로 만듬.
단 RPC 기능은 지원하지 않음
 NuGet으로 설치 가능
Install-Package Microsoft.Hadoop.Avro
 공식 사이트
https://hadoopsdk.codeplex.com/wikipage?title=Avro%20Library&referr
ingTitle=Home
 인메모리 식 트리를 구축으로 임의의 종류의 구조체를 시리얼화.
인메모리 식 트리는 시리얼라이저가 네이티브한 성능을 발휘하도록 IL
코드로 컴파일 된다.
시리얼화 모드
 리플렉션 모드
시리얼라이저의 IL 코드는 .NET의 스키마 종류를 기초로 성능이 최대화
되도록 구축된다.
 범용 레코드 모드
데이터의 JSON 스키마는 실행시에 지정 할 수 있으므로 임의의 스키마
로 동적 데이터 처리에 대응할 수 있다.
 컨테이너 모드
임베디드 스키마를 사용하여 포터블한 파일을 생성할 수 있다.
파일 형식은 Avro 컨테이너 파일 사양과 호환성이 있으며 각종 플랫폼에
서 사용할 수 있다.
예제: 리플렉션 모드
http://blogs.msdn.com/resized-image.ashx/__size/426x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-
51-80/8372.001.png
참고
 Thrift & Avro RESEARCH
http://koikebox.tistory.com/113
 Avro 1.7.6
http://avro.apache.org/docs/current/spec.html
 Avro C++
http://avro.apache.org/docs/current/api/cpp/html/index.html
 MS Avro API 레퍼런스 문서
http://msdn.microsoft.com/en-us/library/azure/dn469975.aspx
 Overview 예제 코드
http://code.msdn.microsoft.com/windowsazure/Serialize-data-with-the-
86055923
 커스텀 압축 코덱 사용 예제 코드
http://code.msdn.microsoft.com/windowsazure/Serialize-data-with-the-
67159111

Contenu connexe

Tendances

Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기정웅 박
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server정현 윤
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introductionJinkyoung Kim
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3Jinkyoung Kim
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback흥배 최
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fSeungmin Shin
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2Jinkyoung Kim
 
Windows reversing study_basic_9
Windows reversing study_basic_9Windows reversing study_basic_9
Windows reversing study_basic_9Jinkyoung Kim
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.Kris Jeong
 

Tendances (20)

Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기Node-express 채팅 서버 개발기
Node-express 채팅 서버 개발기
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introduction
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
System+os study 5
System+os study 5System+os study 5
System+os study 5
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-f
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
Pwnable study basic_2
Pwnable study basic_2Pwnable study basic_2
Pwnable study basic_2
 
Windows reversing study_basic_9
Windows reversing study_basic_9Windows reversing study_basic_9
Windows reversing study_basic_9
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 

En vedette

KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발흥배 최
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅흥배 최
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가Hyun-jik Bae
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11흥배 최
 
에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)Woo Yeong Choi
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
MinWin에 대해서
MinWin에 대해서MinWin에 대해서
MinWin에 대해서흥배 최
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트흥배 최
 
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술drandom
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치흥배 최
 
MsgPack 정리
MsgPack 정리MsgPack 정리
MsgPack 정리Seokmin No
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임흥배 최
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리흥배 최
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 

En vedette (19)

KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
 
KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅KGC10 - Visual C++10과 디버깅
KGC10 - Visual C++10과 디버깅
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
 
Zookeeper소개
Zookeeper소개Zookeeper소개
Zookeeper소개
 
[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11[KGC 2011]Boost 라이브러리와 C++11
[KGC 2011]Boost 라이브러리와 C++11
 
에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
MinWin에 대해서
MinWin에 대해서MinWin에 대해서
MinWin에 대해서
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트
 
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술
김항기 시나리오 기반 온라인 게임 서버 부하 테스트 기술
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치
 
MsgPack 정리
MsgPack 정리MsgPack 정리
MsgPack 정리
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
 
Unqlite
UnqliteUnqlite
Unqlite
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 

Similaire à 닷넷 Apache avro

Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
spark database Service
spark database Servicespark database Service
spark database Service창언 정
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Jeongkyu Shin
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAmazon Web Services Korea
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료beom kyun choi
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core Ji-Woong Choi
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST APIWooyoung Ko
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 

Similaire à 닷넷 Apache avro (20)

Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
java_1장
java_1장java_1장
java_1장
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
spark database Service
spark database Servicespark database Service
spark database Service
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
Apache Spark
Apache SparkApache Spark
Apache Spark
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 

Plus de 흥배 최

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]흥배 최
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows흥배 최
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기흥배 최
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서흥배 최
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템흥배 최
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index흥배 최
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D흥배 최
 
[Final]조진현 direct write
[Final]조진현 direct write[Final]조진현 direct write
[Final]조진현 direct write흥배 최
 
Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것흥배 최
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것흥배 최
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?흥배 최
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍흥배 최
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 

Plus de 흥배 최 (15)

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D
 
[Final]조진현 direct write
[Final]조진현 direct write[Final]조진현 direct write
[Final]조진현 direct write
 
Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것Facebook이 대규모 확장성 도전에서 배운 것
Facebook이 대규모 확장성 도전에서 배운 것
 
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
multi-thread 어플리케이션에 대해 모든 개발자가 알아 두지 않으면 안 되는 것
 
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
왜 애플리케이션이 Hang 되어도 OS는 괜찮을까?
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 

Dernier

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 

Dernier (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 

닷넷 Apache avro

  • 2. Apache Avro ?  Thrift, ProtocolBuf와 비슷한 데이터 직렬화 라이브러리.  여기에 RPC 호출 과 파일에 데이터 저장하는 기능이 있음.  지원 언어 C/C++, Java, PHP, Python, Ruby MS에서 직접 닷넷 버전 구현  Hadoop의 RPC를 Avro RPC로 교체  풍부한 데이터 구조  작고 빠른 바이너리 타입 지원  컨테이너에 파일을 영구적으로 저장  기본적으로 바이너리 구조의 데이터와 Json 구조의 데이터 통신 Schema 지원  Thrift에 비해 개발이 활발하고 카산드라의 내부 인터페이스로도 사용
  • 3. Thrift, ProtocolBuf와 비교  Dynamic typing Json으로 하다보니 serialization/deserialization에 대해서 통신 가능  Untagged data 데이터 인코딩을 compact하게 하기 위해서 data 정도에 대한 필드정보 가 없음  No manually-assigned field IDs Thrift와 protocol buffer는 꼭 필요. (ordering이중요)
  • 4. Thrift, Avro, MessagePack 성능 비교  자바를 기준으로 테스트  2014.03.01 테스트 출처: http://symfoware.blog68.fc2.com/blog-entry-1292.html 우편번호 약 12만건을 사용. 소스: https://bitbucket.org/symfo/postgresql-map-sample/src 시리얼라이즈 용량 비교 시리얼라이즈 시간 비교(ms)
  • 5. Avro 스키마 예 {"namespace": "org.jacob.avro", "type": "record", "name": "User", "fields": [ {"name": "name", "type": "string"}, {"name": "favorite_number", "type": ["int", "null"]}, {"name": "favorite_color", "type": ["string", "null"]} ] }
  • 6. GenAvro 파일로 스키마 파일 만들기  GenAvro 파일을 이용하면 스키마 파일을 쉽게 만들 수 있다.  아래는 자바의 경우. http://blog.naver.com/cookatrice/50106992022
  • 7.
  • 8. Microsoftr Avro  MS에서 직접 만든 Apache Avro의 닷넷 버전  Azure용 Haddop인 Azure HDInsight를 위해 만든 것 같음.  Apache Avro에 완벽하게 호환되고 고성능으로 만듬. 단 RPC 기능은 지원하지 않음  NuGet으로 설치 가능 Install-Package Microsoft.Hadoop.Avro  공식 사이트 https://hadoopsdk.codeplex.com/wikipage?title=Avro%20Library&referr ingTitle=Home  인메모리 식 트리를 구축으로 임의의 종류의 구조체를 시리얼화. 인메모리 식 트리는 시리얼라이저가 네이티브한 성능을 발휘하도록 IL 코드로 컴파일 된다.
  • 9. 시리얼화 모드  리플렉션 모드 시리얼라이저의 IL 코드는 .NET의 스키마 종류를 기초로 성능이 최대화 되도록 구축된다.  범용 레코드 모드 데이터의 JSON 스키마는 실행시에 지정 할 수 있으므로 임의의 스키마 로 동적 데이터 처리에 대응할 수 있다.  컨테이너 모드 임베디드 스키마를 사용하여 포터블한 파일을 생성할 수 있다. 파일 형식은 Avro 컨테이너 파일 사양과 호환성이 있으며 각종 플랫폼에 서 사용할 수 있다.
  • 11. 참고  Thrift & Avro RESEARCH http://koikebox.tistory.com/113  Avro 1.7.6 http://avro.apache.org/docs/current/spec.html  Avro C++ http://avro.apache.org/docs/current/api/cpp/html/index.html  MS Avro API 레퍼런스 문서 http://msdn.microsoft.com/en-us/library/azure/dn469975.aspx  Overview 예제 코드 http://code.msdn.microsoft.com/windowsazure/Serialize-data-with-the- 86055923  커스텀 압축 코덱 사용 예제 코드 http://code.msdn.microsoft.com/windowsazure/Serialize-data-with-the- 67159111