통신 프로토콜 방식에는 여러가지가 존재한다.
그중
JAVA의 경우 직렬화를 통해, 객체 인스턴스를 스트림으로 전송하고, 그것을 받을 수 있는데, 언어에 한정적인게 문제이다.
다른 방법으로는 XML 방식과, JSON 처럼 언어에 종속받지 않는 표준 포맷을 사용하는 경우가 많다.
하둡을 공부하면서, 통신방식으로 PB를 사용한다는것을 발견했는데, 이 PB라는것은 구글에서 개발한 데이터 직렬화 방법이다.
아래는 구글 프로토콜 버퍼 공식 사이트이다.
https://developers.google.com/protocol-buffers/
자신들이 소개하기로는 XML에 비하여 심플하고, 3배에서 10배가량 작은 용량에, 20배에서 100배 이상 빠른 속도를 가진다고 한다.
또한 모호하지 않다(are less ambiguous) 라는 표현을 사용하였는데,
그 예제로 아래와같은 비교문을 첨부하였다.
1. 기존의 XML
<person> <name>John Doe</name> <email>jdoe@example.com</email> </person>
2. PB
# Textual representation of a protocol buffer. # This is *not* the binary format used on the wire. person { name: "John Doe" email: "jdoe@example.com" }
그리고 이러한 데이터를 전송할때 직렬화를 한다는 것 자체도 큰 차이점이다.
다만 이러한것을 구현하기 위해서는 언어마다 라이브러리를 사용해야한다.
공식 홈페이지에서는
Java, Python, Objective-C, and C 그리고 GO, Ruby, C#의 언어를 지원한다고 하지만, 찾아보니 R에서도 사용할수있게
라이브러리가 나온것이 있다.
< RProtoBuf >
https://cran.r-project.org/web/packages/RProtoBuf/index.html
# R Studio에서 RProtoBuf를 사용하면 받을 수 있다.
# demo 실행법
# 라이브러리를 참조시키고
library(RProtoBuf)
# 데모 파일을 실행
demo( "addressbook", package = "RProtoBuf" )
# 그러면 아래와 같이 addressbook 에대한 예제들을 하나씩 실행하고 결과를 알려준다.
자세한 메뉴얼은 여기
https://cran.r-project.org/web/packages/RProtoBuf/RProtoBuf.pdf