패스트 인포셋

Fast Infoset

Fast Infoset(또는 FI)는 XML 문서 형식의 대안으로 XML Information Set(XML Infosset)의 바이너리 인코딩 형식을 지정하는 국제 표준이다.텍스트 기반 XML 형식보다 더 효율적인 직렬화를 제공하는 것을 목표로 한다.null

FI는 XML의 경우 원래 포맷이 손실되는 동안 XML에서 FI로 변환, 다시 XML로 변환할 때 정보가 손실되지 않는다는 점을 제외하면 사실상 gzip과 유사한 손실 없는 압축이다. 압축의 목적은 물리적 데이터 크기를 줄이는 것이지만, FI는 문서 크기와 처리 성능을 모두 최적화하는 것을 목표로 한다.null

Fast Infoset 규격은 ITU-TISO 표준 기구에 의해 정의된다.FI는 ITU-T Rec. X.891ISO/IEC 24824-1에 공식적으로 정의되어 있으며, Fast Infoset이라는 명칭이 붙어 있다.이 표준은 2005년 5월 14일에 ITU-T가, 2007년 5월 4일에 ISO가 각각 발행하였다.Fast Infoset 표준 문서는 ITU 웹사이트에서 다운로드할 수 있다.이 문서가 이행이나 사용에 대한 지적재산권(IP) 제한을 주장하지는 않지만, 2페이지에서는 통지를 받았으며, 주체가 IP 주장으로부터 완전히 자유로운 것은 아닐 수 있다고 경고한다.null

일반적인 오해는 FI가 ASN.1 도구 지원을 필요로 한다는 것이다.형식 규격은 ASN.1 표기법을 사용하지만, 이 표준은 ECN(인코딩 제어 표기법)을 포함하며, ASN.1 도구는 구현에 의해 필요하지 않다.null

FI의 대안은 FleXpath이다.[1]null

구조

기본 파일 형식은 ASN.1이며, 태그/길이/값 블록이 있다.속성 및 요소의 텍스트 값은 끝 구분 기호가 아닌 길이 접두사로 저장되며, 데이터 세그먼트는 특수 문자에 대한 탈출이 필요하지 않다.엔드 태그("단자")와 동등한 값은 하위 요소 목록의 끝에만 필요하다.이진 데이터는 네이티브 형식으로 전송되므로 base64와 같은 전송 형식으로 변환할 필요가 없다.null

Fast Infoset은 ASN.1 형식과 표기법에 기초하여 제작된 고급 포맷이다.요소와 속성 이름은 기존의 ASN.1 인코딩 방식과는 달리 옥텟 스트림 내에 저장된다.따라서 기존 XML 파일은 XML 스키마를 참조하지 않고 바이너리 스트림에서 복구할 수 있으며, XML 스키마는 ASN.1 정의로 표현할 필요가 없다.(ASN.1 "태그"는 유형 이름(예: 문자열, 정수 또는 복합 유형)에 불과하다.)ASN.1과 ECN을 함께 사용하여 파일 형식을 정의한다.null

인덱스 테이블은 요소 및 속성 이름과 해당 값을 포함하는 대부분의 문자열에 대해 작성된다.이는 반복된 태그와 값의 텍스트가 문서당 한 번만 나타나는 것을 의미한다.null

구현

참조 구현

FI 규격의 자바 구현GlassFish 프로젝트의 일부로 이용할 수 있다.이 라이브러리는 오픈 소스Apache License 2.0의 조건에 따라 배포된다.GlassFish Metro에서 사용되는 JAX-WS에 대한 참조 구현을 포함하여 여러 프로젝트에서 이 구현을 사용한다.C++용 QtitanFastInfosset 구현은 2017년까지 Qt 프레임워크의 구성요소로 상용 라이선스 하에 제공되었다.null

퍼포먼스

고속 인포셋은 XML 생성 프로세스의 일부로 압축되기 때문에 출력이 잘 압축되지는 않지만 XML 스트림에서 Zip-style 압축 알고리즘을 사용하는 것보다 훨씬 빠르다.null

고속 인포셋의 색스형 구문 분석 성능도 Zip 스타일 압축이 전혀 없어도 XML 1.0의 구문 분석 성능보다 훨씬 빠르다.참조 Java 구현에 대해 관찰된 파싱 속도의 일반적인 증가는 Java Xerces에 비해 10배, Piccolo 드라이버에 비해 4배이다(Java 기반 XML 파서 중 가장 빠른 것 중 하나).[2][3][4]null

일반적인 애플리케이션

휴대용 장치 – 모바일 장치는 일반적으로 대역폭 데이터 연결이 낮고 CPU 속도가 느리다.빠른 인포셋은 XML보다 대역폭을 적게 사용하고 처리 속도가 빨라 탁월한 선택이다.null

대량의 데이터 저장 – XML을 파일이나 데이터베이스에 저장할 때 시스템이 생성하는 데이터의 양이 합리적인 제한을 초과하는 경우가 종종 있는데, 이는 많은 데이터를 읽을수록 액세스 시간이 증가하고, XML 데이터가 처리되는 데 더 많은 전력을 소모함에 따라 CPU 로드가 증가하며, 스토리지 비용이 증가한다는 여러 가지 단점이 있다.XML 데이터를 Fast Infoset 형식으로 저장함으로써 데이터 볼륨을 80%까지 줄일 수 있다.null

XML을 인터넷을 통해 전달 – 애플리케이션이 인터넷을 통해 데이터를 전달할 때 네트워크 대역폭은 심각한 병목 현상이 될 수 있으며, 클라이언트 애플리케이션의 성능을 심각하게 저하시키고 서버의 요청을 처리할 수 있는 권한을 제한한다.[citation needed]인터넷을 통해 전송되는 데이터의 크기를 줄이면 메시지를 보내거나 받는 데 필요한 시간이 줄어들고, 서버가 시간당 처리할 수 있는 트랜잭션의 수가 증가한다.null

참고 항목

참조

  1. ^ 아메르-야히아, 시헴, 락스 VS 라크슈마난, 샤샹크 판디트."FleXpath: 유연한 구조와 XML에 대한 전체 텍스트 쿼리." 2004년 ACM SGIMOD 국제 데이터 관리 회의의 진행.ACM, 2004.
  2. ^ "Fast Infoset performance reports". 2005-10-06. Archived from the original on 2011-08-07. Retrieved 2007-10-11.
  3. ^ "Japex Report: ParsingPerformance". 2005-01-10. Archived from the original on 2011-08-07. Retrieved 2007-10-11.
  4. ^ "Japex Report: SizePerformance". 2005-01-10. Archived from the original on 2011-08-07. Retrieved 2007-10-11.

외부 링크