외부 데이터 표현
1. 개요
외부 데이터 표현(XDR)은 1980년대 썬 마이크로시스템즈에서 개발되어 1987년에 공개된 데이터 형식이다. XDR은 네트워크 파일 시스템, ZFS, ONC RPC 등 다양한 시스템에서 사용되며, 정수, 부동 소수점, 문자열 등을 일관된 형식으로 정규화하여 표현한다. rpcgen 스텁 컴파일러를 통해 정렬화/비정렬화 프로그램을 자동 생성하며, 불리언, 정수, 부동 소수점, 문자열, 배열 등 다양한 데이터 타입을 지원한다.
-
썬 마이크로시스템즈 소프트웨어 -
자바 데스크톱 시스템
-
썬 마이크로시스템즈 소프트웨어 -
핫자바
핫자바는 자바 프로그래밍 언어 기반으로 개발된 웹 브라우저이며, 1995년 TED 컨퍼런스에서 처음 시연되고 SunWorld 컨퍼런스에서 공식 발표되었다. -
데이터 모델링 언어 -
임베디드 SQL
임베디드 SQL은 호스트 프로그래밍 언어 내에 SQL 문을 삽입하여 데이터베이스와 상호 작용하는 기술로, 데이터베이스 액세스를 표준화하지만 보안 취약점과 이식성 저하의 단점도 가진다. -
데이터 모델링 언어 -
데이터 정의 언어
데이터 정의 언어(DDL)는 SQL에서 테이블, 열, 데이터 형식 등을 정의하고 데이터베이스 스키마를 수정하는 데 사용되는 명령어 집합이며, `CREATE`, `DROP`, `ALTER`, `TRUNCATE` 등의 명령어를 포함하고 데이터 구조를 정의하는 다양한 형식 언어들을 포괄하는 의미로도 사용된다. -
데이터 직렬화 포맷 -
XML
XML은 태그 중첩 방식 구문을 사용하는 범용 언어로서, 인터넷을 통한 구조화된 문서 및 데이터 공유를 용이하게 하고, 웰 폼 및 유효 XML 문서 개념을 통해 구문 정확성을 검사하며, 데이터 교환 등 다양한 분야에서 널리 사용된다. -
데이터 직렬화 포맷 -
S-표현식
S-표현식은 Lisp 구문에서 소스 코드와 데이터를 표현하는 기본 구조로, 원자와 `(x . y)` 형태의 표현식으로 정의되며, 이진 트리 표현, 다양한 데이터 형식 지원, 그리고 여러 분야에서 활용된다.
2. 역사
XDR은 1980년대 중반 썬 마이크로시스템즈에서 개발되었으며, 1987년에 처음으로 널리 공개되었다. 1995년에 IETF 인터넷 표준이 되었다.
1987년에 썬 마이크로시스템즈는 RFC1014로, 1995년에는 RFC1832로 오픈 네트워크 컴퓨팅 원격 프로시저 호출(ONC RPC)과 함께 표준화했으며, 현재는 2006년의 RFC4506이 최신이다. (RFC4506은 RFC1832에서 기술적인 변경 사항이 없다)
3. 특징
DCE/RPC에서 사용되는 [http://pubs.opengroup.org/onlinepubs/9629399/chap14.htm DCE/NDR] (및 MS RPC/NDR)에 비해, 항상 통일된 표현 형식으로 정규화하는 점이 특징이다.
* 정수(32/64비트)는 네트워크 바이트 순서(빅 엔디안)로 정규화된다. (DCE/NDR에서는 빅 엔디안과 리틀 엔디안의 두 형식을 모두 지원한다.)
* 부동 소수점 수 (32/64/128비트)는 IEEE 형식으로 정규화된다. (DCE/NDR에서는 IEEE/VAX/Cray/IBM 형식이다.)
* 문자열은 ASCII로 정규화된다. (DCE/NDR에서는 ASCII/EBCDIC의 2 형식, MS RPC/NDR에서는 UTF16도 지원한다.)
* 32비트 단위로 정렬되도록 필요에 따라 패딩된다.
위와 같은 특징으로 인해, 개별 환경에서는 내부 형식과 통일된 정규화 형식 간의 변환 루틴만 준비하면 된다. (DCE/NDR에서는 각 지원 형식과 내부 형식 간의 변환 루틴이 필요하다.)
그 반면, 머신의 내부 형식과 정규화 형식이 다를 경우, 동일한 아키텍처 간의 데이터 교환에서도 항상 변환 오버헤드가 발생한다. 예를 들어 IA-32/64계(리틀 엔디안) 간의 통신에서는 항상 엔디안 변환이 발생한다. (Sun Workstation 간의 통신의 경우, 빅 엔디안이므로 엔디안 변환은 발생하지 않는다.) rpcgen이라는 스텁 컴파일러를 사용하면, 정렬화/비정렬화하는 프로그램이 자동으로 생성된다.
4. XDR 데이터 타입
* 불리언
* int – 32비트 정수
* unsigned int – 부호 없는 32비트 정수
* hyper – 64비트 정수
* unsigned hyper – 부호 없는 64비트 정수
* IEEE 부동 소수점
* IEEE double
* quadruple (RFC1832에서 새로 추가)
* 열거
* 구조체
* 문자열
* 고정 길이 배열
* 가변 길이 배열
* 유니온 – 차별적 유니온
* 고정 길이 불투명 데이터
* 가변 길이 불투명 데이터
* void – 0바이트 양
* 선택적 – 선택적 데이터는 C 포인터와 유사하게 표기되지만, "가리키는" 데이터 유형과 "존재 여부" 플래그인 불리언으로 표현됩니다. 의미론적으로 이것은 옵션 유형입니다.
5. XDR을 이용하는 프로토콜 및 시스템
XDR 데이터 형식은 다음과 같은 많은 시스템에서 사용된다.
| 프로토콜 및 시스템 | 설명 |
|---|---|
| 네트워크 파일 시스템(프로토콜) | |
| ZFS | 파일 시스템 |
| NDMP | 네트워크 데이터 관리 프로토콜 |
| 오픈 네트워크 컴퓨팅 원격 프로시저 호출 | |
| 레가토 넷워커 | 백업 소프트웨어 (후에 EMC에 매각) |
| NetCDF | 과학 데이터 형식 |
| R 언어 및 통계 컴퓨팅 환경 | |
| HTTP-NG | 이진 와이어 프로토콜 |
| 스파이더몽키 | 자바스크립트 엔진, 컴파일된 자바스크립트 코드 직렬화/역직렬화 |
| 갱글리아 | 분산 모니터링 시스템 |
| sFlow | 네트워크 모니터링 표준 |
| libvirt | 가상화 라이브러리, API 및 UI |
| 파이어버드 | 원격 이진 와이어 프로토콜용 |
| 스텔라 | 결제 네트워크 |