KR20070019960A - 데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기위한 시스템 - Google Patents

데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기위한 시스템 Download PDF

Info

Publication number
KR20070019960A
KR20070019960A KR1020067009837A KR20067009837A KR20070019960A KR 20070019960 A KR20070019960 A KR 20070019960A KR 1020067009837 A KR1020067009837 A KR 1020067009837A KR 20067009837 A KR20067009837 A KR 20067009837A KR 20070019960 A KR20070019960 A KR 20070019960A
Authority
KR
South Korea
Prior art keywords
appliance
format
markup language
request
data
Prior art date
Application number
KR1020067009837A
Other languages
English (en)
Other versions
KR101093271B1 (ko
Inventor
카렘푸디 브이 라마라오
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20070019960A publication Critical patent/KR20070019960A/ko
Application granted granted Critical
Publication of KR101093271B1 publication Critical patent/KR101093271B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

여러 실시예에서, 각종 기능을 구현하기 위하여 어플라이언스가 사용될 수도 있다. 일부 실시예에서, 어플라이언스는 DBMS 서버와 함께 사용될 수도 있다. 어플라이언스는 요구를 생성하고, DBMS 서버는 결과를 생성할 수도 있다. 어플라이언스는 요구에 대응하는 요구자에게 반환하기 위하여 상기 결과를 상이한 포맷으로 변환할 수도 있다. 또 다른 실시예에서, 어플라이언스는, 컨텐츠 관리 시스템, 파일시스템 등과 같은 다른 백 엔드 어플리케이션을 실행하도록 구성된 컴퓨터 시스템과 함께 사용될 수도 있다. 다른 실시예에서, 어플라이언스는, 복수의 서버의 제2 서버에 제1 입력 데이터로서 공급되는, 복수의 서버의 제1 서버로부터의 제1 출력 데이터를 수신할 수도 있다. 어플라이언스는 제1 출력 데이터를 제1 마크업 언어 포맷으로 변환하고 제1 마크업 언어 포맷을 제2 포맷으로 변환하도록 구성될 수도 있다.
데이터 센터, 포맷 변환, 어플라이언스, 스타일시트, 요구

Description

데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기 위한 시스템{SYSTEM FOR DATA FORMAT CONVERSION FOR USE IN DATA CENTERS}
본 발명은 확장성 마크업 언어(XML : extensible markup language), 표준 범용 마크업 언어(SGML : standardized generalized markup language), 하이퍼텍스트 마크업 언어(HTML : hypertext markup language) 등의 구조화된 문서와, 비구조화된 데이터 및 문서를 데이터 센터의 데이터베이스 및/또는 파일시스템에서 처리 및 변환하는 분야에 관한 것이다.
네트워킹이 유비쿼터스(ubiquitous)로 됨에 따라, 데이터 센터가 컴퓨팅 분야에서 중요한 서비스로서 출현하고 있다. 일반적으로, 데이터 센터는, 데이터 센터에서 유지될 수 있는 각종 데이터베이스에 대한 액세스(access)를 포함하는 어플리케이션(application) 서비스뿐만 아니라, 컨텐츠 관리 서비스, 파일시스템 서비스 등과 같은 다른 어플리케이션 서비스를 사용자에게 제공하는 각종 서버를 포함할 수도 있다.
불행하게도, 각종 어플리케이션은 사용자가 의도한 것과 상이한 포맷 및/또는 상이한 포맷들에 의해 데이터를 생성할 수도 있다. 또한, 상이한 사용자는 자신의 데이터에 대해 상이한 포맷을 의도할 수도 있다. 따라서, 어플리케이션 서버, 웹 서버, 및/또는 사용자의 컴퓨터 시스템에는 각종 포맷간의 변환기능이 종종 부여될 수도 있다. 변환 소프트웨어는 컴퓨팅 자원을 소비하므로, 그 자원에 대해 원래 설계된 작업시에 서버의 효율성을 감소시킨다. 또한, 데이터 센터의 서비스를 사용할 경우에 사용자가 겪게 되는 대기시간이 증가할 수도 있다.
일부 실시예에서는, 데이터베이스 관리 시스템(DBMS : database management system)을 실행하는 컴퓨터 시스템과 함께 사용하기 위한 어플라이언스(appliance) 및 방법이 고려되어 있다. 어플라이언스는 요구(request)를 생성하도록 구성되어 있다. 컴퓨터 시스템은 어플라이언스에 결합되어 요구를 수신하고, DBMS는 하나의 이상의 데이터베이스 중 적어도 하나에서 요구를 처리하도록 구성되어 있다. 컴퓨터 시스템은 요구의 결과를 어플라이언스에 제1 포맷으로 반환하도록 구성되어 있다. 어플라이언스는 요구에 대응하는 요구자(requestor)에게 반환하기 위하여 요구의 결과를 제2 포맷으로 변환하도록 구성되어 있다. 어플라이언스 및 컴퓨터 시스템을 포함하는 장치도 고려된다. 또 다른 실시예에서는, 컨텐츠 관리 시스템, 파일시스템 등과 같은 다른 백 엔드(backend) 어플리케이션을 실행하도록 구성된 컴퓨터 시스템과 함께 사용될 수도 있다.
다른 실시예에서는, 어플라이언스 및 방법이 복수의 서버와 함께 사용될 수도 있다. 어플라이언스는 복수의 서버에 결합되어, 복수의 서버의 제1 서버로부터 제1 출력 데이터를 수신할 수도 있다. 제1 출력은 제1 입력 데이터로서 복수의 서버의 제2 서버에 공급되며, 제1 출력 데이터는 제1 입력 데이터를 위한 제2 서버에 의해 사용되는 제2 포맷과 상이한 제1 포맷으로 되어 있다. 어플라이언스는 제1 출력 데이터를 제1 마크업(markup) 언어 포맷으로 변환하고, 제1 마크업 언어 포맷을 제2 포맷으로 변환하도록 구성되어 있다. 어플라이언스 및 복수의 서버를 포함하는 장치도 고려된다.
또 다른 실시예에서는, 어플라이언스가 데이터 센터의 다른 기능 또는 다른 컴퓨팅 설비를 구현할 수도 있다. 예를 들어, 어플라이언스는 렌더링 엔진(rendering engine), XML 라우터(router), 방화벽(firewall)(예를 들어, 바이러스 검출) 등을 구현할 수도 있다.
아래의 상세한 설명은 지금부터 간단하게 설명되는 첨부 도면을 참조한다.
도 1은 어플라이언스의 일 실시예의 블록도이다.
도 2는 도 1에 도시된 문서 처리기의 일 실시예의 블록도이다.
도 3은 하나 이상의 어플라이언스를 포함하는 데이터 센터의 일 실시예의 블록도이다.
도 4는 데이터베이스 프록시(proxy)로서 사용되는 어플라이언스의 일 실시예의 블록도이다.
도 5는 도 4에 도시된 어플라이언스의 일 실시예에 의해 사용되는 디폴트(default) 출력 포맷의 일 실시예를 예시하는 도면이다.
도 6은 도 4에 도시된 어플라이언스의 일 실시예에 의해 사용되는 디폴트 출력 포맷의 제2실시예를 예시하는 도면이다.
도 7은 데이터베이스 프록시로서 사용되는 어플라이언스의 제2실시예를 예시하는 블록도이다.
도 8은 렌더링 엔진으로서 사용되는 어플라이언스의 일 실시예를 예시하는 블록도이다.
도 9는 데이터 통합 스위치로서 사용되는 어플라이언스의 일 실시예를 예시하는 도면이다.
도 10은 확장성 마크업 언어(XML) 구성체를 통해 소스 데이터를 목표 데이터로 변환하는 것의 일 실시예를 예시하는 블록도이다.
도 11은 목표 데이터를 생성하기 위하여 소스 데이터에 대해 동작하는 어플라이언스의 일 실시예의 부분을 예시하는 블록도이다.
도 12는 XML 라우터로서 사용되는 어플라이언스의 일 실시예의 블록도이다.
도 13은 바이러스 검사기로서의 어플라이언스의 일 실시예의 동작을 예시하는 순서도이다.
본 발명은 다양한 변형 및 대안적인 형태로 될 수 있지만, 그 특정 실시예가 도면에서 일례로서 도시되어 있고, 여기서 상세하게 설명될 것이다. 그러나, 도면 및 그 상세한 설명은 발명을 개시한 특정 형태로 한정하기 위한 것이 아니라, 오히려, 본 발명은 후술하는 청구범위에 의해 정의된 바와 같은 본 발명의 취지 및 범위 내에 속하는 모든 변형, 등가물 및 대안들을 포괄하기 위한 것이라는 점을 이해해야 한다.
어플라이언스 개요
도 1을 참조하면, 어플라이언스(10)의 일 실시예의 블록도가 도시되어 있다. 도 1의 실시예에서, 어플라이언스(10)는 네트워크 인터페이스 회로(12), 처리기(14A와 선택적으로 14B)와 같은 하나 이상의 처리기, 문서 처리기(16) 및 메모리(18)를 포함할 수 있다. 네트워크 인터페이스 회로(12)는 하나 이상의 네트워크 접속을 통해 네트워크 또는 네트워크들에 결합되어 있다. 각종 컴퓨터 시스템(도 1에는 도시되지 않음)도 네트워크 또는 네트워크들에 결합될 수 있다. 또한, 네트워크 인터페이스 회로(12)는 처리기(14A-14B)에 결합되어 있다. 처리기는 메모리(18)에 결합되어 있고, 메모리(18)에 또한 결합되어 있는 문서 처리기(16)에도 결합되어 있다. 예시된 실시예에서, 메모리(18)는 스타일시트 컴파일러(stylesheet compiler)(20), 스키마(schema) 컴파일러(22), 하나 이상의 심볼(symbol) 테이블(24), 하나 이상의 파싱-시간(parse-time) 표현식 트리(26), 명령 테이블(30), 공백(whitespace) 테이블(32), 문서 타입 정의(DTD : document type definition) 테이블(34), 표현식 리스트 테이블(36), 템플릿(template) 리스트 테이블(38), 각종 문서 처리기 데이터 구조(39)를 기억하고, 선택적으로 다른 소프트웨어(28)를 기억한다.
일반적으로, 어플라이언스(10)는 데이터 센터에 포함될 수도 있는 다른 컴퓨터 시스템에 하나 이상의 서비스를 제공하도록 구성될 수도 있다. 아래에 주어지는 각종 예는, 모두 망라한 것은 아니지만, 데이터베이스 프록시, 렌더링 엔진, 데이터 통합 스위치, 마크업 언어 라우터 및 방화벽을 포함할 수도 있다. 어플라이언스 (10)는, 스타일시트에 의해 지정된 변환을 따르는 몇몇 경우에, 입력 문서를 출력 문서로 변환하도록 설계된 하드웨어/소프트웨어를 포함할 수도 있다. 어플라이언스(10)에 의해 취급되는 각종 서비스는, 몇몇 경우에, 의도하는 서비스를 달성하기 위하여 변환 기능을 사용할 수도 있다. 어플라이언스(10)는, 데이터 센터에서 서버로부터 서비스를 오프로드(offload) 하여, 그 서버가 제공하도록 설계되었던 서비스에 더 많은 자원을 공급하도록 하기 위해 사용될 수도 있다. 여기서 사용된 바와 같이, 용어 "어플라이언스"는 하드웨어와, 선택적으로, 네트워크상의 설치를 위한 유닛(unit)으로서 판매되고 있는 소프트웨어의 임의의 조합이라고 할 수도 있다. 어플라이언스는, 네트워크상에서 상대적으로 적게 설치되고, 설사 설치되더라도, (예를 들어, 서버 또는 개인용 컴퓨터 등과 같은 범용 컴퓨터 시스템에 비해) 구성부품 정도로 설치되도록 설계되는 것이 전형적인 것일 수도 있으며, 상대적으로 적게 동작하고, 설사 동작하더라도, 지원하는 정도로 동작하도록 설계되는 것이 전형적인 것일 수도 있다. 소프트웨어가 어플라이언스에 포함되면, (때때로, 네트워크를 통해, 소프트웨어 업그레이드가 어플라이언스에 다운로드 되거나 추가적인 소프트웨어가 어플라이언스에 설치될 수도 있지만) 소프트웨어는 어플라이언스에 미리 설치되는 것이 전형적이다. 일부 실시예에서는, 관리자가 네트워크를 통해 어플라이언스를 액세스할 수도 있다(예를 들어, 웹 브라우저 인터페이스가 제공될 수도 있다).
여기서 사용된 바와 같이, 용어 "문서"는 컨텐츠를 번역하기 위해 사용될 수 있는 대응하는 정의된 구조를 가지는 임의의 컨텐츠라고 한다. 컨텐츠는 (XML 문 서, HTML 문서, pdf 문서, 워드 프로세싱 문서, 데이터베이스 등과 같이) 매우 구조화되거나, 평범한 텍스트 문서(그 구조가 예컨대, 문자열의 스트림(stream)일 수 있음) 또는 데이터(그 구조가 예컨대, 특수한 순서로 배열된 데이터 항목의 세트(set)일 수 있음)와 같이 간단할 수도 있다. 아래에 설명되는 어플라이언스(10)의 각종 어플리케이션의 예는, 요구(예를 들어, 데이터베이스에 대한 액세스), 데이터, 또는 다른 타입의 문서를 포함하는 문서 컨텐츠를 제공할 수도 있다.
일부의 경우, 어플라이언스(10)는, 문서에 적용될 스타일시트, 문서에 적용될 스키마, 및/또는 (문서에 스타일시트/스키마를 적용하라는 요구를 갖는) 문서 자체를 네트워크 접속을 통해 수신할 수도 있다. 스타일시트를 적용하라는 요구에 응답하여, 어플라이언스(10)는 스타일시트를 문서에 적용하고, 변환된 문서를 생성하여 네트워크를 통해 요구자에게(또는 요구자에 의해 지정된 다른 목적지로) 송신되도록 할 수도 있다. 일부의 실시예에서, 어플라이언스(10)는 요구를 수신하여 문서를 (예를 들어, XML(SAX)을 위한 간단한 어플리케이션 프로그래밍 인터페이스(API : application programming interface) 또는 문서 오브젝트 모델(DOM : document object model)로) 파싱(parsing)할 수도 있다. 스키마(또는 DTD)를 적용하라는 요구에 응답하여, 어플라이언스(10)는 스키마 또는 DTD에 따라 문서를 확인하고, 성공 메시지 또는 실패 메시지(실패의 표시를 가짐)를 요구자에게 생성한다.
다른 경우에, 어플라이언스(10)는 요구를 수신할 수도 있고, 그 요구를 해석하기 위하여 다른 소프트웨어(28)를 포함할 수도 있다. 어플라이언스(10)는 그 요구에 의거하여 다른 네트워크 장치(예를 들어, 서버)에 대한 통신을 생성할 수도 있고, 요구의 취급시에 보조하기 위하여 변환 기능을 사용할 수도 있다.
일 실시예에서는, 변환 기능이 XML 문서와, 이에 대응하는 변환용 XML 스타일시트 언어(XSLT : XML stylesheet language for transformation)에 대해 최적화될 수도 있다. XML 및 XSLT 스타일시트와 관련된 추가적인 상세한 내용은 아래에 주어져 있다. XSLT는 표현식용 XPath(XML 경로) 언어를 기반으로 하고 있다. Xpath를 기반으로 하여 발전되고 있는 추가적인 언어인 XQuery도 다른 실시예에서 사용될 수 있다. 또한, 다른 실시예는 임의의 마크업 언어와 이에 대응하는 표현식 언어를 기반으로 할 수도 있다. 일반적으로, "마크업 언어"는 문서의 컨텐츠 구조를 정의하기 위해 사용될 수 있는 임의의 언어이다. 마크업은 컨텐츠를 식별하는 각종 태그(tag)를 일반적으로 포함할 수도 있으며, 컨텐츠의 본질에 대한 정보를 제공할 수도 있다. 예를 들어, XML은 요소 태그(element tag)가 정의되도록 하며, 이것은 컨텐츠의 구조를 기술하기 위해 사용될 수도 있다. 또한, 요소는 요소를 더욱 기술하거나 컨텐츠에 대한 추가적인 정보를 제공하는 각종 속성을 포함할 수도 있다.
XML 문서는 계층적 트리 구조를 가지며, 트리의 루트(root)는 문서를 전체적으로 식별하고, 문서에서의 서로의 노드는 루트에서 파생한 것이다. 각종 요소, 속성 및 문서 컨텐츠는 트리의 노드를 구성한다. 요소는 요소가 포함하는 컨텐츠의 구조를 정의한다. 각 요소는 요소 명칭을 가지며, 요소는 요소 명칭을 각각 포함하는 시작 태그 및 종료 태그를 이용하여 컨텐츠의 경계를 정한다. 요소는 서브-요소와 같은 다른 요소를 가질 수도 있으며, 이것은 컨텐츠의 구조를 더욱 정의한다. 또한, 요소는 속성(요소 명칭 다음의 시작 태그에 포함됨)을 포함할 수도 있으며, 이것은 요소에 대한 추가적인 정보 또는 요소 컨텐츠의 구조를 제공하는 명칭/값 쌍이다. XML 문서는 XML 문서, 코멘트(comment) 등을 판독하는 어플리케이션에 전달되는 처리 명령을 포함할 수도 있다. 일반적으로, 문서의 "노드"는 구조적인 정의식(예를 들어, XML로 된 요소 및/또는 속성) 및/또는 문서 컨텐츠를 포함할 수도 있다. 일 실시예에서, 노드는 요소, 속성, 처리 명령, 코멘트 및 텍스트를 포함할 수도 있다.
XSLT 스타일시트는 템플릿의 세트로서 간주될 수도 있다. 각 템플릿은 (i) 소스 문서의 트리 구조에서 노드를 선택하는 표현식과, (ii) 소스 문서의 노드를 각각 일치시키기 위하여 출력 문서 구조의 대응하는 부분을 지정하여 예시되도록 하는 본문을 포함할 수도 있다. 스타일시트를 소스 문서에 적용하는 것은, 소스 문서의 각 노드에 대해 일치하는 템플릿을 찾기 위해 시도하는 것과, 출력 문서의 트리에서 일치하는 템플릿의 본문을 예시하는 것을 포함할 수도 있다. 템플릿의 본문은 이하의 것 중에서 하나 이상을 포함할 수도 있다: (i) 출력 문서에서 예시되어야 할 문언적 컨텐츠와, (ii) 출력 문서로 복사되어야 할 일치하는 노드로부터의 컨텐츠의 선택과, (iii) 출력 문서에서 예시되는 문장의 결과에 의해 평가되어야 하는 문장(statement). 이와 함께, 예시되어야 할 컨텐츠와 평가되어야 할 문장은 템플릿을 일치시키는 노드에서 수행되어야 할 "작용(action)"이라고 할 수도 있다. 템플릿의 본문은, 하나 이상의 노드를 선택하고 스타일시트의 템플릿이 선택된 노드에 적용되도록 하여 템플릿을 효과적으로 내포(nest)할 수 있도록 하는 표현식을 포함하는 하나 이상의 "템플릿 적용" 문장을 포함할 수도 있다. 템플릿 적용 문장 과 일치하는 것이 발견되면, 템플릿 적용 문장을 포함하는 템플릿의 예시 범위 내에서 결과적인 템플릿이 예시된다. 템플릿의 본문의 다른 문장도 노드에 대해 일치되도록 하는 표현식을 포함할 수도 있다(그리고, 문장은 일치하는 노드에 대해 평가될 수도 있다). 여기서는, XSLT 스타일시트가 하나의 예에서 사용될 수도 있지만, 일반적으로, "스타일시트"는 소스 문서를 출력 문서로 변환하기 위한 임의의 설명서를 포함할 수도 있다. 소스 및 출력 문서는 동일한 언어이거나(예를 들어, 소스 및 출력 문서는 상이한 XML 어휘일 수도 있다), 상이할 수도 있다(예를 들어, XML 내지 pdf 등). 스타일시트의 다른 예는 HTML 및/또는 XML Query에 대해 정의된 직렬 스타일시트(cascading stylesheet)일 수도 있다.
스타일시트에서 사용된 표현식은, 노드 식별자 및/또는 값 사이에 부/자(parent/child)(또는 조상/후손(ancestor/descendant)) 관계를 지정하기 위하여, 노드 식별자에 대한 연산자와 함께, 노드 식별자 및/또는 노드의 값을 일반적으로 포함할 수도 있다. 또한, 표현식은, 노드를 일치시키기 위한 추가적인 조건일 수도 있는 술어(predicate)를 포함할 수도 있다. 술어는 문맥 노드(context node)(아래에서 정의됨)인 연관된 노드에 의해 평가되는 표현식이며, 표현식의 결과는 참(true)(노드가 표현식 노드와 일치할 수도 있음) 또는 거짓(false)(노드가 표현식과 일치하지 않음) 중의 어느 하나이다. 따라서, 표현식은 문서의 트리에 대해 일치되어야 하는 노드의 트리로서 간주될 수도 있다. XSLT에서 사용되는 표현식 언어인 XPath에서는, 표현식이 "문맥 노드"도 고려하여 평가될 수도 있다(즉, 표현식은 문맥 노드와 관련되어 있을 수도 있으며, 다른 노드 명칭에 대한 관계뿐만 아니라, 표현식의 노드 명칭을 문맥 노드의 조상(ancestor), 후손(descendent), 부모(parent), 또는 자식(child)으로서 지정한다). 주어진 문서 노드가 표현식의 평가를 통해 선택되면, 주어진 문서 노드는 표현식을 충족할 수도 있다. 즉, 표현식의 표현식 노드 식별자는, 표현식에서 지정된 바와 같은 주어진 문서 노드에 대해 동일한 관계를 가지는 주어진 문서 노드의 식별자 또는 문서 노드 식별자와 일치하며, 표현식에서 사용된 임의의 값은 주어진 문서 노드와 관련된 대응하는 값과 동일하다. 문서 노드가 주어진 표현식을 충족시키면, 그 노드는 주어진 표현식에 대해 "일치하는 노드(matching node)"라고 할 수도 있다. 이 논의의 나머지의 일부의 경우, 표현식 트리의 노드를 문서의 노드와 명확하게 구별하는 것이 도움이 될 수도 있다. 따라서, 노드가 표현식 트리의 일부이면, 그 노드는 "표현식 노드"라고 할 수도 있으며, 노드가 처리되는 문서의 일부이면, 그 노드는 "문서 노드"라고 할 수도 있다. 노드 식별자는 명칭(예를 들어, 요소 명칭, 속성 명칭 등)을 포함하거나, 타입(type)에 의해 노드를 식별하는(예를 들어, 노드 테스트 표현식이 임의의 노드와 일치하거나, 텍스트 테스트 표현식이 텍스트 노드와 일치할 수도 있음) 표현식 구성체(expression construct)를 포함할 수도 있다. 일부의 경우, 명칭은 특수한 명칭 공간에 속할 수도 있다. 이러한 경우, 노드 식별자는 명칭 공간과 연관된 명칭일 수도 있다. XML에서, 명칭 공간은, 요소 및 속성의 명칭을 유니버설 자원 식별자(URI : universal resource identifier)에 의해 식별된 명칭 공간의 명칭과 연관시킴으로써, 요소 및 속성의 명칭에 자격을 부여하는 방법을 제공한다. 따라서, 노드 식별자는 자격 부여된 명칭(명칭을 선행하는 콜론(colon)을 선행하는 선택적인 명칭 공간의 접두어)일 수도 있다. 여기서 사용되는 명칭(예를 들어, 요소 명칭, 속성 명칭 등)은 자격 부여된 명칭을 포함할 수도 있다.
예시된 실시예에서, 스타일시트를 문서에 적용하는 것은 아래의 방식으로 수행될 수도 있다: 스타일시트 컴파일러(20)는, 스타일시트를 하나 이상의 데이터 구조와, 문서 처리기(16)에 의해 사용하기 위한 코드로 컴파일하기 위하여, 처리기(14A-14B) 중 하나에서 실행되는 소프트웨어(즉, 복수의 명령)를 포함할 수도 있다. 문서 처리기(16)는 데이터 구조를 소스 문서에 적용하고, 출력 문서를 생성할 수도 있다.
구체적으로, 일 실시예에서, 스타일시트 컴파일러(20)는 노드 식별자에 일련번호를 할당하여, 노드 식별자가 아니라 번호를 비교함으로써(문자열 비교를 포함할 수 있음), 문서 처리기에 의해 표현식 평가가 수행되도록 할 수도 있다. 스타일시트 컴파일러(20)는 노드 식별자의 일련번호로의 맵핑(mapping)을 심볼 테이블(24)에 기억할 수도 있다. 또한, 스타일시트 컴파일러(20)는 스타일시트로부터 표현식을 추출하고, 표현식 일치도 검사(expression matching)를 위해 문서 처리기에 의해 사용될 표현식 트리 데이터 구조(예를 들어, 파싱-시간 표현식 트리(26))를 생성할 수도 있다. 또한, 스타일시트 컴파일러(20)는 각각의 일치하는 표현식에 대해 실행될 명령(또한, 일 실시예에서는, 실행시간 술어를 평가하기 위해 실행될 명령)을 갖는 명령 테이블(30)을 생성할 수도 있다. 문서 처리기(16)에 의해 명령 테이블의 명령이 실행될 경우, 표현식이 일치하면, 그 명령은 실행되도록 정의된 작용을 수행하는 결과가 될 수도 있다. 일부 실시예에서, 명령은 수행될 작용을 포함 할 수도 있다(즉, 명령과 작용간에는 일대일 대응관계가 있을 수도 있음). 다른 실시예에서는, 적어도 일부 작용이 둘 이상의 명령을 실행함으로써 실현될 수도 있다. 또한, 스타일시트 컴파일러(20)는, 소스 문서의 각종 타입의 공백이 어떻게 처리되어야 하는지(예를 들어, 보관, 스트립(strip) 등)를 정의하는 공백 테이블(32), 표현식 리스트 테이블(36) 및 템플릿 리스트 테이블(38)을 생성할 수도 있다.
스키마 컴파일러(22)는 처리기(14A-14B)의 하나에서 실행되는 명령을 위와 유사하게 포함할 수도 있다. 스키마 컴파일러(22)는 스키마 또는 DTD를 컴파일하여 DTD 테이블(34)뿐만 아니라, 하나 이상의 심볼 테이블(24)(노드 식별자를 일련번호로 대체함)을 생성할 수도 있다. 일반적으로, DTD 또는 스키마는 허용가능한 문서 구조 및 요구되는 문서 구조 양자의 정의를 포함할 수도 있다. 이와 같이, 문서의 저자는 DTD 및/또는 스키마에 의해 유효한 문서의 필요한 그리고 허용되는 구조를 기술할 수도 있다. 일부의 경우, DTD 또는 스키마는 속성에 대한 디폴트 값을 포함할 수도 있다. 일 실시예에서는, DTD/스키마가 이하와 같은 다양한 정보를 포함할 수도 있다: 문서에서 엔티티 기준(entity reference)을 대체하기 위해 사용되는 엔티티 선언부(entity declaration), 유효한 문서에 대해 요구되는 속성인 주어진 요소의 속성, 문서의 주어진 요소에서 지정되지 않을 수도 있는 속성에 대한 속성 디폴트 값, 문서의 구조에 대한 요건(예를 들어, 요구되는 최소/최대/특수한 수의 임의의 서브-요소 등), 그리고 문서의 허용가능한 구조의 정의. DTD 테이블(34)은 엔티티 기준 대체 테이블, 요구되는 속성의 테이블, 속성 디폴트 테이블, 허용가능한 구조(그리고 적용가능하다면, 요구되는 구조)를 식별하는 골격 트리(skeleton tree)를 포함할 수도 있다.
문서 처리기(16)는 문서를 파싱하여 파싱-시간 표현식 트리에서 문서 노드를 표현식 노드로 일치시키기 위한 하드웨어 회로를 포함할 수도 있다. 즉, 문서를 파싱하여 문서 노드를 표현식 노드로 일치시키는 하드웨어 회로는 어떠한 소프트웨어 명령을 실행하지 않고도 이 동작을 수행할 수도 있다. 하드웨어는, 각 표현식에 대해 파싱된 컨텐츠 및 표시를 기억하는, 일치하는 문서 노드의 각종 데이터 구조를 생성할 수도 있다. 그 다음, 하드웨어는 그 주어진 표현식의 각각의 일치하는 문서 노드에 관한 주어진 표현식에 대해 명령 테이블(30)로부터의 명령을 실행하여, 합성되어 출력 문서를 산출하는 결과를 생성할 수도 있다. 일 실시예의 추가적인 상세한 설명은 아래에서 제공된다.
상술한 바와 같이, 예시된 실시예에서, 스타일시트 컴파일러(20) 및 스키마 컴파일러(22)는 소프트웨어로 구현되고 문서 처리기(16)는 하드웨어로 구현된다. 일부 실시예에서, 어플라이언스(10)의 성능에 있어서의 결정적인 인자는 변환 요구가 이루어져서 문서가 제공될 경우의 문서의 처리일 수도 있다. 즉, 스타일시트 및/또는 스키마는 다수의 경우, 처리되는 문서의 수에 비해 비교적 드물게 변화한다. 주어진 스타일시트는 변화되는 스타일시트(업데이트된 스타일시트 또는 상이한 스타일시트와 함께) 이전의 다수의 문서(예를 들어, 적어도 수십 개 정도의 문서)에 적용될 수도 있다. 스타일시트가 적용되는 스키마 및 문서에 대해서도 유사한 관계가 유효할 수 있다. 따라서, 비교적 불변하는 정보를 (소프트웨어를 이용하여) 스 타일시트/스키마로부터, 전용, 커스텀(custom) 하드웨어에 의해 효과적으로 액세스될 수 있는 데이터 구조로 입력하는 것은 높은 성능의 솔루션(solution)을 제공할 수도 있다. 또한, 일부 실시예에서, 하드웨어에 의해 스타일시트/스키마 컴파일을 하는 것은, 상이한 스타일시트/스키마 언어를 구현하고, 및/또는 커스텀 하드웨어를 변경하지 않고도 언어 스펙의 변화를 구현함에 있어서 유연성을 제공할 수도 있다. 예를 들어, XSLT, XPath 및 XML 스키마는 여전히 진화하고 있으며, 장래에는 새로운 특징이 이들 언어에 추가될 수도 있다. 컴파일러는 이러한 새로운 특징을 취급하도록 적응될 수도 있다. 사용되는 스타일시트/스키마는 미리 제공되며, 이에 따라, 스타일시트/스키마를 컴파일하기 위한 시간은 덜 중요하다. 그러나, 다른 실시예에서는, 스타일시트 컴파일러(20) 및 스키마 컴파일러(22) 중 하나 또는 둘다 하드웨어 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수도 있다.
네트워크 인터페이스 회로(12)는 네트워크 접속에 관한 로우-레벨의 전기 및 프로토콜의 세부 사항을 취급하고, 수신된 패킷을 처리를 위하여 처리기(14A-14B)에 전달할 수도 있다. 어떤 타입의 네트워크도 사용될 수 있다. 예를 들어, 일부 실시예에서는, 네트워크 접속이 기가비트 이더넷(Gigabit Ethernet) 접속일 수도 있다. 필요하다면, 소정 레벨의 대역폭을 얻고, 및/또는 네트워크 접속에 용장성(redundancy)을 제공하기 위하여, 하나 이상의 접속이 제공될 수도 있다.
처리기(14A-14B)는 임의의 타입의 처리기를 포함할 수도 있다. 예를 들어, 일 실시예에서는, 처리기(14A-14B)가 PowerPC 네트워크 처리기일 수도 있다. 다른 실시예에서는, 처리기(14A-14B)가 ARM, 인텔 IA-32, MIPS 등과 같은 다른 명령 세 트 아키텍쳐(architecture)를 구현할 수도 있다.
처리기(14A-14B), 문서 처리기(16) 및 메모리(18)를 결합하기 위하여, 임의의 상호접속이 사용될 수도 있다. 또한, 처리기(14A-14B)는 처리기(14A-14B)의 접속으로부터 분리된 문서 처리기(16)에 결합되고, 문서 처리기(16)는 메모리(18)에 결합될 수도 있다. 예를 들어, 일 실시예에서, 처리기(14A-14B)는 하나 이상의 주변 부품 상호접속 익스프레스(PCI-X : peripheral component interconnect express) 버스를 이용하여 문서 처리기(16)에 결합될 수도 있다.
일부의 경우, DTD, 스키마, 또는 스타일시트가 문서에 (직접 또는 스키마 또는 스타일시트에 대한 포인터(pointer)로서) 내장될 수도 있음에 유의해야 한다. 이러한 경우, DTD, 스키마, 또는 스타일시트는 문서로부터 추출되어, 별도로 제공되는 스키마 또는 스타일시트에 대해, 설명된 바와 같이 처리될 수도 있다.
메모리(18)는 임의의 휘발성 또는 비휘발성 메모리를 포함할 수도 있다. 예를 들어, 메모리(18)는 하나 이상의 RAM(예를 들어, SDRAM, RDRAM, SRAM 등), 플래시(Flash) 메모리 또는 배터리-지원 RAM 등과 같은 비휘발성 메모리, 디스크 또는 CD-ROM 등과 같은 자기 또는 광 기억매체를 포함할 수도 있다. 메모리(18)는 별도로 액세스 가능한 다수의 메모리(예를 들어, 처리기(14A-14B)에 대해서만 액세스 가능한 파티션 또는 파티션들과, 문서 처리기(16)에 대해서만 액세스 가능한 또 다른 파티션 또는 파티션들)를 포함할 수도 있다.
도 1은 스타일시트 컴파일러(20), 스키마 컴파일러(22), 및 메모리(18)에 기억된 다른 소프트웨어(28)를 예시한 것이다. 일반적으로, 스타일시트 컴파일러 (20), 스키마 컴파일러(22) 및/또는 다른 소프트웨어(28)는 컴퓨터 액세스 가능한 매체 상에서 부호화될 수도 있다. 일반적으로, 컴퓨터 액세스 가능한 매체는, 명령 및/또는 데이터를 컴퓨터에 제공하도록 사용하는 도중에, 컴퓨터에 의해 액세스 가능한 임의의 매체를 포함할 수도 있다. 예를 들어, 컴퓨터 액세스 가능한 매체는, 전송 매체를 통해 액세스 가능한 매체, 또는, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 운반되는 전기, 전자기, 혹은 디지털 신호와 같은 신호를 통해 액세스 가능한 매체뿐만 아니라, 예를 들어, 디스크(고정 또는 착탈식), CD-ROM, 또는 DVD-ROM과 같은 자기 또는 광 매체, RAM(예를 들어, SDRAM, RDRAM, SRAM 등), ROM, 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리 매체 등과 같은 기억매체를 포함할 수도 있다.
일부 실시예에서, 컴퓨터 액세스 가능한 매체는, 별도의 컴퓨터 시스템, 또는, 스타일시트 컴파일러(20) 및/또는 스키마 컴파일러(22)를 실행하여 컴파일을 실행할 수 있는 시스템에 포함될 수도 있다. 컴파일의 결과로 얻어지는 데이터 구조/코드는 (예를 들어, 어플라이언스(10)에 대한 네트워크 접속을 통해) 어플라이언스(10)에 전달될 수도 있다.
여기에서의 설명은 하나의 스타일시트가 문서에 적용되는 예를 포함하고 있지만, 다른 예는 (의도하는 바에 따라, 동시에 또는 연속적으로) 다수의 스타일시트를 문서에 적용하는 것과, (의도하는 바에 따라, 문맥 스위칭을 하면서 동시에 또는 연속적으로) 하나의 스타일시트를 다수의 문서에 적용하는 것을 포함할 수도 있음에 유의해야 한다.
다음으로, 도 2를 참조하면, 문서 처리기(16)의 일 실시예의 블록도가 도시되어 있다. 도 2의 실시예에서, 문서 처리기(16)는 파서(parser) 회로(40), 표현식 처리기(42), 변환 엔진(44), 출력 생성기(46) 및 검사기(validator) 회로(48)를 포함한다. 파서 회로(40)는 표현식 처리기(42)와 출력 생성기(46)에 결합되어 있다. 표현식 처리기(42)는, 출력 생성기(46)에 결합되어 있는 변환 엔진(44)에 결합되어 있다. 검사기(48)는 출력 생성기(46)에 결합되어 있다. 도 2의 유닛(unit)은 (예를 들어, 유닛간의 신호선을 이용하여) 서로 직접 결합되거나, 메모리(18)를 통해 결합되거나(예를 들어, 소스 유닛은 목적지 유닛에 전달할 정보를 메모리(18)에 기록하고, 목적지 유닛은 메모리(18)로부터 그 정보를 판독할 수도 있음), 두 가지 모두 일수도 있다.
파서 회로(40)는 문서를 수신하고 그 문서를 파싱하여, 표현식 처리기(42) 및 검사기 회로(48)에 대한 이벤트(event)를 식별하고, 파싱된 컨텐츠를 갖는 데이터 구조를 생성한다. 문서 처리기(16)가 스타일시트에 따라 문서를 변환해야 한다면, 파싱된 컨텐츠는 변환 엔진(44)을 위해 메모리(18)에 데이터 구조의 형태로 기억될 수도 있다. 이와 달리, 그 문서를 파싱만 할 경우에는, 파서 회로(40)는 SAX 또는 DOM 포맷으로 출력되는 파싱된 컨텐츠를 출력 생성기(46)에 제공할 수도 있다. 파서 회로(40)는 메모리(18)를 통해 파싱된 컨텐츠를 출력 생성기(46)에 제공할 수도 있다.
일 실시예에서, 파서 회로(40)는 메모리(18)로부터 심볼 테이블(24), DTD 테이블(34) 및 공백 테이블(32)을 액세스할 수도 있다. 파서 회로(40)는 문서를 파싱 하고, 검출된 문서 노드와 관련된 이벤트를 생성한다. 더욱 구체적으로, 파서 회로(40)는 문서의 노드 식별자를 심볼 테이블(24)의 대응하는 일련번호로 변환하고, 이벤트의 일부인 일련번호를 표현식 처리기(42)(그리고 검사기 회로(48))에 송신한다. 또한, 파서 회로(40)는 변환 엔진(44)에 대한 문서의 파싱된 컨텐츠를 기억하는 파싱된 컨텐츠 테이블을 생성한다.
표현식 처리기(42)는 (문서로부터 파싱된 문서 노드를 식별하는) 파서 회로(40)로부터 이벤트를 수신하고, 파싱-시간 표현식 트리(26)에 대해, 파서 회로(40)에 의해 식별된 문서 노드를 비교한다. 표현식 처리기(42)는 각 표현식에 대해 일치하는 문서 노드의 리스트를 변환 엔진(44)에 출력한다. 변환 엔진(44)은 파서 회로(40)에 의해 구축된 파싱된 컨텐츠의 데이터 구조와, 일치하는 문서 노드의 리스트를 수신하고, 명령 테이블(30)로부터 대응하는 명령을 실행하여 출력 문서를 위한 결과를 생성한다. 변환 엔진(44)은 임의의 실행-시간 표현식을 평가하고, 실행-시간 표현식을 충족시키지 못하는 템플릿 및 표현식 일치 리스트로부터 문서 노드를 제거할 수도 있다. 일부 실시예에서, 각각의 명령은 다른 것과 독립적일 수도 있으며, 따라서, 실행은 임의의 순서로 이루어질 수도 있다. 출력 생성기(46)는 순서대로 그 결과를 다시 수집할 수도 있으며, 출력 문서를 메모리(18)에 기록할 수도 있다(또는 메모리(18)를 통과하지 않고 처리기(14A-14B)에 출력 문서를 송신할 수도 있음). 처리기(14A-14B)는 소프트웨어를 실행하여 출력 문서를 판독하고 그 출력 문서를 요구자에게 송신할 수도 있다.
특수한 일 실시예에서는, 파서 회로(40)가 문서를 즉시 수신할 수도 있고, 파서 회로(40)가 이벤트를 표현식 처리기(42)에 즉시 송신할 수도 있다. 즉, 문서의 일부가 (예를 들어, 처리기(14A)에 의해) 수신 및 다시 수집될 때, 처리기(14A)는 이 문서 일부를 파서 회로(40)에 전달한다. 따라서, 파서 회로(40)는 처리기(14A)가 문서의 전부를 수신하기 이전에 파싱을 시작할 수도 있다. 이와 유사하게, 이벤트는 식별될 경우에 표현식 처리기(42)에 전달된다. 다른 한편으로, 파싱된 컨텐츠 테이블 및 템플릿/표현식 일치 리스트는 메모리(18)를 통해 전달된다(변환 엔진(44)으로의 통신을 통해 점선으로 된 타원형으로 표시됨).
검사기 회로(48)는 파서 회로(40)에 의해 송신된 이벤트를 수신하고, (골격 트리 및 DTD 테이블(34)에 의해 표현된 바와 같은) 스키마/DTD를 적용하며, 문서가 스키마에서 표시된 바와 같이 유효한지를 결정할 수도 있다. 문서가 유효하면, 검사기 회로(48)는 실패 메시지(실패의 이유를 표시함)를 생성하고, 실패 메시지를 출력 생성기(46)에 송신할 수도 있다. 출력 생성기(46)는 메시지를 메모리(18)에 기억할 수도 있다(그리고, 처리기(14A-14B)는 그 메시지를 요구자에게 순차적으로 송신할 수도 있음).
데이터 센터 개요
도 3을 참조하면, 어플라이언스(10)가 다양한 용도로 사용될 수도 있는 데이터 센터의 일 실시예를 예시하는 블록도가 도시되어 있다. 데이터 센터는 인터넷(Internet) 또는 다른 희망하는 네트워크(예를 들어, 구내 통신망(LAN : local area network), 대도시 통신망(MAN : metropolitan area network), 광대역 통신망(WAN : wide area network), 무선 네트워크 등이나 이러한 네트워크의 조합)에 결 합될 수도 있다. 데이터 센터는, 방화벽(50)(일부 실시예에서는, 하나의 이상의 어플라이언스(10)의 실제 예를 포함할 수도 있음), 하나 이상의 라우터(52)(일부 실시예에서는, 하나 이상의 어플라이언스(10)의 실제 예를 포함할 수도 있음), 웹 서버(54A-54B)와 같은 웹 서버, 하나 이상의 데이터 통합 스위치(56)(일부 실시예에서는, 하나 이상의 어플라이언스(10)의 실제 예를 포함할 수도 있음), 어플리케이션 서버(58A-58B)와 같은 어플리케이션 서버, 데이터베이스 프록시(60)(일부 실시예에서는, 하나 이상의 어플라이언스(10)의 실제 예를 포함할 수도 있음), 관계 데이터베이스 관리 시스템(RDBMS : relational database management system)을 실행시키는 서버(62)를 포함할 수도 있다.
도 3에 도시된 결합은 논리적일 수도 있다. 즉, 다양한 논리적 통신 경로가 도 3에 예시되어 있다. 따라서, 방화벽(50)은, 웹 서버(54A-54B)(잠재적으로는, 어플리케이션 서버(58A-58B))에 논리적으로 결합될 수도 있는 라우터(52)에 논리적으로 결합될 수도 있다. 데이터 통합 스위치(56)는 웹 서버(54A-54B)와 어플리케이션 서버(58A-58B)에 논리적으로 결합될 수도 있다. 어플리케이션 서버(54A)는, RDBMS 서버(62)에 논리적으로 결합되어 있는 데이터베이스 프록시(60)에 논리적으로 결합될 수도 있다. 물리적으로, 도 3에 도시된 각종 장치는 네트워크(예를 들어, LAN, WAN, MAN, 무선 등, 또는 이들의 조합), 지리적으로 근접하거나 지리적으로 분포된 다수의 분리된 네트워크 등에 결합될 수도 있다. 예시적인 네트워크는 이더넷(Ethernet) 네트워크, 토큰 링(Token Ring) 등을 포함할 수도 있다.
방화벽(50)은 인터넷 또는 다른 네트워크로부터의 인증되지 않은 액세스/공 격으로부터 데이터 센터를 보호할 수도 있다. 일부 실시예에서, 어플라이언스(10)는, 데이터 센터에 공급되고 있는 문서의 바이러스를 검출하기 위하여, 방화벽(50) 내부에 구현될 수도 있다. 예시적인 실시예는 도 13과 관련지어서 아래에 설명되어 있다.
라우터(52)는 방화벽을 통과하는 패킷을 수신하고, 데이터 센터 내에서 패킷을 적절한 수신기(예를 들어, 웹 서버, 어플리케이션 서버 등)에 라우팅(routing) 할 수도 있다. 일부 실시예에서, 어플라이언스(10)는 XML 패킷을 라우팅하는 XML 라우터로서 사용될 수도 있다. 예시적인 실시예는 도 12와 관련지어 아래에서 설명되어 있다.
일반적으로, 웹 서버(54A-54B)와 같은 웹 서버는, 외부 네트워크(예를 들어, 인터넷 또는 다른 네트워크)로부터의 웹 컨텐츠에 대한 요구에 응답하여, 웹 컨텐츠(예를 들어, 웹 페이지)를 공급하는 역할을 할 수도 있다. 일부의 경우, 웹 컨텐츠의 일부가 (RDBMS와 같은) 어플리케이션으로부터 유입되면, 웹 서버는 어플리케이션 서버와 통신할 수도 있다.
어플리케이션 서버(58A-58B)와 같은 어플리케이션 서버는 어플리케이션 서비스를 제공하도록 구성되어 있다. 일반적으로, 어플리케이션 서버는 데이터 센터의 백 엔드 어플리케이션(예를 들어, RDBMS, 컨텐츠 관리 시스템, 파일시스템 등)과 (예를 들어, 인터넷 또는 다른 네트워크로부터) 요구를 행하는 사용자 사이의 인터페이스를 제공한다.
상술한 바와 같이, 일부의 경우, 웹 서버(54A-54B)는 어플리케이션 서버 (58A-58B)와 통신하며, 그 반대로도 통신한다. 그러나, 일부의 경우, 하나의 서버에 의해 출력되어 다른 서버로 향하는 데이터의 포맷은 다른 서버에 의해 예상된 포맷과 일치하지 않을 수도 있다. 데이터 통합 스위치(56)는 소스 서버에 의해 출력된 데이터 포맷을 목적지 서버에 의해 요구되는 포맷으로 변환하기 위해 사용될 수도 있다. 일부 실시예에서는, 어플라이언스(10)가 데이터 통합 스위치(56)로서 사용될 수도 있다. 예시적인 실시예는 도 9 내지 도 11과 관련지어 아래에서 논의되어 있다.
일반적으로, 여기서 사용된 바와 같이, "서버"는 서버에 할당된 서비스를 제공하도록 설계된 소프트웨어를 포함할 수도 있는 컴퓨터 시스템을 포함할 수도 있다.
예시된 실시예의 어플리케이션 서버(58A)는 RDBMS 서버(62)에 대한 어플리케이션 인터페이스를 제공하도록 구성되어 있다. 그러나, 일부의 경우, 어플리케이션 서버(58A)는, RDBMS 서버(62)가 통신하도록 구성되어 있는 방식과 상이한 방식으로, RDBMS 서버(62)와 통신하도록 구성될 수도 있다. 예를 들어, 어플리케이션 서버(58A)는 데이터베이스를 XML로 간주할 수 있는 반면, 데이터베이스는 관계 데이터 포맷을 가질 수도 있다. 또 다른 실시예에서, 데이터베이스는 XML 오브젝트(object)를 기억할 수도 있고, 이 오브젝트의 컨텐츠는 어플리케이션에 대한 관심있는 데이터이지만, 어플리케이션 서버(58A)는 그 데이터에 대한 관계 데이터 포맷의 출력(예를 들어, 각각 다수의 정보 컬럼 또는 필드를 갖는 레코드(record))이나 다른 포맷을 예상할 수도 있다.
데이터베이스 프록시(60)는 "프론트 엔드(frontend)"로서 RDBMS 서버(62)에 포함될 수도 있다. 데이터베이스 프록시(60)는 어플리케이션 서버(58A)가 기대하는 방식으로 어플리케이션 서버(58A)와 통신할 수 있으며, RDBMS 서버(62)가 기대하는 방식으로 RDBMS 서버(62)와 통신할 수도 있다. 이와 같이, 데이터베이스 프록시(60)는 하나의 형태에서 다른 형태로 통신을 변환할 수도 있다. 일부 실시예에서는, 어플라이언스(10)가 데이터베이스 프록시(60)로서 사용될 수도 있다. 예시적인 실시예는 도 4-7과 관련지어 아래에서 설명되어 있다.
RDBMS 서버(62)는 RDBMS를 실행한다. 예시된 실시예는 관계 데이터베이스(레코드가 각종 관련 테이블에 기억되어 있고, 상이한 필드를 기초로 특정 레코드를 데이터베이스에서 검색함에 있어 유연성을 허용함)를 구현할 수도 있지만, 희망한다면, 다른 실시예는 비관계(non-relational) 데이터베이스(예를 들어, 플랫-파일(flat-file) 데이터베이스)를 구현할 수도 있다. 예시적인 RDBMS는 Oracle, DB2 등과 같은 구조화된 질의 언어(SQL : structured query language) 데이터베이스를 포함할 수도 있다. 일반적으로, 여기서 사용된 바와 같이, 데이터베이스 관리 시스템(DBMS : database management system)은, 데이터베이스로의 데이터의 진입을 허용하고, 데이터베이스의 검색을 허용하며, 데이터베이스에서 데이터를 수집하는 것 등을 행하는 소프트웨어를 포함할 수도 있다. RDBMS는 관계 데이터베이스용 DBMS 소프트웨어이다.
다른 실시예에서, 서버는 컨텐츠 관리 시스템(다수의 사용자에 의한 컨텐츠에 대한 액세스 및 업데이트(update)를 관리할 수도 있으며, 컨텐츠는 소프트웨어 소스 코드, 문서, 그 외의 데이터 파일을 포함할 수도 있음), 파일시스템 등을 실행할 수도 있고, 프록시(60)는 데이터베이스 프록시와 유사한 프론트 엔드로서 사용될 수도 있다.
어플라이언스(10)는 도 3의 여러 위치에 예시되어 있지만, 희망한다면, 다양한 실시예는 예시된 위치의 하나 이상의 임의의 위치에서 어플라이언스(10)를 구현할 수도 있음에 유의해야 한다. 또한, 도 3의 어플라이언스(10)의 어플리케이션은 데이터 센터와 관련하여 도시되어 있지만, 각 어플리케이션은 다른 환경에서 데이터 센터의 외부에 사용될 수도 있다.
어플라이언스 어플리케이션
다음으로, 도 4 내지 도 13을 참조하면, 어플라이언스(10)의 각종 어플리케이션이 더욱 상세하게 예시되어 있다.
도 4는 RDBMS 서버(62)를 위한 데이터베이스 프록시(60)로서 사용되고 있는 어플라이언스(10)의 일 실시예를 예시한 것이다. 데이터베이스 프록시(60)는 어플라이언스(10)를 포함하며, 선택적으로 스타일시트(70 및 72)를 포함한다. 어플라이언스(10)는 요구자로부터(예를 들어, 어플리케이션 서버(58A)로부터) 요구(74)를 수신하도록 결합될 수도 있고, RDBMS 서버(62)로의 대응하는 요구(76)를 생성하도록 구성될 수도 있다. RDBMS 서버(62)는 요구의 결과(78)를 응답할 수도 있고, 어플라이언스(10)는 이를 수신하여 어플리케이션 서버(58A)가 희망하는 포맷으로 된 결과(80)로 변환할 수도 있다. 선택적으로, 입력 스타일시트(70) 및/또는 출력 스타일시트(72)가 어플라이언스(10)에 의해 사용될 수도 있다.
어플라이언스(10)에 의해 수신된 요구는 임의의 포맷일 수도 있다. 예를 들어, 어플리케이션 서버(58A)가 데이터베이스를 XML 데이터베이스로서 간주하면, 요구는 XPath 표현식 또는 표현식들일 수도 있다. 어플라이언스(10)는 XPath 표현식을 SQL 요구로 변환하고, SQL 요구를 RDBMS 서버(62)에 송신할 수도 있다. 입력 스타일시트(70)는 이 변환에 사용될 수도 있다. 이와 달리, 소프트웨어(28)는 XPath 표현식을 수신할 수 있고, 각 표현식에 대해 대응하는 SQL 문장을 생성할 수도 있다. 또 다른 실시예에서, 어플리케이션 서버로부터의 요구는 데이터베이스에 적용될 몇 개의 XPath 표현식을 갖는 스타일시트의 형태일 수도 있다. 일부 실시예에서, 입력 스타일시트(70)는 요구(74)의 일부로서 포함될 수도 있다.
다른 대안으로서, 상기 요구는 데이터베이스를 액세스하기 위한 하나 이상의 SQL 문장일 수도 있다. 이 경우, 어플라이언스(10)는 SQL 문장을 RDBMS 서버(62)에 송신할 수도 있다. 이러한 일부 실시예에서, DBMS 서버(62)로부터의 결과(78)는 어플라이언스(10)에 의해, 결과(80)의 또 다른 희망하는 포맷으로 변환될 수도 있다. 또 다른 실시예에서는, 요구가 또 다른 포맷으로 제공될 수도 있고, 입력 스타일시트(70)는 입력 포맷을 하나 이상의 SQL 문장으로 변환하기 위해 사용될 수도 있다.
어플라이언스(10)는 SQL 문장을 RDBMS(62)로 송신할 수도 있다. 예를 들어, 문장이 요구자로부터 직접 수신되는지, 또는 요구자로부터 수신된 입력 요구로부터 어플라이언스(10)에 의해 생성되는지에 따라, 소프트웨어(28)는 그 문장을 송신하도록 구성될 수도 있다. RDBMS 서버(62)는 요구(76)를 처리하여, 결과(78)를 관계 포맷으로 제공한다. 예를 들어, 결과(78)의 포맷은 테이블 형식, 즉, SQL 문장으로 부터 얻어지는 레코드의 테이블일 수도 있다. 각 레코드는, RDBMS 서버(62)에 의해 관리되는 데이터베이스에서 정의된 바와 같이, 컬럼(column) 또는 필드(field)의 세트를 가질 수도 있다. 더욱 구체적으로, 적어도 하나의 컬럼은 데이터베이스의 기본 키(primary key)를 포함할 수도 있다. 일반적으로, "키(key)"는 데이터를 정렬하기 위해 사용될 수 있는 데이터베이스의 필드일 수도 있다. "기본 키"는 데이터베이스의 각 레코드에서 유일한 값을 갖는 키일 수도 있다. 일부의 경우, 기본 키는 레코드에서 하나의 컬럼일 수도 있다. 다른 경우에, 기본 키는 레코드에서의 둘 이상의 컬럼의 조합일 수도 있다.
어플라이언스(10)는 RDBMS(62)의 출력 포맷으로부터 결과(80)의 희망하는 포맷으로 결과(78)를 변환할 수도 있다. 일부 실시예에서, 출력 스타일시트(72)는 희망하는 포맷을 지정하기 위해 사용될 수도 있다. 다른 실시예에서, 디폴트 출력 포맷(default output format)은 어플라이언스(10)에 의해 지원될 수도 있다. 예를 들어, 디폴트 XML 포맷이 지원될 수도 있으며, 도 5 및 도 6에 예시되어 있다. 다른 실시예는 임의의 마크업 언어로 된 디폴트 포맷 또는 다른 희망하는 포맷을 지원할 수도 있다.
도 5는 각 레코드가 하나의 컬럼에 기본 키를 포함할 경우의 디폴트 포맷(82)의 일 실시예를 예시한 것이다. 이 실시예에 대하여, 기본 키는 XML 요소로 맵핑되어 있다. 레코드의 각 컬럼 또는 필드는 요소의 속성으로 맵핑되어 있다(예를 들어, Attr1은 레코드의 컬럼 1의 값과 동일하고, Attr2는 레코드의 컬럼 2의 값과 동일하며, AttrN은 레코드의 컬럼 N의 값과 동일함).
도 6은 각 레코드가 둘 이상의 컬럼의 조합인 기본 키를 포함할 경우의 디폴트 포맷(84)의 일 실시예를 예시한 것이다. 이 실시예에 대하여, 부모 요소(parent element)가 생성된다. 도 5의 실시예와 유사하게, 부모 요소는 레코드에서의 각각의 비-기본(non-primary) 키 컬럼에 대한 속성을 포함할 수도 있다. 또한, 부모 요소는 자식 요소(child element)를 포함할 수도 있다. 각각의 자식 요소는 기본 키의 컬럼 중 하나일 수도 있다.
일부 실시예에서, 어플라이언스(10)는 미리 정의된 서비스를 지원할 수도 있다. 각 서비스는 어플라이언스(10)에 로딩(loading)되고, 서비스가 호출될 경우, RDBMS 서버(62)에 송신될 SQL 문장을 포함할 수도 있다. 서비스는 서비스가 호출되도록 하는 하나 이상의 개시 조건(triggering condition)을 지정할 수도 있고, 어플라이언스(10)는 서비스를 호출하기 위한 개시 조건을 감시할 수도 있다. 다른 방안으로서, 서비스를 호출하기 위하여 외부 이벤트가 사용되거나, 사용자에 의해 명확한 호출이 송신될 수도 있다. 일부의 경우, 서비스는 데이터베이스에 대한 액세스의 요구자로서 간주될 수도 있는 결과의 수신자를 지정할 수도 있다. 서비스는 출력 스타일시트(72) 또는 출력 결과 포맷의 또 다른 세부 사항을 포함할 수도 있다. 일부 실시예에서, 도 1에 도시된 소프트웨어(28)는 미리 정의된 서비스를 지원하기 위한 소프트웨어를 포함할 수도 있다.
도 4의 실시예와 유사한 실시예는 컨텐츠 관리 시스템 또는 파일시스템을 위한 프록시로서 사용될 수도 있다.
도 7은 RDBMS 서버(62)를 위한 데이터베이스 프록시(60)로서 사용되고 있는 어플라이언스(10)의 제2실시예를 예시한 것이다. 데이터베이스 프록시(60)는 어플라이언스(10)를 포함하고, 선택적으로, 스타일시트(70 및 72)를 포함한다. 도 4의 실시예와 유사하게, 어플라이언스(10)는 어플리케이션 서버(58A)로부터 요구(74)를 수신하고 이에 대응하는 결과(76)를 생성하도록 결합될 수도 있다(또는, 요구(74)를 수신하는 대신에, 어플라이언스(10)에서의 서비스가 사용될 수도 있음). 또한, 도 4의 실시예와 유사하게, RDBMS 서버(62)는, 어플라이언스(10)가 어플리케이션 서버(58A)에 의해 희망된 결과(80)로 변환할 수도 있는 결과(78)를 반환할 수도 있다. 스타일시트(70 및 72)는 선택적으로 사용될 수도 있다. 일부 실시예에서는, 도 4와 관련지어 위에서 설명된 미리 정의된 서비스가 사용될 수도 있다.
도 7의 실시예에서는, 데이터베이스(86)가 RDBMS 서버(62) 내에 도시되어 있고, 데이터베이스는 XML 오브젝트(88A-88B)와 같은 XML 오브젝트를 기억한다. 다른 실시예는 다른 마크업 언어 오브젝트를 포함할 수도 있다. 여기서 사용된 바와 같이, 마크업 언어 오브젝트는 완전한 마크업 언어 구조일 수도 있다. 각 마크업 언어 오브젝트는 희망하는 바에 따라 하나의 레코드, 다수의 레코드, 또는 레코드의 일부를 포함할 수도 있다. 데이터베이스(86)는 XML 오브젝트를 레코드로서, 또는 레코드의 컬럼으로서 기억할 수도 있다.
따라서, 결과(78)는 데이터베이스(86)로부터의 하나 이상의 XML 오브젝트를 포함할 수도 있다. 출력 스타일시트(72)는 XML 오브젝트의, 결과(80)에 대한 희망하는 결과 포맷으로의 변환을 지정할 수도 있다. 예를 들어, 희망하는 포맷은 관계 포맷(예를 들어, 레코드의 테이블)으로 된 XML 오브젝트 내부의 레코드일 수도 있 다. 이와 달리, 데이터베이스(86)에 기억된 것과 상이한 형태의 XML이 희망하는 포맷일 수도 있다. 다른 실시예에서는, 그 이외의 포맷이 사용될 수도 있다.
일부 실시예에서, 요구(74)는 결과(78)를 생성하기 위해 데이터베이스(86)에 적용될 하나 이상의 SQL 문장을 포함할 수도 있고, 어플라이언스는 SQL 문장을 수정하지 않고 RDBMS 서버(62) 상으로 통과시킬 수도 있다. 일부 실시예에서는, 요구(74)가 스타일시트(70 및/또는 72)의 하나 또는 둘 모두를 포함할 수도 있다.
다른 실시예에서, 데이터베이스(86)는 데이터베이스의 오브젝트로서가 아니라, 관계 형태(예를 들어, 각종 요소 및 속성 등에 대한 인덱스 테이블)로 XML 데이터를 기억할 수도 있다. 이러한 실시예에서는, 데이터베이스(86)로부터의 출력 데이터의 변환을 제공하기 위하여, 데이터베이스 프록시(60)가 사용될 수도 있다.
도 8은 렌더링 엔진(90)으로서 사용되고 있는 어플라이언스(10)의 일 실시예를 예시한 것이다. 렌더링 엔진(90)은 어플라이언스(10)와, 출력 문서를 생성하기 위하여 입력 문서에 적용될 하나 이상의 스타일시트(92)를 포함한다. 입력 문서는 임의의 포맷일 수도 있고, 출력 문서 또한 임의의 포맷일 수도 있다. 예를 들어, 포맷은 이하의 것을 포함할 수도 있다: 이메일(email), Microsoft Word와 같은 워드 프로세서 포맷, 스프레드시트 포맷, 포터블 문서 포맷(PDF : portable document format), SGML, HTML, XML 등과 같은 각종 마크업 언어 포맷, 포스트스크립트(postscrip) 포맷 등.
일반적으로, 렌더링 엔진(90)은 하나 이상의 입력 문서의 일부 또는 전부를 추출하여, 그 추출된 부분으로부터 하나 이상의 출력 문서를 만들 수도 있다. 그 다음, 출력 문서는 요구자에게 반환된다. 일부 실시예에서는, 스타일시트(92)를 적용하기 위한 요구에 의해 입력 문서가 송신될 수도 있다. 다른 실시예에서, 요구 및/또는 스타일시트는 (예를 들어, URL(uniform resource locator)에 의해) 문서를 식별할 수도 있고, 어플라이언스(10)는 문서를 불러올 수도 있다. 일부 실시예에서는, 데이터베이스 프록시(60)에 관한 상기한 논의와 유사하게, 어플라이언스(10)가 어플라이언스(10)에 로딩되는 미리 정의된 서비스를 지원할 수도 있다. 서비스는 입력 문서, 출력 문서 및 적용될 스타일시트를 정의할 수도 있다. 일부 실시예에서는, 하나 이상의 구별되는 출력 문서가 생성되어야 한다면, 렌더링 엔진(90)은 입력 문서를 캐싱(caching)하고 각 스타일시트를 개별적으로 적용하여 대응하는 출력 문서를 생성한다.
도 9는 도 3에 예시된 데이터 센터의 일부분의 일 실시예를 예시하는 블록도이다. 도 9에는, 어플라이언스(10)를 이용하는 데이터 통합 스위치(56)와 함께, 어플리케이션 서버(58A-58D)가 예시되어 있다. 다른 실시예에서는, 도 3의 웹 서버(54A-54B)와 같은 웹 서버가 또한 포함될 수도 있다.
각각의 어플리케이션 서버(58A-58D)는 다양한 포맷으로 데이터를 입력 및 출력하도록 구성될 수도 있다. 예를 들어, 어플리케이션 서버(58A)는 포맷 1의 형태로 데이터를 입력 및 출력할 수도 있다. 이와 유사하게, 어플리케이션 서버(58C)는 포맷 4의 형태로 데이터를 입력 및 출력할 수도 있고, 어플리케이션 서버(58D)는 포맷 5의 형태로 데이터를 입력 및 출력할 수도 있다. 일부의 경우, 주어진 어플리케이션에 대한 출력 데이터 포맷과 입력 데이터 포맷은 상이할 수도 있다(예를 들 어, 어플리케이션 서버(58B)는 포맷 2의 형태로 데이터를 출력하고 포맷 3의 형태로 데이터를 입력함). 여러 어플리케이션 서버(58A-58D)에 의해 사용되는 포맷은 서로 상이할 수도 있다. 따라서, 어플리케이션 서버(58A-58D)가 입력 데이터로서 다른 어플리케이션 서버(58A-58D)에 공급되어야 하는 데이터를 출력할 경우, 데이터 통합 스위치(56)는 데이터를, 소스 어플리케이션 서버의 출력 포맷으로부터 목표 어플리케이션 서버의 입력 포맷으로 변환할 수도 있다.
더욱 구체적으로, 어플라이언스(10)는 XML을 중간 포맷으로 통과시키면서, 출력 포맷의 입력 포맷으로의 변환을 수행할 수도 있다. 즉, 어플라이언스(10)는 데이터를 소스 포맷으로부터 XML로 변환하고, XML로부터 목표 포맷으로 변환한다. 각각의 변환을 위해 한 쌍의 스타일시트가 사용될 수도 있으며, 하나의 스타일시트는 소스 포맷으로부터 XML로 변환하고, 또 다른 스타일시트는 XML로부터 목표 포맷으로 변환한다.
일부 실시예에서, 소스 데이터는 소스 데이터 포맷에 의해 지시된 방식으로 배열된 개별 데이터 항목의 세트를 포함할 수도 있다(예를 들어, 데이터 구조, 또는 데이터 항목의 정리된 세트, 또는, 이메일; Microsoft Word와 같은 워드 프로세서 포맷; 스프레드시트 포맷; 포터블 문서 포맷(PDF); 포스트스크립트 포맷; 데이터베이스 포맷; 전자 데이터 교환(EDI : electronic data interchange) 포맷 등과 같은 임의의 희망하는 구조의 문서). 소스-XML(source-to-XML) 스타일시트는 소스 데이터 항목에 적용되어, 소스 데이터 항목에 대응하는 하나 이상의 XML 구성체를 생성할 수도 있고, 그 다음으로, XML 구성체는 XML-목표(XML-to-target) 스타일시 트에 적용되어, 대응하는 목표 데이터 항목을 생성할 수도 있다. XML-목표 스타일시트의 XML 구성체로의 적용은 다른 소스 데이터 항목의 XML 구성체로의 변환에 무관하게 수행될 수도 있다. 예를 들어, 목표 데이터 항목은 다른 소스 데이터 항목의 적어도 일부에 대한 XML 구성체를 생성하기 이전에 생성될 수도 있다. 다른 방식으로 고찰하면, XML-목표 스타일시트의 적용은 소스-XML 스타일시트를 모든 소스 데이터 항목에 대해 적용하는 것을 완료하기 이전에 시작될 수도 있다.
일부 실시예에서, 첫 번째 스타일시트를 통해 모든 데이터 항목을 완료하기 이전에 두 개의 스타일시트를 데이터 항목에 적용하는 것은, 데이터 통합 스위치(56)의 처리량을 향상시킬 수 있으며, 어플리케이션 서버(58A-58D) 사이에서 개별 데이터 항목이 송신될 때에는 응답 시간을 감소할 수도 있다.
도 10은 목표 데이터 항목을 생성하기 위해 XML-목표 스타일시트(102)가 적용되는 XML 구성체를 생성하기 위하여, 소스-XML 스타일시트(100)를 소스 데이터 항목에 적용하는 일 실시예를 개략적으로 예시한 것이다.
도 11은 (도 2로부터의) 문서 처리기(16)의 일부에 대한 일 실시예의 블록도로서, 데이터 통합 스위치(56)의 일 실시예에서의 데이터 흐름을 예시한 것이다. 스타일시트(100 및 102)는 파싱-시간 표현식 트리(각각, 도 11의 PET1 및 PET2)와, 변환 엔진(44)에 대한 명령 테이블(각각, 도 11의 IT1 및 IT2)로 각각 별도로 컴파일된다.
소스 데이터는, 표현식 처리기(42)에 대한 소스 이벤트를 생성하는 파서 회로(40)에 공급된다. 소스 이벤트는 소스 데이터 내부의 데이터 항목을 식별할 수도 있다. 표현식 처리기(42)는 소스 이벤트를 PET1에 적용하고, 변환 엔진(44)에 대하여, 소스-XML 스타일시트(100)에서의 각각의 소스 데이터 항목의 일치도를 생성한다. 변환 엔진(44)은 IT1으로부터의 명령을 실행하여 주어진 소스 데이터 항목에 대응하는 XML 구성체를 생성한다. 변환 엔진(44)은 XML 구성체로부터 XML 구성체 이벤트를 생성할 수도 있으며, 이들 이벤트를 표현식 처리기(42)에 전달할 수도 있다. 표현식 처리기(42)는 XML 구성체 이벤트를 PET2에 적용하여, XML-목표 스타일시트(102)에서의 XML 구성체 이벤트의 일치도를 생성할 수도 있다. 변환 엔진(44)은 IT2로부터의 명령을 실행하여 출력 생성기(46)에 대한 출력 데이터를 생성할 수도 있다.
다른 실시예에서, 변환 엔진은 XML 구성체를 XML-목표 스타일시트에 적용할 수도 있다(예를 들어, XML-목표 스타일시트는 변환 엔진(44)에 의해 실행되는 명령으로 완전히 구현될 수도 있음). 또 다른 실시예에서, XML 구성체는 변환 엔진(44)으로부터 파서 회로(40)로 전달될 수 있으며, 이 파서 회로(40)는 XML 구성체를 파싱하여 표현식 처리기(42)를 위한 XML 구성체 이벤트를 생성할 수도 있다. 다른 실시예에서, 소프트웨어(28)(도 1)는, 변환 엔진(44)에 의해 출력되는 XML 구성체를 얻고 표현식 처리기(42)에 대한 XML 구성체 이벤트를 생성하기 위하여 사용될 수도 있다.
도 12는 XML 라우터(110)로서 사용되고 있는 어플라이언스(10)의 일 실시예의 블록도이다. 예를 들어, XML 라우터(110)는 도 3에 도시된 데이터 센터의 라우터에 포함될 수도 있다. XML 라우터(110)는 어플라이언스(10) 및 스타일시트(112) 를 포함한다.
XML 라우터(110)에서는, 어플라이언스가 입력 XML 문서를 수신하고, 출력 XML 문서와 라우팅 라벨(routing label) 또는 위치를 출력한다. 라우팅 라벨은 XML 문서에 대한 목적지를 식별한다. 예를 들어, 어플라이언스(10)의 소프트웨어(28)는 (예를 들어, 테이블 룩업을 통해) 라우팅 라벨을 목적지 IP 어드레스 또는 어드레스들로 변환하는 소프트웨어를 포함할 수도 있고, 어플라이언스(10)는 출력 문서를 목적지 IP 어드레스 또는 어드레스들에 라우팅할 수도 있다. 다른 방안으로서, 목적지 IP 어드레스 또는 어드레스들을 룩업(lookup)하기 위하여, 라우터(52)에 의해 라우팅 라벨이 사용될 수도 있고, 라우터(52)는 XML 문서를 목적지 IP 어드레스 또는 어드레스들에 라우팅할 수도 있다. 또 다른 대안에서는, 라우팅 라벨이 목적지 IP 어드레스 또는 어드레스들일 수도 있다.
스타일시트(112)는 입력 문서에 적용될 XPath 표현식의 세트를 포함할 수도 있고, 그 하나는 주어진 입력 문서와 일치할 수도 있다. 대응하는 라우팅 라벨은 스타일시트로부터 결정될 수도 있다. 예를 들어, 예시된 실시예에서, 스타일시트(112)는 표현식과 동일한 일치 속성을 갖는, 각 표현식(예를 들어, Exp1, Exp2 등)에 대한 템플릿을 포함할 수도 있다. 템플릿 본문은 라우팅 라벨(예를 들어, Routing Label 1, Routing Label 2 등)을 출력하는 것을 포함할 수도 있다. 선택적으로, 스타일시트는 템플릿 본문에 포함될 수도 있다. 스타일시트가 포함되면, 어플라이언스(10)는 스타일시트를 입력 문서에 적용하여 출력 문서를 생성할 수도 있다. 그렇지 않으면, 입력 문서는 변환되지 않고 출력 문서로서 공급될 수도 있다. 다른 실시예에서는, 변환 스타일시트가 무조건적으로(즉, 표현식이 일치하는지에 대한 함수로서가 아님) 적용될 수도 있다.
다음으로, 도 13을 참조하면, 방화벽(예를 들어, 방화벽(50))에서 사용될 경우의 어플라이언스(10)의 일 실시예의 동작을 예시하는 순서도이다. 이 실시예에서, 어플라이언스(10)는 DTD/스키마에 대하여 문서 검사를 수행할 수 있고, 침입 검출(예를 들어, 바이러스 검출)을 수행할 수도 있다. 이와 관련하여, 바이러스는 바이러스뿐만 아니라 웜(worm), 트로이 목마 소프트웨어(Trojan horse software) 등을 포함할 수도 있다. 일반적으로, 바이러스는, 소프트웨어가 실행되는 컴퓨터 시스템에 대해 불법적인 의도(예를 들어, 컴퓨터 시스템상의 데이터 또는 소프트웨어의 파괴, 다른 소프트웨어를 위해 사용가능한 컴퓨터 시스템 자원의 감소 등)로, 다른 컴퓨터 시스템에 복제하기 위한 의도로, 또는 또 다른 컴퓨터 시스템에 대해 불법적인 의도를 갖고서 컴퓨터 시스템상에서 실행(예를 들어, 서비스 공격의 거부를 개시하는 것)하기 위하여 기록되는 소프트웨어를 포함할 수도 있다.
XML 문서는 표준 바이러스 검출에 비해 바이러스 검출을 위하여 추가적인 어려움을 제공할 수도 있다. 표준 바이러스 검출에서는, 입력되는 비트 스트림이 공지된 바이러스의 비트열의 데이터베이스와 비교되고, 입력되는 비트 스트림의 일부가 데이터베이스와 일치하면, 바이러스로서 식별된다. XML 문서에서는, XML 문서에 걸쳐 바이러스가 분포될 수도 있다. 예를 들어, 바이러스의 일부가 상이한 요소에 존재할 수도 있다. 요소가 (예를 들어, 스타일시트에 의한 문서 처리를 통해) 합성되면, 바이러스가 만들어진다. 또한, 바이러스는 XML 문서에 부분적으로 포함되고, (예를 들어, 엔티티 기준 또는 속성 디폴트에서의) 대응하는 DTD/스키마 및/또는 XML 문서에 적용될 스타일시트에 부분적으로 포함될 수도 있다. 따라서, 위의 어느 것도 분리된 상태에서는 바이러스를 포함하지 않지만, DTD/스키마 및/또는 스타일시트를 갖는 XML 문서를 처리함으로써, 바이러스가 만들어질 수 있다. 또 다른 복잡한 상황으로는, XML 문서, DTD/스키마, 및 스타일시트가 상이한 시간에 도달함에 따라, 이들 간에 분포된 바이러스를 검출하기 어렵게 한다는 것이다. 공격자는, 기존의 유효한 DTD/스키마 및/또는 스타일시트를 이용하여 처리될 경우에도, 바이러스를 생성하는 XML 문서를 기록할 수도 있다.
어플라이언스(10)는 두 단계의 처리에 의해 바이러스 생성을 해결할 수 있다. 첫 번째 단계에서는, 필요에 따라, XML 문서가 DTD/스키마를 이용하여 검사되고, 스타일시트를 이용하여 변환될 수 있다. 다음으로, 그 결과로 얻어지는 문서는 두 번째 단계에서 어플라이언스(10)에 다시 전달되어, 검사기(48)는 그 결과로 얻어지는 문서에서 바이러스를 검사할 수 있다. 예를 들어, 검사기(48)는 전술한 바와 같이 바이러스 데이터베이스 내부에 제공될 수도 있다. 다른 실시예에서는, 침입 검출의 거시 레벨(coarser level)이 적용될 수도 있다(예를 들어, 두 개의 특정 어드레스로부터의 트래픽이 검출될 수도 있음).
도 13은 두 단계의 처리를 예시한 것이다. 입력 문서가 수신되고, 유효성이 검사되며(예를 들어, 검사기(48)에서, DTD/스키마에 대하여), 문서가 (DTD/스키마 및 스타일시트를 이용하여) 변환된다(블록 120). 그 다음, 바이러스 검사가 수행되어야 하면(결정 블록 122, "yes"로 진행), 출력 문서는 검사기(48)에 반환되어 바 이러스를 검사한다(블록 124). 바이러스가 검출되면(결정 블록 126, "yes"로 진행), 어플라이언스(10)는 교정 작용을 행할 수 있다(블록 128). 예를 들어, 바이러스는 교정 작용에 의해 치료될 수 있다. 다른 방안으로서, 그 문서는 포기되거나(데이터 센터로의 전달이 허용되지 않음), 어플라이언스(10)에 격리되거나, 그렇지 않으면, 관리자에 의해 나중에 검토될 수도 있다. 바이러스 검사가 수행되지 않거나(결정 블록 122, "no"로 진행), 바이러스가 검출되지 않으면(결정 블록 126, "no"로 진행), 문서는 데이터 센터로의 전달이 허용된다(블록 130).
상술한 기재 내용이 일단 완전히 이해되면, 다수의 변형 및 수정은 당업자에게 명확해질 것이다. 아래의 청구범위는 이러한 모든 변형 및 수정을 모두 포괄하도록 해석될 것을 의도한 것이다.

Claims (51)

  1. 요구를 생성하도록 구성된 어플라이언스; 및
    하나 이상의 데이터베이스를 관리하는 데이터베이스 관리 시스템(DBMS)을 실행하도록 구성되고, 상기 요구를 수신하기 위해 상기 어플라이언스에 결합되며, 상기 DBMS는 하나 이상의 데이터베이스의 적어도 하나에서 상기 요구를 처리하도록 구성되며, 상기 요구의 결과를 제1 포맷으로 상기 어플라이언스에 반환하도록 구성된 컴퓨터 시스템을 포함하고,
    상기 어플라이언스는 상기 요구에 대응하는 요구자에게 반환하기 위하여 상기 결과를 제2 포맷으로 변환하도록 구성되는, 장치.
  2. 제 1 항에 있어서, 상기 제2 포맷은 마크업 언어로 표현되는 것인, 장치.
  3. 제 2 항에 있어서, 상기 제2 포맷은 상기 어플라이언스에 의해 지원되는 디폴트 포맷을 포함하는 것인, 장치.
  4. 제 3 항에 있어서, 상기 결과가 하나의 컬럼에 포함된 기본 키를 포함하면, 상기 디폴트 포맷은,
    상기 기본 키를 포함하는 요소; 및
    상기 요소의 하나 이상의 속성들로서, 상기 속성들 각각은 상기 결과의 다른 한개의 컬럼을 포함하는 것인, 상기 하나 이상의 속성들
    을 포함하는 것인, 장치.
  5. 제 3 항에 있어서, 상기 결과가 하나보다 많은 컬럼을 포함하는 기본 키를 포함하면, 상기 디폴트 포맷은 상기 결과의 각각의 비-기본 키 컬럼을 속성으로서 갖는 제1 요소를 포함하는 것인, 장치.
  6. 제 5 항에 있어서, 상기 디폴트 포맷은 복수의 제2 요소를 더 포함하고, 상기 복수의 제2 요소들 각각은 상기 기본 키의 컬럼들 중 하나를 포함하며, 상기 복수의 제2 요소의 각각은 상기 제1 요소의 자식(child)인 것인, 장치.
  7. 제 2 항에 있어서, 상기 어플라이언스는 상기 제2 포맷을 정의하는 하나 이상의 스타일시트를 수신하도록 결합되는 것인, 장치.
  8. 제 1 항에 있어서, 상기 어플라이언스는 상기 요구자로부터 제2 요구를 수신하도록 결합되고, 상기 어플라이언스는 상기 제2 요구에 응답하여 상기 컴퓨터 시스템에 대한 요구를 생성하도록 구성되는 것인, 장치.
  9. 제 8 항에 있어서, 상기 제2 요구는 상기 하나 이상의 데이터베이스에 적용될 하나 이상의 표현식을 포함하는 하나 이상의 스타일시트를 포함하는 것인, 장 치.
  10. 제 1 항에 있어서, 상기 하나 이상의 데이터베이스의 적어도 일부의 컨텐츠는 하나 이상의 마크업 언어 오브젝트를 포함하고, 상기 결과는 적어도 하나의 마크업 언어 오브젝트를 포함하는 것인, 장치.
  11. 제 10 항에 있어서, 상기 제2 포맷은 상기 DBMS에 의해 지원되는 포맷을 포함하는 것인, 장치.
  12. 하나 이상의 데이터베이스를 관리하는 데이터베이스 관리 시스템(DBMS)을 실행하도록 구성된 컴퓨터 시스템을 포함하는 장치에서, 상기 컴퓨터 시스템에 대한 요구를 생성하도록 구성되고, 상기 컴퓨터 시스템으로부터 상기 요구의 결과를 수신하도록 결합된 어플라이언스로서, 상기 결과는 제1 포맷이고, 상기 어플라이언스는 상기 요구에 대응하는 요구자에게 반환하기 위하여 상기 결과를 제2 포맷으로 변환하도록 구성되는 것인, 어플라이언스.
  13. 제 12 항에 있어서, 상기 제2 포맷은 마크업 언어로 표현되는 것인, 어플라이언스.
  14. 제 13 항에 있어서, 상기 제2 포맷은 상기 어플라이언스에 의해 지원되는 디 폴트 포맷을 포함하는 것인, 어플라이언스.
  15. 제 14 항에 있어서, 상기 결과가 하나의 컬럼에 포함된 기본 키를 포함하면, 상기 디폴트 포맷은,
    상기 기본 키를 포함하는 요소; 및
    상기 요소의 하나 이상의 속성들로서, 상기 속성들 각각은 상기 결과의 다른 한개의 컬럼을 포함하는 것인, 상기 하나 이상의 속성들
    을 포함하는 것인, 어플라이언스.
  16. 제 14 항에 있어서, 상기 결과가 하나보다 많은 컬럼을 포함하는 기본 키를 포함하면, 상기 디폴트 포맷은 상기 결과의 각각의 비-기본 키 컬럼을 속성으로서 갖는 제1 요소를 포함하는, 어플라이언스.
  17. 제 16 항에 있어서, 상기 디폴트 포맷은 복수의 제2 요소를 더 포함하고, 상기 복수의 제2 요소들 각각은 상기 기본 키의 컬럼들 중 하나를 포함하며, 상기 복수의 제2 요소들 각각은 상기 제1 요소의 자식(child)인, 어플라이언스.
  18. 제 13 항에 있어서, 상기 어플라이언스는 상기 제2 포맷을 정의하는 하나 이상의 스타일시트를 수신하도록 결합되는 것인, 어플라이언스.
  19. 제 12 항에 있어서, 상기 어플라이언스는 상기 요구자로부터 제2 요구를 수신하도록 결합되고, 상기 어플라이언스는 상기 제2 요구에 응답하여 상기 컴퓨터 시스템에 대한 요구를 생성하도록 구성되는 것인, 어플라이언스.
  20. 제 19 항에 있어서, 상기 제2 요구는 상기 하나 이상의 데이터베이스에 적용될 하나 이상의 표현식을 포함하는 하나 이상의 스타일시트를 포함하는 것인, 어플라이언스.
  21. 제 12 항에 있어서, 상기 하나 이상의 데이터베이스의 적어도 일부의 컨텐츠는 하나 이상의 마크업 언어 오브젝트를 포함하고, 상기 결과는 적어도 하나의 마크업 언어 오브젝트를 포함하는 것인, 어플라이언스.
  22. 제 21 항에 있어서, 상기 제2 포맷은 상기 DBMS에 의해 지원되는 포맷을 포함하는 것인, 장치.
  23. 어플라이언스가 데이터베이스 관리 시스템(DBMS)에 요구를 송신하는 단계;
    상기 어플라이언스가 상기 DBMS로부터 제1 포맷 형태의 결과를 수신하는 단계; 및
    상기 요구에 대응하는 요구자에게 송신하기 위하여, 상기 어플라이언스가 상기 결과를 제2 포맷으로 변환하는 단계
    를 포함하는, 방법.
  24. 제 23 항에 있어서, 상기 제2 포맷은 마크업 언어로 표현되는 것인, 방법.
  25. 제 24 항에 있어서, 상기 제2 포맷은 상기 어플라이언스에 의해 지원되는 디폴트 포맷을 포함하는 것인, 방법.
  26. 제 25 항에 있어서, 상기 결과가 하나의 컬럼에 포함된 기본 키를 포함하면, 상기 디폴트 포맷은,
    상기 기본 키를 포함하는 요소; 및
    상기 요소의 하나 이상의 속성들로서, 상기 속성들 각각은 상기 결과의 다른 한개의 컬럼을 포함하는 것인, 상기 하나 이상의 속성들
    을 포함하는 것인, 방법.
  27. 제 25 항에 있어서, 상기 결과가 하나보다 많은 컬럼을 포함하는 기본 키를 포함하면, 상기 디폴트 포맷은 상기 결과의 각각의 비-기본 키 컬럼을 속성으로서 갖는 제1 요소를 포함하는 것인, 방법.
  28. 제 27 항에 있어서, 상기 디폴트 포맷은 복수의 제2 요소를 더 포함하고, 상기 복수의 제2 요소들 각각은 상기 기본 키의 컬럼들 중 하나를 포함하며, 상기 복 수의 제2 요소들 각각은 상기 제1 요소의 자식(child)인 것인, 방법.
  29. 제 24 항에 있어서, 상기 어플라이언스에 제공되는 하나 이상의 스타일시트에서 상기 제2 포맷을 정의하는 단계를 더 포함하는 것인, 방법.
  30. 제 23 항에 있어서,
    상기 어플라이언스가 상기 요구자로부터 제2 요구를 수신하는 단계; 및
    상기 어플라이언스가 상기 제2 요구에 응답하여 컴퓨터 시스템에 대한 요구를 생성하는 단계
    를 더 포함하는, 방법.
  31. 제 30 항에 있어서, 상기 제2 요구는 상기 하나 이상의 데이터베이스에 적용될 하나 이상의 표현식을 포함하는 하나 이상의 스타일시트를 포함하는 것인, 방법.
  32. 제 23 항에 있어서, 상기 하나 이상의 데이터베이스의 적어도 일부의 컨텐츠는 하나 이상의 마크업 언어 오브젝트를 포함하고, 상기 결과는 적어도 하나의 마크업 언어 오브젝트를 포함하는 것인, 방법.
  33. 제 32 항에 있어서, 상기 제2 포맷은 상기 DBMS에 의해 지원되는 포맷을 포 함하는 것인, 방법.
  34. 복수의 서버; 및
    상기 복수의 서버에 결합되고, 상기 복수의 서버 중 제1 서버로부터 제1 출력 데이터를 수신하도록 결합되며, 상기 제1 출력은 상기 복수의 서버 중 제2 서버에 제1 입력 데이터로서 공급되며, 상기 제1 출력 데이터는 상기 제1 입력 데이터에 대한 상기 제2 서버에 의해 사용되는 제2 포맷과 상이한 제1 포맷으로 되어 있는, 어플라이언스를 포함하고,
    상기 어플라이언스는 상기 제1 출력 데이터를 제1 마크업 언어 포맷으로 변환하고 상기 제1 마크업 언어 포맷을 상기 제2 포맷으로 변환하도록 구성되는 것인, 장치.
  35. 제 34 항에 있어서, 상기 어플라이언스는 상기 제2 포맷으로 되어 있는 상기 제1 입력 데이터를 상기 제2 서버에 송신하도록 구성되는 것인, 장치.
  36. 제 34 항에 있어서, 상기 제1 출력 데이터는 복수의 개별 데이터 항목을 포함하고, 상기 어플라이언스는 상기 복수의 데이터 항목의 제1 데이터 항목을 하나 이상의 마크업 언어 구성체로 변환하며, 상기 어플라이언스는, 상기 복수의 데이터 항목의 적어도 일부를 마크업 언어 구성체로 변환하기 전에, 상기 제1 데이터 항목에 대응하는 상기 마크업 언어 구성체를 상기 제2 포맷으로 변환하도록 구성되는 것인, 장치.
  37. 제 34 항에 있어서, 상기 어플라이언스는, 상기 제1 포맷으로부터 상기 마크업 언어 포맷으로의 변환을 정의하는 제1 스타일시트와, 상기 마크업 언어 포맷으로부터 상기 제2 포맷으로의 변환을 정의하는 제2 스타일시트를 수신하도록 결합되는 것인, 장치.
  38. 제1 서버 및 제2 서버를 포함하는 복수의 서버를 포함하는 장치에서, 제1 입력 데이터로서 상기 제2 서버에 공급되는 제1 출력 데이터를 생성하도록 상기 제1 서버가 구성되고, 상기 복수의 서버에 결합된 어플라이언스로서, 상기 어플라이언스는 상기 제1 출력 데이터를 수신하도록 결합되고, 상기 제1 출력 데이터는 상기 제1 입력 데이터에 대한 상기 제2 서버에 의해 사용되는 제2 포맷과 상이한 제1 포맷으로 되어 있으며, 상기 어플라이언스는 상기 제1 출력 데이터를 제1 마크업 언어 포맷으로 변환하고 상기 제1 마크업 언어를 상기 제2 포맷으로 변환하도록 구성되는 것인, 어플라이언스.
  39. 제 38 항에 있어서, 상기 어플라이언스는 상기 제2 포맷으로 되어 있는 상기 제1 입력 데이터를 상기 제2 서버에 송신하도록 구성되는 것인, 어플라이언스.
  40. 제 38 항에 있어서, 상기 제1 출력 데이터는 복수의 개별 데이터 항목을 포 함하고, 상기 어플라이언스는 상기 복수의 데이터 항목의 제1 데이터 항목을 하나 이상의 마크업 언어 구성체로 변환하며, 상기 어플라이언스는, 상기 복수의 데이터 항목의 적어도 일부를 마크업 언어 구성체로 변환하기 전에, 상기 제1 데이터 항목에 대응하는 상기 마크업 언어 구성체를 상기 제2 포맷으로 변환하도록 구성되는 것인, 어플라이언스.
  41. 제 38 항에 있어서, 상기 어플라이언스는, 상기 제1 포맷으로부터 상기 마크업 언어 포맷으로의 변환을 정의하는 제1 스타일시트와, 상기 마크업 언어 포맷으로부터 상기 제2 포맷으로의 변환을 정의하는 제2 스타일시트를 수신하도록 결합되는 것인, 어플라이언스.
  42. 복수의 서버의 제1 서버로부터 제1 출력 데이터를 수신하고, 상기 제1 출력 데이터는 상기 복수의 서버의 제2 서버에 제1 입력 데이터로서 공급되는 단계; 및
    상기 제1 출력 데이터를 제1 포맷으로부터 마크업 언어 포맷으로 변환하고, 상기 마크업 언어 포맷을 상기 제2 서버에 의해 사용되는 제2 포맷으로 변환하는 단계를 포함하는 방법.
  43. 제 42 항에 있어서, 상기 제2 포맷을 제1 입력 데이터로서 상기 제2 서버에 송신하는 단계를 포함하는, 방법.
  44. 제 42 항에 있어서, 상기 제1 출력 데이터는 복수의 개별 데이터 항목을 포함하고, 상기 변환하는 단계는,
    상기 복수의 데이터의 제1 데이터 항목을 하나 이상의 마크업 언어 구성체로 변환하는 단계; 및
    상기 복수의 데이터 항목의 적어도 일부를 마크업 언어 구성체로 변환하기 전에, 상기 제1 데이터 항목에 대응하는 상기 마크업 언어 구성체를 제2 포맷으로 변환하는 단계를 포함하는 것인, 방법.
  45. 제 42 항에 있어서, 상기 제1 포맷으로부터 상기 마크업 언어 포맷으로의 변환을 정의하는 제1 스타일시트와, 상기 마크업 언어 포맷으로부터 상기 제2 포맷으로의 변환을 정의하는 제2 스타일시트를 수신하는 단계를 더 포함하는, 방법.
  46. 하나 이상의 컴퓨터 시스템을 포함하는 장치에서, 입력 데이터를 수신하여 상기 입력 데이터를 출력 데이터로 변환하도록 결합된 어플라이언스로서, 상기 어플라이언스는 사용하는 동안에 하나 이상의 컴퓨터 시스템에 결합되는, 어플라이언스.
  47. 제 46 항에 있어서, 데이터베이스 프록시를 포함하는 어플라이언스.
  48. 제 46 항에 있어서, 데이터 통합 스위치를 포함하는 어플라이언스.
  49. 제 46 항에 있어서, 렌더링 엔진을 포함하는 어플라이언스.
  50. 제 46 항에 있어서, XML 라우터를 포함하는 어플라이언스.
  51. 제 46 항에 있어서, 침입 검출기를 포함하는 어플라이언스.
KR1020067009837A 2003-10-22 2004-10-22 데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기위한 시스템 KR101093271B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US51385003P 2003-10-22 2003-10-22
US60/513,850 2003-10-22
US10/889,626 US7409400B2 (en) 2003-10-22 2004-07-12 Applications of an appliance in a data center
US10/889,626 2004-07-12
PCT/US2004/035166 WO2005043413A1 (en) 2003-10-22 2004-10-22 System for data format conversion for use in data centers

Publications (2)

Publication Number Publication Date
KR20070019960A true KR20070019960A (ko) 2007-02-16
KR101093271B1 KR101093271B1 (ko) 2011-12-14

Family

ID=34526914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067009837A KR101093271B1 (ko) 2003-10-22 2004-10-22 데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기위한 시스템

Country Status (6)

Country Link
US (1) US7409400B2 (ko)
EP (2) EP1814045A3 (ko)
JP (1) JP4707670B2 (ko)
KR (1) KR101093271B1 (ko)
CN (1) CN1906609B (ko)
WO (1) WO2005043413A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509573B1 (en) * 2004-02-17 2009-03-24 Microsoft Corporation Anti-virus security information in an extensible markup language document
EP1577791B1 (en) * 2004-03-16 2011-11-02 Microdasys Inc. XML content monitoring
US20050223316A1 (en) * 2004-04-01 2005-10-06 Sun Microsystems, Inc. Compiled document type definition verifier
US7602972B1 (en) * 2005-04-25 2009-10-13 Adobe Systems, Incorporated Method and apparatus for identifying white space tables within a document
US7694287B2 (en) 2005-06-29 2010-04-06 Visa U.S.A. Schema-based dynamic parse/build engine for parsing multi-format messages
US7925971B2 (en) * 2005-10-31 2011-04-12 Solace Systems, Inc. Transformation module for transforming documents from one format to other formats with pipelined processor having dedicated hardware resources
US7986685B2 (en) * 2005-11-08 2011-07-26 Avaya Inc. Real-time XML messaging protocol
US8984397B2 (en) * 2005-12-15 2015-03-17 Xerox Corporation Architecture for arbitrary extensible markup language processing engine
US9286272B2 (en) * 2005-12-22 2016-03-15 Xerox Corporation Method for transformation of an extensible markup language vocabulary to a generic document structure format
US20080126317A1 (en) * 2006-07-07 2008-05-29 Adam David Stout Method and system for converting source data files into database query language
KR100836619B1 (ko) * 2006-11-24 2008-06-10 엔에이치엔(주) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
US20070150494A1 (en) * 2006-12-14 2007-06-28 Xerox Corporation Method for transformation of an extensible markup language vocabulary to a generic document structure format
GB2446624A (en) * 2007-02-13 2008-08-20 Ali Guryel Secure network used in educational establishments
US8265457B2 (en) * 2007-05-14 2012-09-11 Adobe Systems Incorporated Proxy editing and rendering for various delivery outlets
US8156149B2 (en) * 2007-07-24 2012-04-10 Microsoft Corporation Composite nested streams
US20090106282A1 (en) * 2007-10-19 2009-04-23 Siemens Product Lifecycle Management Software Inc. System and method for interformat data conversion
US7937392B1 (en) * 2008-03-31 2011-05-03 Sonoa Networks India (PVT) Ltd. Classifying uniform resource identifier (URI) using xpath expressions
US8639086B2 (en) 2009-01-06 2014-01-28 Adobe Systems Incorporated Rendering of video based on overlaying of bitmapped images
US8495005B2 (en) * 2009-01-14 2013-07-23 International Business Machines Corporation Methods for matching metadata from disparate data sources
CN102053994B (zh) * 2009-11-10 2013-06-05 阿里巴巴集团控股有限公司 一种语言解析器和应用该解析器的解析方法
US8412510B2 (en) * 2010-04-21 2013-04-02 Fisher-Rosemount Systems, Inc. Methods and apparatus to display localized resources in process control applications
EP2570921A1 (de) * 2011-06-14 2013-03-20 Siemens Aktiengesellschaft Verfahren und Vorrichtungen zum Austausch von Daten
CN102332002B (zh) * 2011-07-28 2013-11-13 深圳市万兴软件有限公司 一种将pdf格式文件转换为epub格式的方法及系统
US8688624B2 (en) * 2011-08-30 2014-04-01 Bank Of America Corporation Seed data automation
US20130226944A1 (en) * 2012-02-24 2013-08-29 Microsoft Corporation Format independent data transformation
CN102750350B (zh) * 2012-06-08 2015-04-22 北京天地云箱科技有限公司 监控系统及方法
US8706783B2 (en) * 2012-08-09 2014-04-22 Sap Ag Storing hierarchical table as a markup language file
CN102831243A (zh) * 2012-09-12 2012-12-19 北京播思软件技术有限公司 一种灵活部署搜索的方法
WO2014145230A1 (en) * 2013-03-15 2014-09-18 Recent Memory Incorporated Object-oriented data infrastructure
JP5664703B2 (ja) * 2013-06-06 2015-02-04 セイコーエプソン株式会社 配信システム、及びデータ配信方法
CN103744949B (zh) * 2013-12-31 2017-12-12 金蝶软件(中国)有限公司 数据集成方法和系统
US10528021B2 (en) 2015-10-30 2020-01-07 Rockwell Automation Technologies, Inc. Automated creation of industrial dashboards and widgets
CN105335523A (zh) * 2015-12-01 2016-02-17 深圳市迪菲特科技股份有限公司 一种数据交互方法及Web服务器
US10313281B2 (en) 2016-01-04 2019-06-04 Rockwell Automation Technologies, Inc. Delivery of automated notifications by an industrial asset
CN105610983A (zh) * 2016-03-07 2016-05-25 北京荣之联科技股份有限公司 一种分布式的网络监控方法及系统
US11074270B2 (en) * 2016-03-11 2021-07-27 Sap Se System and method for data integration
US10318570B2 (en) 2016-08-18 2019-06-11 Rockwell Automation Technologies, Inc. Multimodal search input for an industrial search platform
US10319128B2 (en) 2016-09-26 2019-06-11 Rockwell Automation Technologies, Inc. Augmented reality presentation of an industrial environment
US10545492B2 (en) 2016-09-26 2020-01-28 Rockwell Automation Technologies, Inc. Selective online and offline access to searchable industrial automation data
US10401839B2 (en) 2016-09-26 2019-09-03 Rockwell Automation Technologies, Inc. Workflow tracking and identification using an industrial monitoring system
US10388075B2 (en) * 2016-11-08 2019-08-20 Rockwell Automation Technologies, Inc. Virtual reality and augmented reality for industrial automation
US10735691B2 (en) 2016-11-08 2020-08-04 Rockwell Automation Technologies, Inc. Virtual reality and augmented reality for industrial automation
US10866631B2 (en) 2016-11-09 2020-12-15 Rockwell Automation Technologies, Inc. Methods, systems, apparatuses, and techniques for employing augmented reality and virtual reality
CN109684324B (zh) * 2017-10-18 2023-05-05 阿里巴巴集团控股有限公司 一种数据处理方法及其相关产品
US11423083B2 (en) * 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US10445944B2 (en) 2017-11-13 2019-10-15 Rockwell Automation Technologies, Inc. Augmented reality safety automation zone system and method
CN110020307B (zh) * 2017-11-30 2023-06-13 阿里巴巴集团控股有限公司 一种客户端视图的绘制方法和装置
ES2816012T3 (es) * 2018-07-11 2021-03-31 Siemens Ag Procedimiento, dispositivos y sistema para el intercambio de datos entre un sistema distribuido de base de datos y aparatos
US11140036B2 (en) * 2019-01-16 2021-10-05 International Business Machines Corporation Identifying groups of related nodes in an integration flow
CN111078337B (zh) * 2019-11-27 2023-08-29 用友网络科技股份有限公司 样式调整方法、系统及计算机可读存储介质
US11544285B1 (en) * 2021-08-23 2023-01-03 Accenture Global Solutions Limited Automated transformation of hierarchical data from a source data format to a target data format
US20230089365A1 (en) * 2021-09-20 2023-03-23 Salesforce.Com, Inc. Data virtualization adapter in an integration platform

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US626332A (en) * 1899-06-06 Frank j
BR9407962A (pt) 1993-11-02 1996-12-03 Paracom Corp Aparelho para processamento acelerado de transaçoes com base de dados de computador
US6247068B1 (en) 1997-03-07 2001-06-12 Advanced Micro Devices Inc. Winsock-data link library transcoder
US5936641A (en) 1997-06-27 1999-08-10 Object Technology Licensing Corp Graphics hardware acceleration method, computer program, and system
EP0917362A1 (en) 1997-11-12 1999-05-19 STMicroelectronics S.r.l. Macroblock variance estimator for MPEG-2 video encoder
US20010042081A1 (en) 1997-12-19 2001-11-15 Ian Alexander Macfarlane Markup language paring for documents
US6263332B1 (en) 1998-08-14 2001-07-17 Vignette Corporation System and method for query processing of structured documents
US6317804B1 (en) 1998-11-30 2001-11-13 Philips Semiconductors Inc. Concurrent serial interconnect for integrating functional blocks in an integrated circuit device
JP4081934B2 (ja) * 1999-09-17 2008-04-30 ソニー株式会社 データ配信方法及び装置、並びに、データ受信方法及び装置
US6615202B1 (en) * 1999-12-01 2003-09-02 Telesector Resources Group, Inc. Method for specifying a database import/export operation through a graphical user interface
US6772413B2 (en) 1999-12-21 2004-08-03 Datapower Technology, Inc. Method and apparatus of data exchange using runtime code generator and translator
US6947440B2 (en) 2000-02-15 2005-09-20 Gilat Satellite Networks, Ltd. System and method for internet page acceleration including multicast transmissions
JP3262325B2 (ja) * 2000-05-15 2002-03-04 有限会社アトリ 電子メール・サービス・システムの構築を支援するエージェント・システムおよびその方法
JP2001344147A (ja) * 2000-05-31 2001-12-14 Dainippon Printing Co Ltd 汎用データベースアクセス装置
AU2001290693B2 (en) * 2000-09-07 2007-08-16 Oracle International Corporation Method and apparatus for XML data storage, query rewrites, visualization, mapping and references
EP1239375B1 (de) 2001-03-08 2014-05-07 Sap Ag Verfahren zum Konvertieren von Dokumenten
US20030041302A1 (en) 2001-08-03 2003-02-27 Mcdonald Robert G. Markup language accelerator
CN1407465A (zh) * 2001-08-13 2003-04-02 深圳市丛文软件技术有限公司 异构、异种数据库间适用的数据交换方法及装置
JP4039484B2 (ja) 2002-02-28 2008-01-30 インターナショナル・ビジネス・マシーンズ・コーポレーション XPath評価方法、これを用いたXML文書処理システム及びプログラム
US20030187850A1 (en) * 2002-03-29 2003-10-02 Reed Michael L. Remote database access through a table entry
EP1502196A4 (en) 2002-05-02 2008-04-02 Sarvega Inc SYSTEM AND METHOD FOR TRANSFORMING XML DOCUMENTS USING STYLE SHEETS

Also Published As

Publication number Publication date
US20050091251A1 (en) 2005-04-28
EP1814045A2 (en) 2007-08-01
CN1906609A (zh) 2007-01-31
EP1676219A1 (en) 2006-07-05
WO2005043413A1 (en) 2005-05-12
CN1906609B (zh) 2012-05-09
KR101093271B1 (ko) 2011-12-14
US7409400B2 (en) 2008-08-05
EP1814045A3 (en) 2007-08-29
JP2007509445A (ja) 2007-04-12
JP4707670B2 (ja) 2011-06-22

Similar Documents

Publication Publication Date Title
KR101093271B1 (ko) 데이터 센터에서 사용하기 위해 데이터 포맷을 변환하기위한 시스템
US6487566B1 (en) Transforming documents using pattern matching and a replacement language
US7458022B2 (en) Hardware/software partition for high performance structured data transformation
US7437666B2 (en) Expression grouping and evaluation
JP4709213B2 (ja) 変換を使用したクエリの効率的な評価
US7328403B2 (en) Device for structured data transformation
US7386541B2 (en) System and method for compiling an extensible markup language based query
US7730080B2 (en) Techniques of rewriting descendant and wildcard XPath using one or more of SQL OR, UNION ALL, and XMLConcat() construct
US20070038930A1 (en) Method and system for an architecture for the processing of structured documents
US20060253465A1 (en) Methods and apparatus for converting a representation of XML and other markup language data to a data structure format
US20040193607A1 (en) Information processor, database search system and access rights analysis method thereof
Bergholz Extending your markup: An XML tutorial
JP2009544102A (ja) Xml文書の、意味論を意識した処理
Lee et al. Formal models and algorithms for XML data interoperability
Zhang Efficient XML stream processing and searching
Rose et al. Phantom XML
Nogatz et al. Declarative XML Schema Validation with SWI–Prolog: System Description
Tutorial Extending Your Markup
Davis et al. Web Distributed Authoring and Versioning (WebDAV) SEARCH

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee