KR20110095209A - 압축된 정수 데이터 저장 및 전송 시스템 - Google Patents
압축된 정수 데이터 저장 및 전송 시스템 Download PDFInfo
- Publication number
- KR20110095209A KR20110095209A KR1020110014183A KR20110014183A KR20110095209A KR 20110095209 A KR20110095209 A KR 20110095209A KR 1020110014183 A KR1020110014183 A KR 1020110014183A KR 20110014183 A KR20110014183 A KR 20110014183A KR 20110095209 A KR20110095209 A KR 20110095209A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- integer
- encoded
- equal
- encoded value
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 시스템에 의해 사용되는 값들의 알려진 범위에 걸쳐 정수 값들을 엔코딩하고 디코딩하는 방법이 개시된다. 최소 및 최대 제약(minimum and maxmimum limit)을 가지는 소정의 범위(predefined gamut)에 걸친 정수 값들을 저장 및/또는 전송하는 데이터 시스템에 주목함(noting)으로써, 어떠한 데이터 해상도의 손실도 없이, 최대의 정수 값들 또는 최대 값 부근의 정수 값들이 종래의 시스템들에서보다 더 큰 정도로 압축될 수 있다.
Description
본 발명은 정수 데이터의 압축에 관한 것이다.
인터넷의 인기가 상승함에 따라, 더 많은 사업체들이 인터넷에 기반하여 설립되고 있다. 이러한 사업체들은 하나 이상의 웹 애플리케이션들을 운영하는 웹 사이트를 구축하는 것이 일반적이다. 인터넷에 기반하여 사업을 영위하는 것의 단점 중 하나는, 웹 사이트가 다운되거나, 응답이 없거나 혹은 고객들에 적절히 서비스를 제공하지 못하는 경우, 상기 사업체는 잠재적인 세일즈(sales) 및/또는 고객들을 잃게 된다는 점이다. 유사한 문제점들이 인트라넷 및 익스트라넷(Extranet)에도 존재한다. 따라서, 서비스 지향 아키텍처(Service Oriented Architecture:SOA) 애플리케이션 관리 솔루션들이 개발되어 왔는바, 이들 솔루션들은 웹 애플리케이션들과 웹 사이트들에 대한 성능 문제들을 미리 검출하고 진단함으로써, 웹 애플리케이션들과 웹 사이트들이 적절히 운영될 수 있게 한다. 이러한 애플리케이션 관리 시스템의 하나는 캘리포니아 사우스 샌프란시스코 윌리 테크놀리지 디비젼에 소재하는 회사 CA Inc.의 상표명 Introscope®이다.
Introscope®과 같은 애플리케이션들은 동작을 위해 방대한 양의 데이터를 획득 및 저장하며, 그리고 저장공간과 전송 대역폭을 최소화하기 위하여 데이터 압축 기법에 의존한다. 일반적으로, 데이터 압축 기술은, 저장 및 전송 이전에 데이터를 엔코딩하는 엔코딩 엔진을 포함하며 그리고 데이터를 수신하거나 혹은 스토리지(storage)로부터 검색한 후에 데이터를 디코딩하는 역 연산(reverse operation)을 수행할 수 있는 디코딩 엔진을 포함한다. 압축 기법의 일 유형은 손실(lossy) 데이터 압축인바, 이 기법에서는 디코딩시에 엔코딩된 오리지널 데이터의 해상도(resolution)를 다소간 희생함에 의하여 높은 압축율을 얻을 수 있다. 손실 데이터 압축 기법은, 높은 대역폭의 전송률(high bandwidth transfer rate)을 필요로 하는 멀티미디어 데이터를 전송하는데 종종 이용되며, 멀티미디어 데이터에서는 데이터 정확도가 어느 정도 손실되더라도 디코딩된 매체에서는 이것이 잘 인지되지 않을 것이다.
다른 상황들에서는 디코딩된 데이터가 엔코딩된 데이터를 완전 복원하는 무손실(lossless) 데이터 압축을 필요로 한다. 양의 정수(positive integer)들을 무손실 압축하는 널리 알려진 기술들 중 하나는, 1970년대에 MIT 교수인 피터 엘리아스에 의해 개발된 Elias Delta 코딩 알고리즘이다. 자연수(natural number) 를 코딩하기 위한 통상적인 Elias Delta 기법이, 종래기술의 도 1의 순서도를 참조하고 그리고 정수값 x = 13에 대한 Elias Delta 코딩을 예시한 특정한 무작위 사례를 참조하여 다음에 설명될 것이다. 단계 40에서, 정수 데이터 값이 이진 형식으로 수신된다.
13base 10 = 1101base 2
단계 44에서, 단계 42의 이진 값에서의 디지트들의 개수 N이 결정된다.
1101 은 N = 4 digit를 갖는다.
N-1이 원래의 정수 x에 대한 2의 거듭제곱에 포함된 가장 높은 자연수(highest whole number)임을 주목함으로써, N은 수학적으로 계산될 수도 있다. 즉, N-1 은 Log2 x에 포함된 가장 큰 정수이다. 이는 보통 N-1 = Log2x 로 쓰여질 수 있으며, 다음과 같이 나타낼 수 있다.
N-1 = Log2 13 → N-1 = 3; 즉, N = 4 이다.
N을 설명하는 또 다른 방법으로서, N은 x의 이진 표현에서의 디지트들의 개수이며, 그리고 N-1은 x의 이진 표현에서 최상위 비트(Most Significant Bit:MSB)가 제거된 경우의 디지트들의 개수이다.
단계 46에서, N은 이진 숫자로 변환된다.
4base 10 = 100base 2
단계 48에서, N의 이진 변환에서의 디지트들의 개수인 N' 이 결정된다.
100 은 N' = 3 디지트; N'-1은 2를 갖는다.
다시, N'-1 은 N에 포함된 2의 가장 높은 자연수라는 점을 참고함으로써, N' 이 수학적으로 계산될 수도 있다.
즉, N'-1 = Log2 4 → N'-1 = 2; 즉, N' = 3 이다.
원래의 정수 x에 대한 Elias Delta 코드 Eδ(x)는 다음의 3개의 하위 요소들로부터 얻어진다.
Eδ(x)1 = N'-1 개의 제로들(단계 48)
Eδ(x)2 = N의 이진 표현(단계 42) 그리고
Eδ(x)3 = x의 이진 표현의 나머지 N-1 디지트들(즉, MSB가 제거된 x의 이진 표현).
따라서, Eδ(13)1 = 00
Eδ(13)2 = 100
Eδ(13) = 00100101 이다.
종래 기술의 도 2는 32, 64, 및 128과 같은 큰 정수값 뿐만 아니라 0에서 16까지의 정수값에 대한 Elias Delta 코드 값들을 예시한다.
정수값에 대한 Elias Delta 코드 값이 얻어지면, 이 값은 단계 50에서 출력될 수 있다. 이러한 출력값은 프로세서로부터 영속성(persistent) 저장 매체로 출력될 수도 있으며, 혹은 다른 컴퓨팅 디바이스로 전송되기 위하여 프로세서로부터 통신 인터페이스로 출력될 수도 있다. 정수값에 대한 Elias Delta 코드 값은, 하나의 값으로서 영속성 저장 매체에 저장되거나 혹은 네트워크 연결을 통해 전송될 수 있다. 대안적으로는, 종래기술의 도 3에 도시된 바와 같이, 정수값에 대한 Elias Delta 코드값은, 3개의 하위 요소들 Eδ(x)1, Eδ(x)2, 및 Eδ(x)3 으로 전송될 수도 있다. 즉, Eδ(x)1은 전송되거나 혹은 FIFO 데이터 구조(structure)에 저장될 수 있다(단계 52). Eδ(x)2는 전송되거나 혹은 FIFO 데이터 구조에 저장될 수 있다(단계 54). Eδ(x)3은 전송되거나 혹은 FIFO 데이터 구조에 저장될 수 있다(단계 56). 상기 하위 요소들이 위와 같은 순서로 전송 및 저장되기 때문에, 이들이 FIFO 데이터 구조로부터 수신 혹은 검색되는 경우, Elias Delta 코드의 다른 하위 요소들을 디코딩하는데 필요한 하위 요소들이 적절한 순서로 검사된다. Elias Delta 코드값으로부터 원래의 정수값을 복원하기 위해서, Elias Delta 코드 값에 대해서 역 연산이 수행될 수 있다.
Elias Delta 코딩 기법의 문제점들 중 하나는, 상기 기법은 임의의 입력 정수값에 대해 유효해야만 한다는 점이며 따라서, 임의의 값에 대하여 코드 공간(code space)을 확보해야만 한다. 도2의 일례에 도시된 바와 같이, x = 64와 같은 매우 큰 입력값의 경우, Eδ(64)는 본래의(native) 이진값 자체에 비하여 더 많은 저장 공간 및/또는 전송 대역폭을 차지한다(즉, 64에 대한 이진값 1000000에 비하여 Eδ(64)는 000111000000 이다). 하지만, 많은 수의 실제 애플리케이션들에서는, 입력 정수값은 한정된다. 예를 들어, 레지스터는 소정의 사이즈 예컨대, 4 비트를 가질 수 있다. 또 다른 일례로서, 많은 범주들의 데이터는 산업 표준에 의해 설정된 데이터 사이즈를 갖는바, 예컨대, 멀티미디어 스트림에서 컬러 값들의 전송은 0 ~ 255 사이의 범위를 가지며 이들은 8 비트 내에 내포된다. Elias Delta 코딩은, 데이터 시스템들이 종종 제한되기 때문에, 알려진 최소값과 알려진 최대값을 갖는 전범위(gamut)에 걸쳐 입력 값들이 존재한다 라는 사실을 유용하게 이용하고 있지 못하다.
간단히 말해서 본 발명은 전송 및/또는 저장될 정수값들이, 가령, Elias Delta 코딩과 같은 통상적인 압축 기법들에 비하여 보다 높은 압축율로 압축될 수 있는 시스템에 관한 것이다. 특히, 최소값 뿐만 아니라 최대값을 갖는 소정의 전범위(gamut)에 걸친 정수 값들을 데이터 시스템이 저장 및/또는 전송할 수 있다는 점을 참고함으로써, 상기 최대값 혹은 최대값 부근의 정수값들이 데이터 해상도의 손실 없이 통상적인 시스템에 비하여 더 많이 압축될 수 있다. 본 발명의 기술은 Elias Delta 코딩과 유사성(parallels)을 갖는다. 하지만, 저장 혹은 전송될 이진 정수에 있는 디지트들의 개수와 주어진 데이터 시스템에 대한 디지트들의 소정의 최대 개수가 동일하다고 판별되는 경우에는, 정수값의 Log(2)의 이진 표현에 대한 저장 및/또는 전송은, 상기 저장 혹은 전송에서 생략될 수 있으며, 따라서 통상적인 Elias Delta 코딩에 비하여 더 큰 압축율을 얻을 수 있다.
본 발명에 따른 압축 기법은 다양한 데이터 시스템들에서 광범위한 응용예를 가질 것이다. 하지만, 하나의 응용예에서, 본 발명에 따른 기법은 애플리케이션 관리 시스템에 관련된 데이터를 압축하는데 이용되며, 상기 애플리케이션 관리 시스템은 웹 애플리케이션들 및 웹 사이트들에 대한 성능 문제들을 미리 검출하고 진단하여, 이들 웹 애플리케이션들과 웹 사이트들이 적절히 구동되는 것을 보장한다.
본 발명에 따른 기술은 하드웨어, 소프트웨어, 혹은 하드웨어와 소프트웨어 둘다의 결합을 이용하여 구현될 수 있다. 본 발명을 위해 이용되는 소프트웨어는, 하드 디스크 드라이브, CD-ROM, DVD, 광 디스크, 플로피 디스크, 테이프 드라이브, RAM, ROM 혹은 다른 적절한 저장 디바이스들을 포함하는 하나 이상의 프로세서 판독가능한 저장 매체에 저장된다. 대안적인 실시예에서, 상기 소프트웨어의 전부 혹은 일부는, 맞춤형(custom) 집적회로, 게이트 어레이, FPGA, PLD, 및 특수 목적 컴퓨터를 포함하는 전용 하드웨어로 대체될 수 있다. 일실시예에서, 본 발명을 구현하는 소프트웨어는 하나 이상의 프로세서들을 프로그래밍하는데 사용된다. 상기 프로세서들은 하나 이상의 저장 디바이스들, 주변회로들 및/또는 통신 인터페이스들과 통신할 수 있다.
도1은 Elias Delta 코딩 기법에 따라 정수값들을 엔코딩하는 방법을 도시한 종래기술에 따른 순서도이다.
도2는 다양한 정수들에 대한 Elias Delta 코드 값들을 도시한 종래기술에 따른 표이다.
도3은 Elias Delta 코드 값의 하위 요소들을 전송 혹은 기록하기 위한 단계들을 도시한 종래기술에 따른 순서도이다.
도4는 본 발명의 시스템에 따른 고 압축 기법에 따라 정수들을 엔코딩하기 위한 순서도이다.
도4A는 본 발명의 대안적인 일실시예에 따른 고 압축 기법에 따라 정수들을 엔코딩하기 위한 순서도이다.
도5는 본 발명에 따라 하이 오더(high order) 압축 기법에 의해 얻어진 엔코딩된 값의 하위 구성요소들을 출력하는 단계를 도시한 순서도이다.
도6은 Elias Delta 기법과 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 0 에서 15 사이의 범위인 서로 다른 정수값들에 대한 비교를 예시한 테이블이다.
도7은 Elias Delta 기법과 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 0 에서 255 사이의 범위인 소정의 정수값들에 대한 비교를 예시한 테이블이다.
도8은 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 값들을 디코딩하기 위한 순서도이다.
도9는 정수 값들 및 이에 대응하는 하이 오더 압축 값들을 포함하는 제 1 테이블을 예시하며 그리고 정수 값들 및 이에 대응하는 규칙화된(regularized) 하이 오더 압축 값들 포함하는 제 2 테이블을 예시한다.
도10은 하이 오더 압축 기법을 이용하여 엔코딩된 정수 값들이 저장 및/또는 전송되는 일실시예의 블록도이다.
도11은 본 발명을 구현할 수 있는 컴퓨팅 시스템 환경의 블록도이다.
도2는 다양한 정수들에 대한 Elias Delta 코드 값들을 도시한 종래기술에 따른 표이다.
도3은 Elias Delta 코드 값의 하위 요소들을 전송 혹은 기록하기 위한 단계들을 도시한 종래기술에 따른 순서도이다.
도4는 본 발명의 시스템에 따른 고 압축 기법에 따라 정수들을 엔코딩하기 위한 순서도이다.
도4A는 본 발명의 대안적인 일실시예에 따른 고 압축 기법에 따라 정수들을 엔코딩하기 위한 순서도이다.
도5는 본 발명에 따라 하이 오더(high order) 압축 기법에 의해 얻어진 엔코딩된 값의 하위 구성요소들을 출력하는 단계를 도시한 순서도이다.
도6은 Elias Delta 기법과 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 0 에서 15 사이의 범위인 서로 다른 정수값들에 대한 비교를 예시한 테이블이다.
도7은 Elias Delta 기법과 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 0 에서 255 사이의 범위인 소정의 정수값들에 대한 비교를 예시한 테이블이다.
도8은 본 발명의 하이 오더 압축 기법에 의해 엔코딩된 값들을 디코딩하기 위한 순서도이다.
도9는 정수 값들 및 이에 대응하는 하이 오더 압축 값들을 포함하는 제 1 테이블을 예시하며 그리고 정수 값들 및 이에 대응하는 규칙화된(regularized) 하이 오더 압축 값들 포함하는 제 2 테이블을 예시한다.
도10은 하이 오더 압축 기법을 이용하여 엔코딩된 정수 값들이 저장 및/또는 전송되는 일실시예의 블록도이다.
도11은 본 발명을 구현할 수 있는 컴퓨팅 시스템 환경의 블록도이다.
이제, 일반적으로 정수들의 알려진 전범위내에 있는 정수 데이터를 압축하기 위한 시스템과 관련된 도 4 내지 도 11을 참조하여, 본 기술에 대해 설명한다. 본 기술의 실시예들은 소정의 전범위의 상한 가까이의 하이 오더의 정수값들을 압축하는 데에 특히 효과적이기 때문에, 본 기술의 실시예들은 여기에서 "하이 오더 압축 기법(high order compression scheme)"으로서 지칭될 수 있다. 웹 애플리케이션들 및 웹 사이트들에 대한 성능 문제들을 검출 및 진단하여 이들이 정확하게 실행되도록 보장하는 SOA 애플리케이션과 관련하여, 하이 오더 압축 기법이 이용될 수 있는 하나의 특정 시스템에 대해 이하 설명한다. 이러한 하나의 애플리케이션 관리 시스템은 캘리포니아 사우스 샌프란시스코, 윌리 테크놀리지 디비젼에 소재한 CA Inc., 의 상표명 Introscope 이다. 이러한 시스템은 도 10의 블록도를 참조하여 하기에서 설명된다. 하지만, 여기에서 설명되는 하이 오더 압축 기법은, 소정의 전범위 내에 있는 정수값들이 전송되고 그리고/또는 저장되는 광범위한 소프트웨어 애플리케이션들중 임의의 애플리케이션에서 이용될 수 있다는 것이 이해될 것이다.
도 4를 참조하면, 본 기술의 하이 오더 압축 기법의 일 실시예에 따라 정수값들을 엔코딩하기 위한 흐름도가 나타나있다. 이러한 기법은, 저장된/전송된 정수값들의 가능한 전 범위가 최소값(즉, 제로) 및 어떠한 최대값에 의해 정해지는 임의의 데이터 시스템 내의 정수값들을 압축하는 데에 이용될 수 있다. 전형적으로, 이러한 범위는 최소의 정수값을 갖지만, 다른 실시예들에서는, 이러한 최소값이 반드시 제로가 될 필요는 없다.
최대의 정수값과 관련하여, 많은 데이터 시스템들 및 소프트웨어 애플리케이션들은, 당연히 시스템 제약(system constraint)에 의해 제한되는 데이터 값들의 범위에 대해 작동한다. 예를 들어, 데이터 시스템은 설정되는 소정 사이즈의 개수들, 예를 들어, 4 비트에 대해 작동할 수 있는 레지스터, 어드레스 버스 또는 데이터 버스를 이용하여, 예를 들어 0 내지 15 사이의, 16개의 가능한 정수값들을 수신할 수 있다. 다른 예로서, 많은 애플리케이션 프로그램들은 산업 표준에 의해 정해지는 사이즈 및 포맷을 갖는 데이터를 전송 및 저장한다. 많은 예들중 하나의 예로서, 비트 맵핑된 이미지 또는 비디오 프레임 버퍼 내의 픽셀의 칼라를 기술하는 데이터는 종종 8 비트 포맷 내의 256 값들중 하나로서 전송 및 저장된다. 다른 원격 통신들, 오디오 및 비디오 데이터들은 표준의 8 비트, 16 비트, 등의 데이터 길이로 저장된다.
하이 오더 압축 기법의 실시예들은 전송 및 저장되는 정수값들이 알려진 최대값을 갖는 전범위에 걸쳐서 있다고 가정한다. 최대값의 지식(knowledge)은, 압축된 데이터의 압축비를 개선하기 위해 하기 설명되는 하이 오더 압축 기법을 구현하는 엔코딩 엔진 및 디코딩 엔진에 의해 이용된다. 실시예들에서, 본 시스템은 2i와 같은 정수값들의 최대수에 대해 동작하는 바, 여기서 i는 2의 거듭제곱이다(i=2,4,8,16,32,64...). 하지만, 본 시스템의 대안적인 실시예들은 다른 실시예들에서 다른 정수값 범위들을 갖는 데이터를 압축 및 디코딩하도록 동작할 수 있다.
이제, 4 비트로 전송되는 16개까지의 다른 정수 값들을 저장 또는 전송하는 시스템에서 이용하기 위한 도 4의 흐름도를 참조하여, 본 시스템의 일 실시예에 대해 설명한다. 따라서, 전범위에 걸친 임의의 정수값의 이진 표현에 대한 비트들의 최대수는 4 비트가 될 것이다. 상기 나타낸 바와 같이, 본 기술은 다른 실시예들에서 이진 디지트들의 더 큰 또는 더 작은 최대 수에 대해 작동하는 데이터 시스템들에서 이용될 수 있다. 여기에서 이용되는 용어 "하이 오더 정수값들"은 그 이진 표현이 소정의 데이터 시스템에 대해 허용되는 최대값과 같은 수의 디지트들을 갖는 정수값들을 나타낸다. 예를 들어, 하이 오더 압축 기법은 4 비트의 최대값을 차지하는 16개의 정수값들에 대해 작동하는 시스템에서 이용될 수 있다. 이러한 시스템에서, 정수값들 8(1000base2) 내지 15(1111base2) 가 하이 오더의 정수값들로서 지칭될 것이다. 이러한 동일한 정수값들은, 예를 들어 8 비트 내의 256 정수값들에 대해 작동하는 시스템에서는 하이 오더의 정수값들로서 고려되지 않을 것이다.
하기 설명되는 하이 오더 압축 기법은 엔코딩 엔진(230)(도 10)에 의해 수행될 수 있다. 설명을 위해, 도 4의 흐름도는 최대 16개의 정수값들을 받아들이는 데이터 시스템에서 x=14의 임의로 선택되는 정수값의 엔코딩과 관련하여 설명될 것이다. 하지만, 이러한 데이터 시스템에서, 본 기술은 16개의 가능한 정수값들중 임의의 정수값을 수신하여 엔코딩할 수 있다는 것이 이해될 것이다. 단계(100)에서, 엔코딩 엔진은 이진의 정수값(x)을 수신한다. 본 예에서:
x = 14base (10) = 1110base (2)
이다.
단계(104)에서, 엔코딩 엔진(230)은 정수의 이진값 내의 비트들의 수(N)를 결정한다. 배경 기술 부분에서 설명한 바와 같이, 이것은 N-1=log2x:
N-1 = log214 → N-1=3, N=4
에 의해 결정될 수 있다.
당업자라면 정수값의 이진 표현 내의 디지트들의 수를 결정하는 대안적인 또는 추가적인 방법들을 이해할 수 있을 것이다.
단계(106)에서, 엔코딩 엔진(230)은 N이 알려진 전범위의 최대 log2와 같은 지를 결정한다. 본 예에서, N의 최대값은 4이다. 정수 x=14에 대해 N은 4이기 때문에, 단계(108)에서, 엔코딩 엔진은 수신된 정수값에 대한 N이 소정의 최대값에 있음을 나타내는 플래그를 설정할 것이다. 도 4에서, 이는 플래그를 "CHK=max"로 설정하는 것으로서 나타나있다. 단계(106)에서, 만일 N의 값이 최대값 보다 작았다면, 단계(108)는 건너뛸 것이다. 단계(114)에서, N의 이진 형태(4base10=100base2)를 이용하여, N의 이진 형태 내의 디지트들의 수, N'를 결정한다:
N'-1 = log2 N
N'-1 = log2 4 → N'-1 = 2, N'=3 이다.
여기에서 또한, 당업자라면 N의 이진 표현 내의 디지트들의 수를 결정하는 대안적인 또는 추가적인 방법들을 이해할 수 있을 것이다.
단계(114) 이후, 엔코딩 엔진은 M(x)로서 나타낸 하이 오더 압축값을 결정할 수 있다. 정수값(x)이 소정의 최대값 보다 작은 비트들의 수(N)를 갖는다면(즉, 단계(118)에서 CHK가 최대값이 아니라면), 단계(120)에서 하이 오더 압축값 M(x)가 Elias Delta 값과 동일한 방식으로 결정된다. 즉, 하이 오더 압축값 M(x)=M(x)1 + M(x)2 + M(x)3 이며, 여기서,
M(x)1 = N'-1개의 제로들(단계 114);
M(x)2 = x의 이진 표현 내의 비트들의 수(N)(단계 104); 및
M(x)3 = x의 이진 표현의 나머지 N-1 디지트들(즉, MSB가 제거된 x의 이진 표현).
하지만, 단계(118)에서 정수값(x)이 소정의 정수값들의 범위에 걸쳐서 비트들의 최대수를 차지하는 경우, 본 시스템은 Elias Delta 코딩 기법과 같은 통상의 압축 기법들에 비하여 엔코딩된 값의 사이즈를 감소시킬 수 있다. 단계(124)에서, 만일 플래그가 최대값과 같다면, 하이 오더 압축값 M(x)=M(x)1 + M(x)3 이며, 여기서 M(x)1 및 M(x)3 은 상기 설명한 바와 같다:
M(x)1 = N'-1개의 제로들(단계 114); 및
M(x)3 = x의 이진 표현의 나머지 N-1 디지트들(즉, MSB가 제거된 x의 이진 표현).
수신된 정수값은 소정 범위에 대한 그 이진 표현에 있어서 최대수의 디지트들에 있는 것으로 알려져있기 때문에, 최상위 비트(즉, M(x)2)를 나타내는 엔코딩된 값 내에 공간을 확보할 필요가 없다.
x=14인 본 예에서, 이진 표현 내의 비트들의 수(즉, 4)는 소정의 최대값과 같다. 이에 따라:
M(14) = M(14)1 + M(14)3;
M(14)1 = N'-1개의 제로들, 또는 2개의 제로들 → M(14)1 = 00;
M(14)3 = MSB가 제거된 x의 이진 표현의 나머지 N-1 디지트들. x=14의 이진 표현은 1110→ M(14)3=110 이다.
M(14) = M(14)1 + M(14)3;
M(14) = 00110 이다.
단계(130)에서, 하이 오더 압축값 M(x)가 출력된다. 이러한 출력은 프로세서로부터 영속성 저장 매체로 이루어지거나, 또는 다른 컴퓨팅 장치로 전송할 수 있도록, 프로세서로부터 통신 인터페이스로 이루어질 수 있다. 정수에 대한 하이 오더 압축값은 영속성 저장 매체에 저장되거나, 또는 네트워크 접속을 통해 단일값(single value)으로서 전송될 수 있다. 대안적으로, 도 5에 나타낸 바와 같이, 이러한 출력은 그 서브 컴포넌트들(sub components), M(x)1, (가능하게는) M(x)2 및 M(x)3 으로 전송/저장될 수 있다. 즉, M(x)1은 단계(134)에서 FIFO 데이터 구조 내에 전송 또는 저장될 수 있다. 정수값의 이진 표현이 디지트들의 소정의 최대값에 있지 않다면, M(x)2는 단계(136)에서 FIFO 데이터 구조 내에 전송 또는 저장될 수 있다. 그렇지 않은 경우, 단계(136)는 건너뛴다. M(x)3은 단계(138)에서 FIFO 데이터 구조 내에 전송 또는 저장될 수 있다. 이러한 서브 컴포넌트들은 상기 순서로 전송 및 저장되며, 이에 따라 이들이 FIFO 데이터 구조로부터 수신 또는 검색될 때, 하이 오더 압축값의 다른 서브 컴포넌트들을 디코딩하는 데에 요구되는 서브 컴포넌트들이 적절한 순서로 검사된다.
대안적으로, 상기 서브 컴포넌트들은 LIFO 데이터 구조 내에 전송 또는 저장될 수 있음이 이해될 것이다. 이 경우, 이러한 서브 컴포넌트들은 상기 설명한 순서와 반대의 순서로 전송 또는 저장될 수 있다.
또한, 상기 도 4에서 설명한 단계들은 대안적인 개념적 방법들에 의해 수행되어, 나타낸 단계들과 동일한 결과를 얻을 수도 있다. 이러한 하나의 대안이 도 4A에 나타나있다. 도 4A는 도 4와 유사하지만, N이 어떠한 소정의 최대치에 있는 지를 체크하는 것이 생략된다. 대신에, 시스템은 상기 설명한 바와 같이 단계(106)에서 N이 하이 오더에 있는 지를 체크한다. 만일 N이 하이 오더에 있다면, 시스템은 상기 설명한 바와 같이 단계(107)에서 N의 이진 형태 내의 디지트들의 수(N')를 결정한다: 즉, N'-1 = log2 N, 그리고 단계(109)에서 M(x)는 M(x)1 + M(x)3 으로 설정되는 바, 여기서 M(x)1 및 M(x)3은 상기 설명한 바와 같다. 만일 단계(106)에서 N이 하이 오더에 있지 않은 것으로 결정되면, 시스템은 상기와 같이 단계(111)에서 N의 이진 형태 내의 디지트들의 수(N')를 결정한다: 즉, N'-1 = log2 N, 그리고 단계(113)에서 M(x)는 M(x)1 + M(x)2 + M(x)3 으로 설정되는 바, 여기서 M(x)1, M(x)2 및 M(x)3은 상기 설명한 바와 같다. 그런 다음, 상기 설명한 바와 같이 단계(130)에서 M(x)가 출력된다. 여기에서 또한, 당업자라면 상기 개시를 고려하여 추가의 대안들을 이해할 수 있을 것이다.
도 6은 정수값들이 0과 15 사이의 범위가 될 수 있는 시스템에 대한 표를 나타낸다. 나타낸 바와 같이, 하위측(low end) 정수값들(즉, x ≤ 7 및 N < 4의 최대값)에 대해, 하이 오더 압축값 M(x)는 Elias Delta 값 Eδ(x)와 같다. 하지만, 그 이진 표현이 비트들의 최대수인 정수값들(즉, 8 ≤ x ≤ 15 및 N = 4의 최대값)에 대해, 본 압축 기법 M(x)는 정수값들을 저장 그리고/또는 전송하기 위한 Elias Delta 코드에 비해 공간의 감소를 제공한다.
도 7은 하이 오더 압축 기법의 일예인데, 여기서 정수값들은 0과 255 사이의 범위를 갖는다(이진 표현 내의 디지트들의 최대수는 8이다). 이러한 예에서, 0과 127 사이의 범위의 정수값들은 Elias Delta 값들과 동일한 방식으로 계산되는 자신들의 하이 오더 압축값들을 가질 것이다. 하지만, 128과 255 사이의 정수값들(도 7에 일부를 나타냄)에 대해, 이러한 값들은 비트들의 최대수를 차지하며, 이들의 하이 오더 압축값들은 Elias Delta 코딩과 비교하여 디지트들의 수를 감소를 제공한다. 나타낸 바와 같이, 128과 255 사이의 범위의 정수들에 대한 Elias Delta 코드는 14개의 디지트들을 갖게 되는데, 여기서 128과 255 사이의 정수값들에 대한 하이 오더 압축값은 단지 9개의 디지트들 만을 가질 것이다. 이는 저장 공간 및 전송 대역폭을 상당히 절감시킨다.
엔코딩된 값이 전송시 수신되거나 또는 영속성 저장 매체로부터 검색될 때, 이러한 엔코딩된 값은 디코딩되어야 한다. 본 시스템은 디코딩 엔진(232)(도 10)을 더 포함하는데, 이러한 디코딩 엔진은 상기 설명한 하이 오더 압축 기법을 역으로 하여, 엔코딩된 값들을 자신들의 오리지널 정수값들로 변환시킬 수 있다. 이제, 도 8을 참조하여, 이러한 디코딩 엔진(232)의 프로세스에 대해 설명한다. 이 디코딩 엔진(232)은 엔코딩 엔진(230)과 동일한 소정의 최소값 및 최대값을 이용하여 동작한다. 따라서, 도 8의 예에서, 디코딩 엔진(232)은 엔코딩 엔진(230)과 동일한 값들의 전범위에 대해 동작하도록 구성된다. 상기 예에서, 이러한 값들은 0과 15 사이의 범위를 가지며, 이진 표현 내의 디지트들의 최대수 4를 갖는다. 도 4에서, M(14)=00110 으로 결정되었다. 도 8은 00110의 저장된/수신된 값을 디코딩하는 것과 관련하여 설명될 것이다. 하지만, 상기에서와 같이, 디코딩 엔진은 정수값들의 소정 범위에 걸쳐서 임의의 값들을 디코딩할 수 있음이 이해될 것이다.
디코딩 엔진(232)은 함께 동작할 전체 하이 오더 압축 값 M(x)를 수신할 수 있고, 혹은 이 디코딩 엔진은 FIFO 혹은 LIFO 데이터 검색 구조로부터 제 1 서브컴포넌트 M(x)1을 수신할 수 있다. 어느 경우에나, 단계(140)에서, 디코딩 엔진은 제 1 서브컴포넌트 M(x)1을 수신하는바, 이는 수신 혹은 저장된 값 M(x)에서의 선두 제로(leading zero)들의 개수이다. 앞서와 같이, 선두 제로들의 개수는 본 명세서에서 N'-1로 언급될 수 있다.
M(x)=00110에 있어서, 두 개의 선두 제로들이 존재하는바, N'-1=2이고, N'=3.
하이 오더 압축 값들에서, 선두 제로들의 개수(N'-1)는 디코딩된 바이너리 값의 최상위 비트(N)를 표시하는바, 그 관계식은 아래와 같다.
N'-1=Log2N
정수 값들이 0과 15 사이로 제한되는 시스템에서, 0개의 선두 제로는 0과 1 사이의 정수 값을 표시할 것이고, 한 개의 선두 제로는 2와 7 사이의 정수 값을 표시할 것이고, 그리고 두 개(혹은 그 이상)의 선두 제로들은 8과 15 상이의 정수 값을 표시할 것이다.
앞서의 예에서, 정수 값들은 0과 15 사이로 제한된다(N = 최대치 4). 그러나 앞서 지적된 바와 같이, 본 발명은 임의의 알려진 영역(gamut)에서 동작할 수 있다. 실시예들에서, 알려진 영역에서의 정수 값들의 최대 수는 2i와 동일하고, 여기서, i는 2의 거듭제곱이다(i = 2, 4, 8, 16, 32, 64...). 따라서, 실시예들에서, 하이 오더 압축 방식은 2개의 값들, 4개의 값들, 16개의 값들(앞서의 예에서와 같이), 256개의 값들, 65,536개의 값들 등의 정수 영역에서 동작할 수 있다.
하이 오더 압축 값에서의 선두 제로들의 개수가 데이터 시스템에 대한 최대 정수 값에서의 이진 숫자(binary digit)들의 개수의 log2와 동일하거나 혹은 이보다 더 클 때는 언제나, 하이 오더 압축 값이 데이터 시스템에 대한 이진 숫자들의 최대 개수를 갖는 정수를 나타낸다는 것을 알 수 있다. 따라서,
- 0과 3 사이의 영역에 대해, 소정의 하이 오더 압축 값에서의 한 개의 선두 제로는, 소정의 하이 오더 압축 값이 이진 표현에서 최대 N=2 비트 수를 갖는 정수를 나타냄을 표시하고;
- (앞서와 같이) 0과 15 사이의 영역에 대해, 소정의 하이 오더 압축 값에서의 두 개의 선두 제로들은, 소정의 하이 오더 압축 값이 이진 표현에서 최대 N=4 비트 수를 갖는 정수를 나타냄을 표시하고;
- 0과 255 사이의 영역에 대해, 소정의 하이 오더 압축 값에서의 세 개의 선두 제로는, 소정의 하이 오더 압축 값이 이진 표현에서 최대 N=8 비트 수를 갖는 정수를 나타냄을 표시하고;
- 0과 65,535 사이의 영역에 대해, 소정의 하이 오더 압축 값에서의 네 개의 선두 제로들은, 소정의 하이 오더 압축 값이 이진 표현에서 최대 N=16 비트 수를 갖는 정수를 나타냄을 표시하는 등등이다.
이러한 방식 및 알려진 영역을 사용하여, 디코딩 엔진(232)은 하이 오더 압축 값이 단지 이 하이 오더 압축 값에서의 선두 제로들의 개수로부터 이진 숫자들의 최대 개수에서의 수를 언제 나타내는지 결정할 수 있다.
정수 범위가 0과 15 사이인 도 8의 예에서 다시 계속하면, 단계(140)에서, 디코딩 엔진은 선두 제로들의 개수를 판독한다. 단계(144)에서, 만약 두 개 이상의 선두 제로들이 존재한다고 결정되면(N'-1이 2보다 크거나 2와 동일하다면), 자동으로 디코딩 엔진은 정수 값이 8과 15 사이에 있고, 정수 값의 이진 표현에서 N(4와 동일) 비트 수를 갖는다고 결정할 수 있다. 따라서, 만약 단계(144)에서 N'-1이 2보다 크거나 2와 동일하다고 결정된다면, N은 단계(146)에서 4로 설정되고, 프로세싱 단계들(148-150)(아래에서 설명됨)은 생략될 수 있다.
단계(152)에서, 제1의 중간 십진 값 J가 2N-1과 동일한 것으로서 정의된다. J는 최상위 비트의 십진 표현을 나타낸다. 본 예에서, M(x)=00110이고, N=4이다. 따라서,
J = 2N- 1= 23 = 8.
단계(158)에서, 제2의 중간 십진 값 K가, 최상위 비트가 제거된 수신된/저장된 값 M(x)의 기수 10 변환(base 10 conversion) 값과 동일하도록 정의된다. 이것은 M(x)의 마지막 N-1개의 숫자들일 것이다. M(x)=00110인 앞서의 예에서, N=4인 것으로 결정된다. 따라서, N-1=3이고, M(x)의 마지막 3개의 숫자들은 110이다, 따라서, 이 예에서 M(x)의 N-1개의 숫자들의 기수 10 변환 값 K는 다음과 같다.
110기수2 = K기수10이고, 따라서 K=6이다.
마지막으로, 단계(160)에서, 본래 정수 값 x가 중간 값들인 J 및 K를 함께 더함으로써 결정되는바, 다음과 같다.
x = J + K
x = 8 + 6 = 14.
도 4에서 알 수 있는 바와 같이, 정수 값 14는 하이 오더 압축 방식에 의해 M(14)=00110으로 엔코딩된다. 도 8에서 알 수 있는 바와 같이, 하이 오더 압축 값 00110은 본래 정수 값 14로 디코딩될 수 있다.
앞서의 설명에서, 선두 제로들이 최대 비트 수를 갖는 디코딩되는 이진 값을 표시하는 경우, 단계들(148 및 150)이 생략될 수 있고, 이에 따라 프로세싱 시간이 감소될 수 있음에 주목해야 한다. 그러나, 이진 표현에서 숫자들의 개수가 최대치보다 더 적은 것으로 결정되는 경우, 단계들(148 및 150)은 수행된다. 예를 들어, 최대 비트 수가 여전히 4(그 영역에서 있어 16개의 정수 값들이 가능)인 시스템에서, 디코딩 엔진(232)은 하이 오더 압축 값 M(x)=01101을 수신한다. 이 예에서, 단계(140)에서 판독된 한 개의 선두 제로가 존재하고, N'-1은 2와 동일 혹은 2보다 크지 않다. 따라서, 디코딩 엔진은 단계(148)를 수행할 것이고, 선두 제로들 다음의 M(x)에서의 N'개의 비트 수를 판독할 것이다. 01101을 디코딩하는 예에서, 한 개의 선두 제로가 존재하고, 따라서 N'-1=1이고, N'=2이다. 따라서, M(x)에서의 선두 제로 다음의 2 비트가 판독된다. M(x)=01101을 디코딩하는 본 예에서, 이 숫자들은 "11"이다. 단계(150)에서, N은 판독된 N'개의 비트 수의 기수 10 변환 값과 동일하다. 본 예에서는 다음과 같다.
11기수2 = 3기수10이고, 따라서 N=3이다.
그 다음에 앞서 설명된 바와 같이 단계(152)가 수행된다. 제1의 중간 값 J가 N=3인 경우 다음과 같이 결정된다.
J = 2N- 1= 22 = 4.
단계(158)에서, 제2의 중간 값 K가 결정된다. 앞서 제시된 바와 같이, K는 최상위 비트가 제거된 수신된/저장된 값 M(x)의 잔존 부분, 즉 M(x)의 마지막 N-1개의 숫자들의 기수 10 변환 값이다. M(x)=01101인 앞서의 예에서, N=3인 것으로 결정된다. 따라서, N-1=2이고, M(x)의 마지막 2개의 숫자들은 "01"이다, 따라서, 이 예에서 M(x)의 N-1개의 숫자들의 기수 10 변환 값 K는 다음과 같다.
01기수2 = K기수10이고, 따라서 K=1이다.
마지막으로, 단계(160)에서, 본래 정수 값 x가 중간 값들인 J 및 K를 함께 더함으로써 결정되는바, 다음과 같다.
x = J + K
x = 4 + 1 = 5.
도 8에서 앞서 설명된 단계들은 제시된 단계들과 동일한 결과에 도달하기 위해 대안적 개념의 방법들에 의해 수행될 수 있음을 이해해야 한다.
앞서 설명된 바와 같이, 실시예들에서, 정수 값들의 임의의 소정 영역은 N=2i를 만족시키는 이진 숫자들의 최대 개수 N을 가질 수 있고, 여기서 i는 2의 거듭제곱이다. 이러한 제약은, 디코더가 엔코딩된 하이 오더 압축 값이 소정의 영역에서 하이 오더 정수 값을 언제 나타내는지 자동으로 결정할 수 있게 한다. 만약 i가 2의 거듭제곱이라는 시스템에 관한 제약이 없다면, 하이 오더 압축 값들의 디코딩은, N에 관한 가정이 제로들의 선두 개수에 근거하여 행해질 수 없다는 점에서 더 복잡하게 될 것이다. 예를 들어, N이 2i라는 제약이 있는 16개의 가능한 정수들을 갖는 시스템에서, M(x)에서의 2개의 선두 제로들이 존재하는 경우, N'-1=2이고, N'는 3 비트 이진 수이고, 이는 100기수2 혹은 N=4기수10과 동일함이 알려져 있다.
그러나, N이 2i라는 제약이 없는 16개의 가능한 정수들을 갖는 시스템에서, 2개의 선두 제로들이 있는 경우 N=4라고 가정될 수 없다. 예를 들어, M(x)에서 2개의 선두 제로들이 존재하는 경우, N'-1=2이고, 따라서 N'는 3 비트 이진 수인데, 이는 100(N=4), 101(N=5), 110(N=6), 혹은 111(N=7)일 수 있다.
그러나, 비록 더 복잡하기는 하지만, 하이 오더 압축 방식의 실시예들은 N이 2i(여기서 i는 2의 거듭제곱)인 것으로 제약되지 않는 N의 값들과 함께 동작할 수 있다. 그 이유는 이러한 값들의 M(x) 엔코딩이 N의 각각의 가능한 값에 대해 여전히 유일하기 때문이다. 이러한 실시예들에서는, 단지 이 엔코딩된 값 M(x)에 있는 선두 제로들이 N의 값을 표시하지는 않지만, M(x)의 다른 숫자들을 조사하여 M(x)가 자신의 본래 정수 값으로 디코딩될 수 있도록 하는 추가적인 단계들이 수행될 수 있다.
실시예들에서, 하이 오더 압축 방식은 하이 오더 정수 값들의 코딩을 효율적으로 할 수 있게 한다(하지만 하이 오더 정수 값들 이하의 정수 값들에 대해서는 아님). 또 다른 실시예들에서, 이 문제는 하이 오더 압축 방식에 의한 엔코딩 이전에 임의 영역에서의 정수 값들에 일부 상수값 더하고 그리고/또는 빼는 공지된 정규화 방식을 사용함으로써 처리될 수 있다. 이 상수값은 해당 영역의 크기에 따라 달라진다. 주목할 사항으로서, 16 값 영역을 갖는 앞서의 도 6에서의 예에서, 이 정규화 단계는 이점을 제공하지 못하는데, 왜냐하면 그 범위의 상부에서의 값들을 엔코딩하기 위한 비트 수가 하부 값들을 코딩하기 위해 필요한 비트들보다 더 작지 않기 때문이다. 이러한 상황은 더 큰 영역에 대해서는 해당되지 않는다.
예를 들어, 정규화된 하이 오더 압축 방식의 이점은 도 9에서 명백하다. 도 9는 8 비트 영역(256개의 정수 값들) 전체에 걸친 정수 엔코딩의 부분들을 나타낸다. 비정규화된 버전에서, 하이 오더 압축 방식은 64 내지 127 범위에서 값을 코딩하기 위해, 128을 코딩하기 위한 것보다 더 많은 비트들을 사용한다. 어떤 값의 분포에 있어서, 이것은 차선일 수 있다. 정규화의 프로세스는 이것을 처리할 수 있는바, 예를 들어, 32-159의 값들을 대신 나타내기 위해 128-255를 나타내는 비트 코드들을 사용하고 160-255를 대신 나타내기 위해 32-127를 나타내는 비트 코드들을 사용함으로써 처리할 수 있다. 이것은 엔코딩/디코딩 프로세스 동안 상수값(이것은 그 특정 영역 범위에 의존하는 값임)를 더하고 그리고/또는 공제함으로써 달성될 수 있다. 도 9의 예에서, 비정규화된 하이 오더 압축 엔코딩 이전에 32-159 사이의 임의의 값에는 96이 더해지고, 그리고 비정규화된 하이 오더 압축 엔코딩 이전에 160-255 범위에서의 임의의 값에서 128이 공제된다. 이러한 변동 이후, 하이 오더 압축 방식이 앞서 설명된 바와 같이 수행된다. 그 역이 디코딩시에 수행된다.
앞서 제시된 바와 같이, 하이 오더 압축 방식의 실시예들은, 정수 데이터가 저장 및/또는 전달되는 매우 다양한 상황에서 사용될 수 있다. 하이 오더 압축 방식이 사용될 수 있는 일 실시예가 도 10의 블럭도를 참조하여 이하에서 설명된다. 이 시스템은 미국 특허출원 번호 제10/318,272호(발명의 명칭 "Transaction Tracer", 2002년 12월 12일 출원)에서 보다 상세히 설명되어 있고, 이 특허출원은 본 발명의 소유자에게 양도되었으며, 그리고 이 특허출원은 그 전체가 참조로 본 명세서에 통합된다. 일반적으로, 이러한 시스템은 컴퓨팅 환경에서의 트랜잭션들을 모니터링한다. 하나 이상의 트랜잭션들의 세트에 대한 데이터가 수집된다. 그 다음에 이 데이터는 한 세트의 기준에 대비되어 테스트된다. 기준을 충족시키는 트랜잭션들이 보고된다. 일 실시예에서, 기준을 충족시키지 못하는 트랜잭션들에 대한 데이터는 버려진다. 이 보고된 데이터는, 소프트웨어의 어떤 부분이 너무 느리게 실행되고 있는지 혹은 그렇지 않다면 적절하게 그 기능을 수행하지 못하고 있는지를 식별하는데 사용될 수 있다.
일 실시예에서, 사용자는 임계치 추적 기간(threshold trace period)을 특정하고, 소프트웨어 시스템 상에서 실행되는 하나 혹은 일부 혹은 모든 트랜잭션들에 관한 트랜잭션 추적을 개시할 수 있다. 임계치 추적 기간을 초과하는 실행 시간을 갖는 트랜잭션들이 그래픽 사용자 인터페이스를 사용하여 사용자에게 보고된다. 그래픽 사용자 인터페이스는, 추적된 트랜잭션에서 어디서 시간이 소비되었는지를 사용자가 바로 이해할 수 있게 하는, 보고된 트랜잭션들의 시각화부들을 포함할 수 있다.
도 10은 애플리케이션 수행 관리 툴의 컴포넌트들의 개념도이다. 이 도면은 트랜잭션 모니터링 시스템에 의해 모니터링되는 피관리 애플리케이션(200)을 나타낸다. 트랜잭션 모니터링 시스템은 프로브(probe)들(202, 204)을 바이트코드(bytecode)에 더함으로써 피관리 애플리케이션(200)의 바이트코드를 조정(즉, 수정)한다. 프로브들은 애플리케이션의 비즈니스 로직을 변경시킴 없이 피관리 애플리케이션에 대한 특정 정보를 측정한다. 에이전트(208)가 또한, 피관리 애플리케이션(200)과 동일한 머신에 설치된다. 바이트코드를 수정하는 것에 대한 더 많은 정보는 미국 특허 번호 제6,260,187호(발명의 명칭 "System for Modifying Object Oriented Code")에서 찾을 수 있고, 이 특허는 본 발명의 소유자에게 양도되었으며, 그리고 이 특허는 그 전체가 참조로 본 명세서에 통합된다. 트랜잭션 모니터링 시스템은 새로운 코드를 피관리 애플리케이션에 더함으로써 바이트코드를 더 조정하는바, 이는 피관리 애플리케이션의 방법이 시작할 때 추적 매커니즘을 활성화시키고 그리고 이 방법이 완료될 때 추적 매커니즘을 종료시킨다.
도 10은 또한 엔터프라이즈 관리자(220), 데이터베이스(222), 워크스테이션(224) 및 워크스테이션(226)을 나타낸다. 피관리 애플리케이션이 실행됨에 따라, 프로브들(예를 들어, 202 및/또는 204)이 데이터를 에이전트(208)로 중계한다. 그 다음에, 에이전트(208)는 이 데이터를 수집 및 요약하고, 그리고 이것은 엔터프라이즈 관리자(220)에게 전송한다. 엔터프라이즈 관리자(220)는 에이전트(208)를 통해 피관리 애플리케이션들로부터 수행 데이터를 수신하고, 요청된 계산을 실행하며, 수행 데이터가 워크스테이션들(예를 들어, 224 및 226)에 이용가능하게 하고, 그리고 선택에 따라서는 이후 분석을 위해 수행 데이터를 데이터베이스(222)에 전송한다. 워크스테이션들(예를 들어, 224 및 226)은 수행 데이터를 관측하기 위한 그래픽 사용자 인터페이스일 수 있다. 워크스테이션들은 인간 운영자에 의해 모니터링될 수 있는 수행 데이터의 커스텀 뷰(custom view)들을 생성하는 데 사용된다. 일 실시예에서, 워크스테이션들은 두 개의 메인 윈도우들, 즉 콘솔(consol) 및 익스플로러(exploror)로 구성된다. 콘솔은 커스텀화가능 뷰들의 세트에 수행 데이터를 디스플레이한다. 익스플로러는 수행 데이터를 필터링하는 계산기들 및 경고들을 나타낼 수 있어 데이터는 의미 있는 방식으로 관측될 수 있다. 수행 데이터를 조직화, 조작, 필터링, 및 디스플레이하는 워크스테이션의 요소들로는, 액션(action)들, 경고(alert)들, 계산기(calculator)들, 대시보드(dashboard)들, 지속적 수집(persistent collection)들, 메트릭 그룹화(metric grouping)들, 비교(comparison)들, 스마트 트리거(smart trigger)들, 및 SNMP 수집들이 있다.
도 10에 도시된 컴포넌트들(200, 220, 222, 224 및 226)은 각각 개별 컴퓨팅 시스템에 대해 동작할 수 있거나, 또는 이러한 컴포넌트들 중 둘 이상은 단일 컴퓨팅 시스템으로 결합될 수 있다. 이러한 컴포넌트들 모두 혹은 어느 하나에 대한 컴퓨팅 시스템은, 개인용 컴퓨터, 미니컴퓨터, 메인 프레임, 핸드헬드 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스 등을 포함하는 다양한 서로 다른 타입의 컴퓨팅 디바이스들 중 어느 하나일 수 있다. 컴포넌트들(200, 220, 222, 224 및 226) 중 어느 하나를 설명할 수 있는 예시적 컴퓨팅 환경(300)이 도 11을 참조하여 아래에서 제시 및 설명된다. 본 발명의 시스템은 수많은 다른 범용 혹은 특수 목적의 컴퓨팅 시스템들, 환경들 혹은 구성들과 함께 동작가능하다. 본 발명의 시스템과 함께 사용되기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들로는, 개인용 컴퓨터들, 서버 컴퓨터들, 마이크로프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 셋탑 박스들, 프로그래밍가능 소비자 가전제품들, 네트워크 PC들, 미니컴퓨터들, 메인프레임 컴퓨터들, 랩탑 및 팜 컴퓨터들, 핸드헬드 디바이스들, 앞서의 시스템들 혹은 디바이스들 중 어느 하나를 포함하는 분산형 컴퓨팅 환경들 등이 있지만, 이러한 것에만 한정되는 것은 아니다.
도 11을 참조하면, 본 발명의 시스템을 구현하기 위한 예시적 시스템은 컴퓨터(310) 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(310)의 컴포넌트들은, 프로세싱 유닛(320), 시스템 메모리(330), 및 시스템 메모리 내지 프로세싱 유닛(320)을 포함하는 다양한 시스템 컴포넌트들을 결합시키는 시스템 버스(321)를 포함하지만, 이러한 것에만 한정되는 것은 아니다. 시스템 버스(321)는, 메모리 버스 혹은 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처들 중 어느 하나를 사용하는 로컬 버스를 포함하는 수가지 타입의 버스 구조들 중 어느 하나일 수 있다. 예를 들어, 비한정적으로, 이러한 아키텍처들은 산업 표준 아키텍처(Industry Standard Architecture, ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture, MCA) 버스, 증진된 ISA(Enhanced ISA, EISA) 버스, 비디오 전자공학 표준 협회(Video Electronics Standards Association, VESA) 로컬 버스, 및 메자나인 버스(Mezzanine bus)로 알려지기도 한 주변 컴포넌트 인터페이스(Peripheral Component Interconnect, PCI) 버스를 포함한다.
컴퓨터(310)는 다양한 컴퓨터 판독가능 매체들을 포함할 수 있다. 컴퓨터 판독가능 매체들은 컴퓨터(310)에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있고, 그리고 휘발성 및 비휘발성 매체들, 탈착가능 및 비탈착가능 매체들 양쪽 모두를 포함한다. 예를 들어, 비한정적으로, 컴퓨터 판독가능 매체들은 컴퓨터 저장 매체들 및 통신 매체들을 포함할 수 있다. 컴퓨터 저장 매체들은, 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 혹은 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 혹은 기술로 구현되는 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체들 양쪽 모두를 포함한다. 컴퓨터 저장 매체들은, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), EEPROM, 플래시 메모리 혹은 다른 메모리 기술, CD-ROM들, 디지털 다용도 디스크(Digital Versatile Disc, DVD)들, 혹은 다른 광학 디스크 스토리지, 자기 카세트들, 자기 테이프들, 자기 디스크 스토리지 혹은 다른 자기 저장 디바이스들, 또는 원하는 정보를 저장하는데 사용될 수 있고 아울러 컴퓨터(310)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이러한 것에만 한정되는 것은 아니다. 통신 매체들은 전형적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 반송파 혹은 다른 전송 매커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 포함하고, 그리고 임의의 정보 전달 매체들을 포함한다. 용어 "변조된 데이터 신호"의 의미는, 해당 신호에서의 정보를 엔코딩하는 방식으로 설정 혹은 변경된 특성들 중 하나 이상을 갖는 신호를 의미한다. 예를 들어, 비한정적으로, 통신 매체들은, 유선 네트워크, 혹은 직접 유선 연결과 같은 유선 매체들과, 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체들을 포함한다. 앞서의 것들 중 임의의 것들을 결합하는 것도 또한 컴퓨터 판독가능 매체들의 범위 내에 포함된다.
시스템 메모리(330)는 ROM(331) 및 RAM(332)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체들을 포함한다. 시동(start-up)하는 동안과 같은 컴퓨터(310) 내에서 요소들 간의 전보를 전달함에 있어 도움을 주는 기본 루틴들을 포함하는, 기본 입력/출력 시스템(BIOS)(333)은 전형적으로 ROM(331)에 저장된다. RAM(332)은 전형적으로, 프로세싱 유닛(320)에 의해 바로 액세스될 수 있고 그리고/또는 현재 동작되고 있는, 데이터 및/또는 프로그램 모듈들을 포함한다. 예를 들어, 비한정적으로, 도 11은 운영 체계(334), 애플리케이션 프로그램들(335), 다른 프로그램 모듈들(336), 및 프로그램 데이터(337)를 나타낸다.
컴퓨터(310)는 또한 다른 제거가능/제거불가(removable/non-removable) 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예로서, 도 11은 고정식 비휘발성 자기 매체 및 자기 디스크 드라이브(351)로부터로 판독 또는 고정식 비휘발성 자기 매체 및 자기 디스크 드라이브(351)에 기록하는 하드 디스크 드라이브(341)을 도시한다. 컴퓨터(310)는 또한 광학 매체에 기록 및/또는 광학 매체를 판독하기 위한 광학 매체 판독 디바이스(355)를 더 포함할 수 있다.
예시적인 동작 환경에서 사용될 수 있는 다른 이동식/고정식, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테잎, 솔리드 스테이트(solid state) RAM, 솔리드 스테이트 ROM 등을 포함하나, 이에 국한되는 것은 아니다. 하드 디스크 드라이브(341)는 일반적으로 인터페이스(341)와 같은 고정식 메모리 인터페이스를 통해 시스템 버스(321)에 연결되고, 자기 디스크 드라이브(351) 및 광학 매체 판독 디바이스(355)는 일반적으로 인터페이스(350)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(321)에 연결된다.
위에서 논의되고 도 11에 도시된 드라이브들 및 이것들에 관련된 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 컴퓨터(310)의 다른 데이터에 대한 스토리지를 제공한다. 도 11에서, 예를 들어, 하드 디스크 드라이브(341)는 운영 시스템(344), 애플리케이션 프로그램들(345), 다른 프로그램 모듈들(346), 및 프로그램 데이터(347)를 저장하는 것으로서 도시된다. 이 컴포넌트들은 운영 시스템(334), 애플리케이션 프로그램들(335), 다른 프로그램 모듈들(336), 및 프로그램 데이터(337)과 동일하거나 이것들과 다를 수 있다. 운영 시스템(344), 애플리케이션 프로그램들(345), 다른 프로그램 모듈들(346), 및 프로그램 데이터(347)는, 최소한 이것들이 서로다른 카피들임을 나타내기 위하여 본 명세서에서 서로 다른 도면 번호들로 표시된다. 사용자는 키보드(362) 및 포인팅 디바이스(361)(일반적으로 마우스, 트랙볼 또는 터치 패드라고 지칭됨)와 같은 입력 디바이스들을 통해 컴퓨터(310)에 명령들 및 정보를 입력한다. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이러한 입력 디바이스들 및 다른 입력 디바이스들은 대개 시스템 버스(321)에 연결되는 사용자 입력 인터페이스(360)를 통해 프로세싱 유닛(320)에 연결되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조들에 의해 연결될 수도 있다. 모니터에 부가하여, 컴퓨터들은 또한 스피커들(397) 및 프린터(396)와 같은 다른 주변 출력 디바이스들을 포함할 수 있으며, 이것들은 출력 주변장치 인터페이스(395)를 통해 연결될 수 있다.
컴퓨터(310)는 원격 컴퓨터(380)와 같은 하나 이상의 원격 컴퓨터들로의 논리 연결들(logical connections)을 사용하는 네트워크 환경에서 동작할 수 있다. 도 11에는 단지 메모리 저장 디바이스(381)가 도시되었지만, 원격 컴퓨터(380)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(310)와 관련하여 위에서 기술된 다수의 요소들 또는 전체 요소들을 포함한다. 도 11에 표시된 논리 연결들은 로컬 영역 네트워크(LAN)(371) 및 광역 네트워크(WAN)(373)를 포함하지만, 다른 네트워크들 또한 포함할 수 있다. 그러한 네트워크 환경들은 사무실, 엔터프라이즈-와이드 컴퓨터 네트워크(enterprise-wide computer networks), 인트라넷 및 인터넷에서 흔히 사용되는 것이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 네트워크 인터페이스 또는 어댑터(370)를 통해 LAN(371)에 연결된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(310)는 일반적으로 모뎀(372), 또는 인터넷과 같은 WAN(373)에서 통신을 확립하기 위한 다른 수단을 포함한다. 모뎀(372)(상기 모뎀은 내장형이거나 외장형일 수 있음)은 사용자 입력 인터페이스(360) 또는 다른 적절한 메커니즘을 통해 시스템 버스(321)에 연결될 수 있다. 네트워크 환경에서, 컴퓨터(310)와 관련하여 표시된 프로그램 모듈들, 또는 이것들의 일부가 원격 메모리 저장 디바이스 내에 저장될 수 있다. 예를 들어, 도 11은 메모리 디바이스(381)에 상주하는 것으로서 원격 애플리케이션 프로그램들(385)을 도시하나, 이 국한되는 것은 아니다. 도시된 네트워크 연결들은 예시적인 것이며 컴퓨터들 간에 통신 링크를 확립하는 다른 수단이 사용될 수 있음이 이해될 것이다.
일부 실시예들에서, 트랜잭션 관리 시스템의 전부 또는 일부는, 하나 이상의 프로세서 판독가능 저장 디바이스들에 저장되는 소프트웨어에서 구현될 수 있으며, 하나 이상의 프로세서들을 프로그램하는데 사용된다. 도 10을 다시 참조하면, 엔터프라이즈 관리자(220)는, 엔터프라이즈 관리자(220)에게/로부터 전송되는 일부 데이터 또는 모든 데이터에 대해 하이 오더 압축 기법을 수행하기 위한, 또는 엔터프라이즈 관리자에 저장된 데이터를 위한, 엔코딩 엔진(230) 및 디코딩 엔진(232)을 가지는 코덱(CODEC)을 더 포함한다. 추가적으로 또는 대안적으로, 엔진들(230, 232)을 포함하는 CODEC은, 관리되는 애플리케이션(managed application)(200)을 호스팅하는 하나 이상의 컴퓨팅 시스템들, 워크스테이션들(224, 226), 및/또는 데이터베이스(222) 상에 제공되어, 이 컴퓨팅 시스템들에 저장된 그리고/또는 상기 컴퓨팅 시스템들에 의해 수신되거나 상기 컴퓨팅 시스템으로부터 송신된 데이터를 엔코딩할 수 있다.
일반적으로, 엔코딩 엔진(232)은 컴포넌트들(200, 220, 222, 224, 226) 중 한 컴포넌트 상의 저장 매체로부터 정수 값들을 수신하고, 이 값들을 엔코딩하고, 그후 엔코딩된 값들을 하나 이상의 컴포넌트들(200, 220, 222, 224, 226)의 저장 매체 상에 저장할 수 있다. 실시예들에서, 엔코딩 엔진(232)이 엔코딩된 값들을 출력하고, 새로운 파일들 및/또는 데이터 구조들이 생성되어 이 값을 저장한다. 마찬가지로, 디코딩 엔진은 컴포넌트들(200, 220, 222, 224, 226) 중 한 컴포넌트 상의 저장 매체로부터 엔코딩된 값들을 수신하고, 이 값들을 디코딩하고, 그후 상기 디코딩된 값들을 하나 이상의 컴포넌트들(200, 220, 222, 224, 226)에 출력한다. 실시예들에서, 디코딩 엔진(232)은 정수 값들을 출력하며, 새로운 파일들 및/또는 데이터 구조들이 생성되어 이 값들을 저장 매체 상에 출력 및/또는 저장한다.
일 실시예에서, 도 10의 시스템의 사용자는, 임계 트레이스 기간(threshold trace period)을 특정함으로써, 엔터프라이즈 관리자에 의해 관리되는 에이전트들의 전부 또는 일부에 대한 트랜잭션 트레이싱을 개시할 수 있다. 실행 시간이 이 임계 레벨을 초과하는 에이전트 내의 모든 트랜잭션들이 트레이스되어 엔터프라이즈 관리자(220)에게 보고될 것이며, 상기 엔터프라이즈 관리자(220)는 트레이스 정보에 관심을 보이는 적절한 워크스테이션들로 상기 정보를 라우팅할 것이다. 워크스테이션들은 임계값을 초과하는 모든 트랜잭션들을 열거하는 GUI를 제공할 것이다. 각각의 열거된 트랜잭션에 대해, 사용자로 하여금 트레이스된 트랜잭션의 어디에서 시간이 소비되는지를 즉시 이해할 수 있게 해주는 시각화(visualization)가 제공될 수 있다.
본 발명에 대한 위의 상세한 설명은 예시 및 설명의 목적으로 제시된 것이다. 이는 본 발명을 개시된 특정 형태로 제약하거나 모든 것을 포괄하려 의도된 것이 아니다. 위의 설명에 비추어 다양한 수정 및 변경이 가능하다. 설명된 실시예들은 본 발명의 원리들 및 그 실제적인 응용들을 가장 잘 설명하여 당업자가 고려되는 구체적인 사용에 적합하게 다양한 수정들 및 다양한 실시예들에서 본 발명을 가장 잘 사용할 수 있도록 할 것이다. 본 발명의 범주는 첨부된 청구항들에 의해 정의되는 것으로 의도되었다.
Claims (20)
- 알려진 전범위의 정수들(known gamut of integers)을 사용하고 이진 숫자들의 최대 개수(a maximum number of binary digits)를 포함하는 최대 정수 값(maximum integer value)을 가지는 데이터 시스템에서 정수 값을 엔코딩하는 방법으로서,
a) 상기 정수 값의 이진 표현(binary representation)에서 숫자들(digits)의 개수 N를 결정하는 단계와;
b) N의 이진 표현에서 숫자들의 개수 N'를 결정하는 단계와;
c) N의 log2가, 엔코딩될 값의 소정의 전범위(predfined gamut range)의 log2와 동일하다면, 상기 정수 값을 엔코딩된 값(encoded value)으로 엔코딩하는 단계와, 상기 엔코딩된 값은
i) N'-1 개의 제로들(zeros)과 동일한 제1 컴포넌트와, 그리고
ii) 최상위 비트가 제거된 상태의 상기 정수 값의 이진 표현과 동일한, 제1 컴포넌트에 부가된(appended) 제2 컴포넌트를 가지며, 그리고
d) 상기 엔코딩된 값을 출력하는 단계를 포함하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
N이 상기 데이터 시스템에 대한 상기 최대 정수 값의 이진 숫자들의 최대 개수보다 적으면, 상기 정수 값을
ⅰ) N'-1 개의 제로들과 동일한 제1 컴포넌트와,
ⅱ) N의 이진 표현과 동일한, 상기 제1 컴포넌트에 부가된, 제2 컴포넌트와, 그리고
ⅲ) 최상위 비트가 제거된 상태의 상기 정수 값의 이진 표현과 동일한, 제2 컴포넌트에 부가된 제3 컴포넌트를 가지는 이진수(binary number)로 엔코딩하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
상기 엔코딩된 값을 출력하는 단계(d)는,
네크워크 연결을 통해 제1 컴퓨팅 디바이스로부터 제2 컴퓨팅 디바이스로 상기 엔코딩된 값을 전송하는 단계를 포함하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
상기 엔코딩된 값을 출력하는 단계(d)는,
영구 저장 매체(persistent storage media) 상에 상기 엔코딩된 값을 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
상기 엔코딩된 값을 출력하는 단계(d)는,
FIFO 데이터 구조(FIFO data structure) 상에 저장하기 위하여, 상기 엔코딩된 값의 제1 서브컴포넌트를 첫번째로 그리고 상기 엔코딩된 값의 제2 서브컴포넌트를 두번째로, 상기 엔코딩된 값을 한번에 한 서브컴포넌트(one subcomponent)씩 출력하는 단계를 포함하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
상기 엔코딩된 값을 출력하는 단계(d)는,
LIFO 데이터 구조(LIFO data structure) 상에 저장하기 위하여, 상기 엔코딩된 값의 제1 서브컴포넌트를 첫번째로 그리고 상기 엔코딩된 값의 제2 서브컴포넌트를 두번째로, 상기 엔코딩된 값을 한번에 한 서브컴포넌트(one subcomponent)씩 출력하는 단계를 포함하는 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
상기 전범위 내의 정수들의 개수는 2i와 동일하며, 여기서 i는 2의 누승(power of 2)인 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제4 항에 있어서,
상기 전범위 내의 정수들의 개수는 4, 16, 256, 65536 중 하나인 것을 특징으로 하는 데이터 시스템에서 정수 값을 엔코딩하는 방법. - 제1 항에 있어서,
(e) 정수 값들의 적어도 일부를 소정의 상수(predetermined constant value) 만큼 시프트 업(shift up) 또는 시프트 다운(shift down)함으로써 상기 데이터 시스템에서 정수값들의 전범위를 정규화(regularization)하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 2i와 동일한 알려진 전범위(known gamut)의 정수 값들을 사용하는 데이터 시스템에서, 엔코딩된 값을 정수 값으로 디코딩하는 방법으로서, 여기서 i는 2의 누승(power of 2)이고, 상기 범위는 이진 숫자들의 최대 개수를 포함하는 최대 정수 값을 가지며,
a) 상기 엔코딩된 값을 출력하는 단계와;
b) 상기 엔코딩된 값에서 선두 제로들(leading zeros)의 개수를 결정하는 단계와;
c) 상기 선두 제로들의 개수가, 상기 데이터 시스템에 대한 상기 최대 정수 값에서의 이진 숫자들의 최대 개수의 log2 보다 큰지 또는 같은지를 결정하는 단계와;
d) 상기 b) 단계에서, 상기 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값에서의 이진 숫자들의 최대 개수의 log2 보다 큰지 또는 같은지가 결정되면, 2N-1과 동일한 제1 중간 십진 값(first intermediate decimal value) J를 결정하는 단계와, 여기서, N은 상기 최대 정수에서의 이진 숫자들의 최대 개수와 동일하며,
e) 상기 엔코딩된 값의 최상위 비트가 제거된 상태에서 상기 엔코딩된 값의 십진수 변환과 동일한 제2 중간 십진 값 K를 결정하는 단계와;
f) 상기 엔코딩된 값이 나타내는 정수 값을 제공하기 위하여, 상기 제1 중간 십진 값 J를 상기 제2 중간 십진 값 K에 더하는 단계를 포함하는 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 제10 항에 있어서,
상기 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값의 이진 숫자들의 최대 개수의 log2 보다 작다면,
g) 상기 선두 제로들 다음에 오는 상기 엔코딩된 값의 N' 개의 비트들을 판독하는 단계와, 여기서 N'는 상기 선두 제로들의 수 더하기 1 이고;
h) 상기 N'개의 판독된 비트들의 십진수 변환과 동일한 N의 값을 결정하는 단계와;
j) J = 2N-1 의 식에 따라 J의 값을 결정하기 위하여 상기 h) 단계에서 결정된 N의 값을 사용하는 단계를 포함하는 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 제10 항에 있어서,
상기 a) 엔코딩된 값을 출력하는 단계는, 네크워트 연결을 통해 제1 컴퓨팅 디바이스로부터 제2 컴퓨팅 디바이스로 상기 엔코딩된 값을 전송하는 단계를 포함하는 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 제10 항에 있어서,
상기 a) 엔코딩된 값을 출력하는 단계는, 영구 저장 매체로부터 상기 엔코딩된 값을 검색하는 단계를 포함하는 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 제10 항에 있어서,
상기 a) 엔코딩된 값을 출력하는 단계는, 상기 단계 c)에서 상기 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값에서의 이진 숫자들의 최대 개수의 log2 보다 큰거나 같은것으로 결정된 경우에, 상기 엔코딩된 값을 한번에 한 서브컴포넌트(one subcomponent)씩 출력하는 단계를 포함하며, 제1 서브컴포넌트 출력은 상기 엔코딩된 값의 선두 제로들이고, 제2 서브컴포넌트 출력은 상기 엔코딩된 값의 나머지 숫자들인 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 제10 항에 있어서,
상기 a) 엔코딩된 값을 출력하는 단계는, 상기 단계 c)에서 상기 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값에서의 이진 숫자들의 최대 개수의 log2 보다 작은 것으로 결정된 경우에, 상기 엔코딩된 값을 한번에 한 서브컴포넌트씩 출력하는 단계를 포함하며, 상기 제1 서브컴포넌트 출력은 상기 엔코딩된 값의 선두 제로들이고, 상기 제2 서브컴포넌트 출력은 상기 선두 제로들 다음에 오는 N' 더하기 1개들의 비트들들(N' plus one bits)이고, 여기서 N'는 상기 선두 제로들의 개수와 같고, 제3 컴포넌트는 상기 엔코딩된 값의 나머지 숫자들인 것을 특징으로 하는 엔코딩된 값을 정수 값으로 디코딩하는 방법. - 웹 애플리케이션들 및 웹 사이트들에서 성능 문제들을 검출하고 진단하기 위한 모니터링 시스템에서, 상기 시스템은 모니터링 소프트웨어 애플리케이션(monitoring software application) 및 상기 모니터링 소프트웨어 애플리케이션에의해 모니터링되는 피모니터링 소프트웨어 애플리케이션(monitored software application)을 포함하며, 상기 모니터링 소프트웨어 애플리케이션 및 상기 피모니터링 소프트웨어 애플리케이션은 적어도 하나의 컴퓨팅 디바이스 내의 적어도 하나의 프로세서 상에서 구동되며, 상기 적어도 하나의 프로세서는, 상기 모니터링 시스템 내에서 사용되는 정수 값을 엔코딩하는 방법을 더 수행하고, 상기 모니터링 시스템은 2i개의 정수들과 같은 정수들의 알려진 범위(known gamut)를 사용하여, 여기서 i는 2의 누승(power of 2)이고, 상기 범위는 이진 숫자들의 최대 개수를 포함하는 최대 정수 값을 가지며, 여기서 상기 엔코딩하는 방법은,
a) 상기 정수 값의 이진 표현에서의 숫자들의 개수 N을 결정하는 단계와;
b) N의 이진 표현에서의 숫자들의 개수 N'를 결정하는 단계와;
c) N이 데이터 시스템에 대한 최대 정수의 이진 숫자들의 최대 개수와 동일하다면, 상기 정수 값을 엔코딩된 값(encoded value)으로 엔코딩하는 단계와, 여기서 상기 엔코딩된 값은
i) N'-1 개의 제로들(N'-1 number of zeros)과 동일한 제1 컴포넌트와, 그리고
ii) 최상위 비트가 제거된 상태의 상기 정수 값의 이진 표현과 동일한, 상기 제1 컴포넌트에 부가된 제2 컴포넌트를 가지며;
d) 상기 엔코딩된 값을 출력하는 단계를 포함하는 것을 특징으로 하는 모니터링 시스템. - 제16 항에 있어서,
N이 상기 데이터 시스템에 대한 최대 정수 값의 이진 숫자들의 최대 개수보다 작다면, 상기 정수 값을,
i) N'-1 개의 제로들과 동일한 제1 컴포넌트와,
ii) N의 이진 표현과 동일한, 상기 제1 컴포넌트에 부가된(appended) 제2 컴포넌트와, 그리고
iii) 최상위 비트가 제거된 상태의 상기 정수 값의 이진 표현과 동일한, 상기 제2 컴포넌트에 부가된 제3 컴포넌트를 가지는 이진수로 엔코딩하는 것을 특징으로 하는 모니터링 시스템. - 제16항에 있어서,
상기 적어도 하나의 프로세서는 상기 a) 내지 d) 단계들에 의해 엔코딩된 엔코딩된 값(encoded value)을 디코딩하는 방법을 더 수행하며, 상기 디코딩 방법은,
e) 상기 엔코딩된 값에서 선두 제로들의 개수를 결정하는 단계와;
f) 상기 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값의 이진 숫자들의 최대 개수의 log2보다 크거나 같은지를 결정하는 단계와;
g) 상기 단계 b)에서 선두 제로들의 개수가 상기 데이터 시스템에 대한 상기 최대 정수 값의 이진 숫자들의 최대 개수의 log2보다 크거나 같은은 것으로 결정되면, 2N-1과 동일한 제1 중간 십진 값 J를 결정하는 단계와, 여기서 N은 상기 최대 정수의 이진 숫자들의 최대 개수와 동일하며;
h) 상기 엔코딩된 값의 최상위 비트가 제거된 상태에서 상기 엔코딩된 값의 10진수 변환과 동일한 제2 중간 십진 값 K를 결정하는 단계와;
i) 상기 엔코딩된 값에 의해 표현되는 상기 정수 값을 제공하기 위하여, 상기 제2 중간 값 K에 상기 제1 중간 값 J를 더하는 단계를 포함하는 것을 특징으로 하는 모니터링 시스템. - 제18 항에 있어서,
상기 선두 제로들의 수가 상기 데이터 시스템에 대한 상기 최대 정수 값의 이진 숫자들의 최대 수의 log2보다 작다면,
j) 상기 선두 제로들 다음에 오는 상기 엔코딩된 값의 N'개의 비트들를 판독하는 단계와, 여기서 N'는 상기 선두 제로들의 개수 더하기 1이고 N의 이진 표현에서의 숫자들과 동일하며,
k) N' 개의 판독된 비트들의 10진 변환과 동일한 N의 값을 결정하는 단계와,
l) 식 J = 2N-1에 따라 J의 값을 결정하기 위하여 상기 h) 단계에서 결정된 N의 값을 사용하는 단계를 더 포함하는 것을 특징으로 하는 모니터링 시스템. - 제16 항에 있어서,
m) 상기 정수 값들의 적어도 일부를 소정의 상수 값(predetermiend constant value) 만큼 시프트 업 또는 시프트 다운하여 상기 모니터링 시스템에 의해 사용되는 정수 값들의 범위를 정규화하는 단계를 더 포함하는 것을 특징으로 하는 모니터링 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/707,582 | 2010-02-17 | ||
US12/707,582 US8977664B2 (en) | 2010-02-17 | 2010-02-17 | System for storing and transmitting compressed integer data |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110095209A true KR20110095209A (ko) | 2011-08-24 |
KR101166910B1 KR101166910B1 (ko) | 2012-07-23 |
Family
ID=44202506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110014183A KR101166910B1 (ko) | 2010-02-17 | 2011-02-17 | 압축된 정수 데이터 저장 및 전송 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8977664B2 (ko) |
EP (1) | EP2365635A1 (ko) |
JP (1) | JP5079110B2 (ko) |
KR (1) | KR101166910B1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101006059B1 (ko) * | 2010-07-16 | 2011-01-07 | 오재원 | 정보 압축방법 |
US9754384B2 (en) * | 2012-04-18 | 2017-09-05 | Suzhou Superengine Graphics Software Technology Development Co., Ltd. | Relevant method and device for compression, decompression and progressive transmission of spatial data |
JP6772486B2 (ja) * | 2016-03-08 | 2020-10-21 | 日本電気株式会社 | センサーデータ処理装置、センサーデータ処理システム、センサーデータ処理方法、及び、センサーデータ処理プログラム |
US11995871B1 (en) | 2020-11-30 | 2024-05-28 | Amazon Technologies, Inc. | Lossy block repair |
US11967118B1 (en) | 2020-11-30 | 2024-04-23 | Amazon Technologies, Inc. | Hybrid codec |
US11290710B1 (en) * | 2020-11-30 | 2022-03-29 | Amazon Technologies, Inc. | Adaptable golomb coding |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3368157B2 (ja) * | 1996-11-18 | 2003-01-20 | キヤノン株式会社 | データ圧縮装置、方法及びシステム |
JPH1188189A (ja) | 1997-09-10 | 1999-03-30 | Canon Inc | データ圧縮処理方法及びその装置及びコンピュータ可読メモリ |
US6260187B1 (en) | 1998-08-20 | 2001-07-10 | Wily Technology, Inc. | System for modifying object oriented code |
US8321485B2 (en) * | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
US7924178B2 (en) * | 2008-10-01 | 2011-04-12 | Seagate Technology Llc | System and method for lossless data compression |
-
2010
- 2010-02-17 US US12/707,582 patent/US8977664B2/en not_active Expired - Fee Related
-
2011
- 2011-02-16 JP JP2011030873A patent/JP5079110B2/ja not_active Expired - Fee Related
- 2011-02-17 KR KR1020110014183A patent/KR101166910B1/ko active IP Right Grant
- 2011-02-17 EP EP11250188A patent/EP2365635A1/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
EP2365635A1 (en) | 2011-09-14 |
US20110202584A1 (en) | 2011-08-18 |
JP2011193451A (ja) | 2011-09-29 |
US8977664B2 (en) | 2015-03-10 |
JP5079110B2 (ja) | 2012-11-21 |
KR101166910B1 (ko) | 2012-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101166910B1 (ko) | 압축된 정수 데이터 저장 및 전송 시스템 | |
CN109600618B (zh) | 视频压缩方法、解压缩方法、装置、终端和介质 | |
US7629904B2 (en) | Image coding with scalable context quantization | |
US10666289B1 (en) | Data compression using dictionary encoding | |
US9088540B1 (en) | Processing data formatted for efficient communication over a network | |
CN110019865B (zh) | 海量图片处理方法、装置、电子设备及存储介质 | |
US20230060055A1 (en) | Computer Data Compression Utilizing Multiple Symbol Alphabets And Dynamic Binding Of Symbol Alphabets | |
US11438009B2 (en) | Encoding apparatus, decoding apparatus, data structure of code sequence, encoding method, decoding method, encoding program, and decoding program | |
US10817475B1 (en) | System and method for encoding-based deduplication | |
US20100039300A1 (en) | Lzw data compression algorithm | |
Hidayat et al. | Survey of performance measurement indicators for lossless compression technique based on the objectives | |
CN107797898B (zh) | 数据采集方法及其装置 | |
US11360954B2 (en) | System and method for hash-based entropy calculation | |
CN116418348A (zh) | 一种数据压缩方法、装置、设备及存储介质 | |
JP4446102B2 (ja) | データ圧縮/復元システム、データ圧縮装置、データ復元装置、及びプログラム | |
US10963437B2 (en) | System and method for data deduplication | |
US10840944B2 (en) | Encoding apparatus, decoding apparatus, data structure of code string, encoding method, decoding method, encoding program and decoding program | |
CN111967001A (zh) | 一种基于双容器的解码与编码安全隔离方法 | |
CN111935237A (zh) | 日志处理方法及系统、电子设备及存储介质 | |
CN114978421B (zh) | 动态编码方法、装置及电子设备 | |
US20100023479A1 (en) | Hexadecimal file fast decompression method | |
US11341098B1 (en) | Near lossless compression of atmospheric data | |
US11023722B2 (en) | Data classification bandwidth reduction | |
US20030097386A1 (en) | Method and apparatus for quantifying the number of identical consecutive digits within a string | |
US20100321217A1 (en) | Content encoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150618 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160616 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170616 Year of fee payment: 6 |