KR20060047324A - 데이터베이스 추적의 프로그램적인 검색 및 재생을 위한시스템 - Google Patents

데이터베이스 추적의 프로그램적인 검색 및 재생을 위한시스템 Download PDF

Info

Publication number
KR20060047324A
KR20060047324A KR1020050033065A KR20050033065A KR20060047324A KR 20060047324 A KR20060047324 A KR 20060047324A KR 1020050033065 A KR1020050033065 A KR 1020050033065A KR 20050033065 A KR20050033065 A KR 20050033065A KR 20060047324 A KR20060047324 A KR 20060047324A
Authority
KR
South Korea
Prior art keywords
database
instructions
data
custom
tracking data
Prior art date
Application number
KR1020050033065A
Other languages
English (en)
Other versions
KR101203333B1 (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 KR20060047324A publication Critical patent/KR20060047324A/ko
Application granted granted Critical
Publication of KR101203333B1 publication Critical patent/KR101203333B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Abstract

추적 및 재생 객체들이 커스텀 컴퓨터 프로세스들에 의한 인보크 시에 데이터베이스 추적 데이터에 관한 동작들을 자동으로 수행하도록 설계될 수 있다. 추적 데이터는 임의의 다양한 위치에 저장될 수 있다. 그것은 저장 또는 재생의 목적으로 조작될 수 있다. 추적 데이터는 다양한 재생 구성 옵션을 사용하여 임의의 데이터베이스 서버에 대해 다시 재생될 수 있다. 재생 통지는 데이터가 실행을 위해 데이터베이스에 제출되기 직전에 변경되도록 허용하며, 재생 결과의 즉각적인 검사 및 재생 정확성의 확인을 허용한다. 따라서, 추적 및 재생 객체들은 추적 데이터의 관리를 매우 단순화한다. 커스텀 프로세스들은 이제 보안 심사 및 헬쓰 모니터링을 완전히 자동화할 수 있다. 새로운 서버 릴리즈 및 보안 팩의 자동적인 확인 또한 수행될 수 있다. 커스텀 프로세스들은 유연하게 액세스하기 위하여 제공된 객체들을 사용할 수 있고, 데이터베이스 추적 데이터의 검색, 저장 및 재생을 조작할 수 있다.
추적 데이터, 재생, 검색, 자동화, 객체

Description

데이터베이스 추적의 프로그램적인 검색 및 재생을 위한 시스템{API FOR PROGRAMMATIC RETRIEVAL AND REPLAY OF DATABASE TRACE}
도 1은 데이터베이스에 의해 수행된 데이터베이스의 다양한 서비스 요청 및/또는 기타 동작들을 반영하는 데이터베이스 추적 데이터를 프로파일러 어플리케이션이 검색, 보기, 저장 및 재생할 수 있는 종래 기술 시스템을 도시하는 도면.
도 2a는 본 발명의 다양한 양상과 관련한 사용에 적합한 예시적인 컴퓨팅 장치의 기본 특성들을 넓게 나타내는 블럭 다이어그램.
도 2b는 본 발명의 다양한 양상과 관련한 사용에 적합한 예시적인 컴퓨팅 장치의 세부사항을 나타내는 블럭 다이어그램.
도 2c는 본 발명의 프로세스를 포함한 컴퓨터화된 프로세스들이 구현될 수 있는 예시적인 네트워크 컴퓨팅 환경을 도시하는 도면.
도 3은 커스텀 객체들이 데이터베이스 추적 데이터의 재생, 보기, 저장 및 재생을 자동화하도록 설계될 수 있는 데이터베이스 추적 데이터의 프로그램적인 검색 및 재생을 위한 API를 도시하는 도면.
도 4는 파일, 테이블 및 서버에서의 저장 및 추적 데이터를 저장, 변경 및 재생하기 위한 요청들을 포함하여, 데이터베이스 추적 데이터의 검색 및 저장과 관련된 다양한 펑션들을 도시하는 도면.
도 5는 본 발명의 API를 구현하는 다양한 객체들의 배치에 대한 바람직한 실시예를 위한 UML 다이어그램.
도 6은 파일, 테이블 또는 서버로부터의 재생을 포함한 데이터베이스 추적 데이터의 재생뿐만 아니라 재생을 시작, 중지 및 잠시 중단하는 것, 재생 동안 다수의 통지 옵션들을 제공하는 것 외에 또 추적 소스를 지정하는 것과 같은 임의의 부가적인 옵션 및 기타 옵션들을 제공하는 것과 관련된 다양한 펑션을 도시하는 도면.
도 7은 예시적인 재생 객체를 위한 클래스 정의를 도시하는 도면.
도 8은 콜백 통지 이벤트를 위한 예시적인 선언을 도시하는 도면.
도 9는 본 기술 분야에서 잘 알려진 IDataRecord 인터페이스와 같은 IDataRecord 인터페이스로부터 상속할 수 있는 IDataRecordChanger 인터페이스를 위한 예시적인 정의를 도시하는 도면.
도 10은 추적 재생 옵션 객체를 위한 예시적인 클래스 정의를 도시하는 도면.
도 11은 데이터베이스 추적 데이터를 재생할 때 선택될 수 있는 두 가지 예시적인 재생 모드.
도 12는 본 발명의 사용을 위해 고려되는 객체 지향 코딩 기술과 관련한 사용을 위한 예시적인 객체.
<도면의 주요부분에 대한 부호의 설명>
300: 데이터베이스
301: 클라이언트
301a: 서비스 요청
302: 클라이언트
302a: 서비스 요청
303: 클라이언트
303a: 서비스 요청
304: 클라이언트
304a: 추적 데이터 요청
304b: 추적 데이터 스트림 리턴
309: API
310: 데이터베이스 프로파일러 펑션들
330: 커스텀 객체
331: 커스텀 객체
332: 커스텀 객체
본 특허 명세서의 부분은 저작권에 속하는 자료를 포함할 수 있다. 저작권 소유자가 특허청 특허 파일 또는 레코드에 나타나기 때문에 누군가에 의한 특허 문서 또는 특허 명세서의 팩시밀리 복사에 이의를 갖지 않지만, 모든 저작권을 보유 한다. 후술하는 통지가 이 문서에 적용될 것이다 : Copyrightⓒ 2004, Microsoft Corp.
본 발명은 컴퓨팅에 관한 것이며, 보다 상세하게 데이터베이스 동작 및 성능의 분석에 관한 것이고, 보다 상세하게는 데이터베이스에 의해 전송된 추적 데이터의 맞춤화되고 자동화된 복구 및 재생을 허용하는 어플리케이션 프로그래밍 인터페이스에 관한 것이다.
데이터베이스는 전형적으로 하나 이상의 관련 조직의 활동들을 기술하는 데이터의 컬렉션을 포함한다. 예를 들어, 대학 데이터베이스는 학생, 교수단, 과목, 강의실과 같은 엔터티들 및 과목들의 학생 등록자 수, 과목을 가르치는 교수단, 과목들에 대한 강의실의 사용과 같은 엔터티들 사이의 관계에 대한 정보를 포함할 수 있다. 데이터베이스 관리 시스템(또는 DBMS)은 데이터의 큰 컬렉션을 관리하고 이용하는 데에 조력하도록 설계된 소프트웨어이다. 그러나, 본 발명에서 "데이터베이스" 또는 "데이터베이스 서버"라는 용어는 데이터의 컬렉션과 DBMS 소프트웨어 중 하나 혹은 둘다를 언급한다. 따라서, 도 1의 데이터베이스(100)는 데이터의 컬렉션과 DBMS 둘다로 생각될 수 있다.
여러 종류의 데이터베이스가 사용되고 있다. 첫 번째 데이터베이스 모델은 1960년대 초기에 제너럴 일렉트릭(General Electric)의 찰스 바흐만(Charles Bachman)에 의한 것으로 널리 알려진다. 이것은 통합된 데이터 저장소(Integrated Data Store)로 불리었으며, 네트워크 데이터 모델의 뒤를 이었다. 1960년대 후반 에, IBM은 계층형 데이터 모델(hierarchical data model)에 대한 기초를 형성한 정보 관리 시스템(Information Management System)을 개발하였다. 1970년에는, IBM의 에드거 코드(Edgar Codd)가 데이터베이스의 개발에 있어서 하나의 분기점으로 알려진 관계형 데이터 모델(relational data model)을 제안하였다. 관계형 데이터베이스의 인기는 상업적 전망을 변화시켰다. 그것의 이득이 널리 인정되었고, 법인 데이터를 관리하기 위한 데이터베이스의 사용은 표준 관례가 되었다. 관계형 데이터베이스들은 오늘날 지배적으로 사용되는 모델이다.
예를 들어, 마이크로소프트 SQL 서버®, IBM DB2®, 오라클 데이터베이스® 및 SYBASE IQ®과 같은 다양한 DBMS 제품들은 데이터베이스의 기능을 매우 확장하였다. 데이터베이스들은 이미지 및 텍스트와 같이 다양한 형태의 데이터를 저장할 수 있고, 저장된 데이터에 대해 복잡한 쿼리를 수행할 수 있다. 데이터 웨어하우스들을 생성하고, 여러 데이터베이스로부터의 데이터를 통합하며, 특화된 분석을 수행하기 위한 특화된 시스템들이 다수의 판매업자에 의해 개발되고 있다.
데이터베이스들은 인터넷 시대를 개막하였다. 웹 브라우저를 통해 액세스되는 데이터를 저장하기 위한 데이터베이스의 사용은 일반적인 것이다. 쿼리들이 웹 액세스가능한 서식을 통해 생성되고, 브라우저에 디스플레이될 수 있는 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language, HTML) 또는 확장성 마크업 언어(Extensible Markup Language, XML)와 같은 마크업 언어를 사용하여 답변들이 서식화된다. 점점 더 많은 데이터가 온라인화되고, 컴퓨터 네트워킹을 통해 훨씬 더 액세스하기 쉬워짐에 따라 데이터베이스는 계속해서 의의를 얻는다. 오늘날, 이 분야는 멀티미디어 데이터베이스, 대화형 비디오(interactive video), 스트리밍 데이터, 디지털 라이브러리, 과학 프로젝트의 호스트, 법인 데이터 통합 및 데이터 마이닝과 같은 약동하는 비전에 의해 운영되고 있다. 글로벌 컴퓨터 네트워크를 통한 데이터베이스로의 액세스는 일반적인 것이다.
도 1을 참조하면, 다수의 클라이언트(101,102 및 103)가 데이터베이스(100)로부터의 서비스를 요청할 수 있다. 전형적으로, 서비스 요청들(101a,102a 및 103a)은 데이터베이스에게 특정 기준에 필적하는 데이터를 요구하는 구조화된 쿼리 언어(Structured Query Language, SQL)이다. 예를 들면, 위에 소개된 데이터베이스는 서비스 요청(101a)을 통해 "Smith"라는 라스트 네임을 가진 모든 학생들의 리스트를 리턴하도록 요청받을 수 있다. 데이터베이스(100)는 그러한 서비스 요청(101a)을 프로세싱하고, 적합한 데이터를 수집하고, 수집된 데이터를 서식화하며, 클라이언트(101)에게 데이터를 다시 전송하기 위한 가장 좋은 방법에 대한 전략을 결정할 수 있다. 현대적인 데이터베이스(100)는 수백 또는 수천의 그러한 동작을 동시에 수행하도록 요구받을 수 있다.
데이터 검색 외에, 데이터베이스는 또한 데이터를 갱신하도록 요청받을 수 있다. 예를 들면, 만약 데이터베이스(100)가 계좌 정보를 갖는 은행 데이터베이스라면, 특정 계좌로부터 예금이나 인출이 있을 때마다 데이터가 갱신될 필요가 있을 것이다. 데이터베이스의 또다른 펑션(function)은 규율대로 갱신된다는 것을 보장하기 위하여 데이터로의 액세스를 조직화하고, 행해진 다수의 요청에 대해 가장 최근 갱신된 버전의 데이터를 제공하는 것이다.
데이터로의 액세스를 저장하고, 갱신하며 관리하는 하나의 최선의 방법은 없다. 데이터가 저장되는 방식에 있어서의 변화가 데이터베이스의 성능을 상당히 개선할 수 있다. 마찬가지로, 데이터 요청 및 데이터로의 갱신을 관리하는 기술에 있어서의 변화가 성능을 증가시킬 수 있다. 반면, 데이터 레이아웃 및 액세스 기술에 있어서의 그러한 변화들은 데이터베이스의 적절한 펑션에 대한 문제를 일으킬 수 있다. 변화들이 낮은 성능, 어떤 요청을 프로세싱하는 데 대한 무능, 수집되고 리턴된 데이터에서의 에러 및 데이터베이스의 불안정성으로 이르게 할 수 있다.
결과적으로, 현대적인 데이터베이스의 성능을 모니터하고 분석할 필요가 있다. 데이터베이스가 잘 동작하도록 하는, 또는 반대로 문제들을 겪도록 하는 상태에 대한 이해를 통해, 데이터베이스가 개선될 수 있다. 이러한 필요에 응하여, 많은 현대적인 데이터베이스들이 추적 데이터 스트림(trace data stream)(104b)을 보내는 능력을 갖춘다.
추적 데이터 스트림(104b)은 데이터베이스(100)의 다양한 동작들에 대한 정보를 포함한다. 그러한 스트림(104b)은 분석에 관련되어 고려되는 임의의 정보를 포함할 수 있다. 일반적으로, 추적 데이터 스트림(104b)은 데이터베이스에 대해 행해진 다양한 서비스 요청들(101a,102a,103a)을 설명하는 정보를 포함한다. 그러한 설명들은 행해진 요청, 요청 시간 및 그 요청을 발행한 클라이언트를 포함할 수 있다. 데이터베이스에 의해 리턴된 출력이 또한 추적 데이터 스트림(104b)에 포함될 수 있다. 현대적인 데이터베이스가 제공하는 서비스들의 수가 증가함에 따라, 증가하는 다양한 데이터가 추적 데이터 스트림(104b)에 포함될 수 있다.
전형적으로, 추적 데이터 스트림(104b)으로의 액세스는 클라이언트 컴퓨터(104)를 통해 행해진다. 클라이언트 컴퓨터(104)는 데이터베이스(100)로 추적 데이터 요청(104a)을 전송할 수 있고, 이에 의하여 추적 데이터 스트림(104b)으로의 연결이 오픈된다. 전통적으로, 프로파일러 어플리케이션(105)이 클라이언트 컴퓨터(104)에 설치된다. 프로파일러(105)는 사람이 그래픽 사용자 인터페이스(Graphic User Interface, GUI)를 통해 세션을 시작하도록 허용한다. 프로파일러는 축적된 추적 데이터를 윈도우(108)에 디스플레이할 수 있다. 프로파일러는 추적 데이터의 액세스 및 조작에 대한 다양한 펑션(110)을 허용하는 항목들의 메뉴를 제공할 수 있다. 이러한 펑션들(110) 중 저장, 오픈, 출력, 재생 등과 같은 몇 가지가 도 1의 예시적인 프로파일러 GUI(109)에 도시된다. 이러한 프로파일러 어플리케이션(105)을 사용하여, 사용자는 데이터베이스(100)가 대응하는 추적 데이터 스트림(104b)으로의 연결을 오픈하고 분석하며, 파일, 테이블 또는 서버와 같이 임의의 수의 위치에 수집된 추적 데이터를 저장하도록 지정할 수 있다.
또한, 사용자는 프로파일러(105)에게 추적 데이터를 재생하도록 명령할 수 있다. 추적 재생은 추적 데이터에 나타난 일련의 쿼리들이 데이터베이스에서 생성되고 실행되도록 허용한다. 따라서, 예를 들어, 만약 문제를 겪던 데이터베이스에 변화 또는 개선이 행해지면, 그것이 적절하게 고쳐졌는지를 결정하기 위하여 개선된 데이터베이스에 대해 사람이 일련의 쿼리를 실행할 수 있다.
데이터베이스가 급격히 증가함에 따라, 데이터베이스를 분석하고 개선하는 비용 또한 증가한다. 하나의 데이터베이스에 대해 모든 추적 데이터에 대한 가동 저장소(running store)를 유지하는 것은 비용이 매우 비싸며, 그 비용은 다수의 데이터베이스에 대해 곱으로 증가한다. 그러므로 추적 데이터를 액세스하고 저장할 때를 전략적으로 선택하는 것이 필수적이다. 만약 첫 번째 데이터베이스가 특정한 문제를 겪는다면, 다양한 다른 데이터베이스들에 대한 그 문제에 대응하는 추적을 재생하는 것이 바람직할 수 있다. 경우에 따라서, 추가 정보를 수집하고 데이터베이스 문제의 가능한 원인을 잠재적으로 좁히기 위하여 재생하기 전에 추적 데이터가 변경된다. 이러한 변경된 추적들은 또한 많은 수의 데이터베이스에 대해 재생될 수 있다. 따라서, 수집, 변경 및 재생은 비싸고 번거로운 태스크가 될 수 있다. 데이터베이스 추적 데이터 축적, 분석 및 재생에 대한 전통적인 접근법은 프로파일러 어플리케이션을 운영하는 데에 너무 많은 사람의 시간을 연루시킬 수 있다.
상술된 본 분야에서 지금까지 예기치 못했던 어려움들의 견지에서, 추적 데이터를 수집하고 재생하기 위한 개선된 시스템 및 방법에 대한 확인되지 않고 충족되지 않는 요구가 있다.
본 분야의 상술된 단점들을 고려하여, 본 발명은 데이터베이스 추적 데이터(database trace data)의 프로그램적인 검색 및 재생을 위한 시스템 및 방법을 제공한다. 다수의 객체 - 추적 및 재생 객체들 - 가 커스텀 컴퓨터 프로세스(custom computer process)에 의해 인보크되면 자동으로 동작을 수행하도록 설계될 수 있다. 추적 데이터는 임의의 다양한 위치에 저장될 수 있다. 그것은 저장이나 재생 의 목적으로 다루어질 수 있다. 추적 데이터는 다양한 재생 구성 옵션을 사용하여 임의의 데이터베이스 서버에 대해 재생될 수 있다. 재생 통지는 데이터가 실행을 위해 데이터베이스에 제출되기 바로 전에 변화되는 것을 허용하며, 재생 결과의 즉각적인 검사 및 재생 정확성의 확인을 허용한다.
추적 및 재생 객체들은 몇 관점들로부터 추적 데이터의 관리를 매우 단순화한다. 커스텀 프로세스의 설계자들은 이제 추적된 데이터베이스 서버들의 보안 심사(security audit) 및 헬스 모니터링(health monitoring)을 완전히 자동화할 수 있다. 새로운 서버 릴리즈 및 보안 팩의 자동적인 검증 또한 수행될 수 있다. 커스텀 프로세스들은 융통성 있게 액세스하고, 데이터베이스 추적 데이터의 검색, 저장 및 재생을 다루기 위하여 제공된 객체들을 사용할 수 있다. 그러한 커스텀 프로세스들은 주어진 조직의 특정 요구를 만족시키는 방식으로 본 발명을 사용하도록 설계될 수 있다.
본 발명의 기타 이점 및 특성들이 이하 기술된다.
본 발명에 따른 데이터베이스 추적의 프로그램적인 검색 및 재생을 위한 API가 첨부되는 도면을 참조하여 기술된다.
본 발명의 다양한 실시예들에 대한 완전한 이해를 제공하기 위하여 소정의 특정 세부사항들이 이하의 상세한 설명 및 도면에서 설명된다. 그러나, 컴퓨팅 및 소프트웨어 기술과 관련된 잘 알려진 세부사항들은 종종 본 발명의 다양한 실시예들을 불필요하게 모호하게 하는 것을 방지하기 위하여 후술되는 기술에서 설명되지 않는다. 또한, 관련 분야에서 숙련된 지식을 가진 자들은 아래 기술된 하나 이상 의 세부사항들 없이도 본 발명의 다른 실시예들을 실행할 수 있다는 것을 이해할 것이다. 마지막으로, 후술되는 기술에서 단계 및 순서를 참조하여 다양한 방법들이 설명되고 있지만, 그러한 설명은 본 발명의 실시예들의 명확한 구현을 제공하기 위한 것이며, 단계들 및 단계들의 순서는 본 발명을 실행하기 위하여 요구되는 것으로 여겨져서는 안 된다.
본 발명의 다양한 양상들은 데이터베이스 추적 데이터의 프로그램적인 검색 및 재생을 위한 API에 속하는 것이다. 이러한 다양한 양상들을 완전히 개시하기 위하여, 본 설명은 API, 데이터베이스 및 추적 데이터를 정의함에 의해 시작할 것이다. 그 후 추적 데이터의 검색 및 재생을 설명할 것이다. 프로그램적인 검색 및 재생의 양상 및 구현들이 그 다음 논의될 것이다. 마지막으로, 본 발명의 다양한 실시예의 사용에 적합한 일반적인 컴퓨팅 및 네트워크 환경에 대한 설명이 제공된다.
어플리케이션 프로그래밍 인터페이스("API")는 다른 프로세스들이 함께 동작하도록 허용하는 컴퓨터 프로세스 또는 메커니즘이다. 운영 시스템 및 마이크로소프트 워드® 및 아도브 아크로바트 리더®와 같은 다양한 어플리케이션을 실행시키는 개인용 컴퓨터의 친숙한 설정에서, API는 어플리케이션들이 운영 시스템과 통신하도록 허용한다. 어플리케이션은 운영 시스템 서비스들을 인보크하기 위하여 운영 시스템 API로의 호출을 수행한다. 운영 시스템 API 뒤의 실제 코드는 동적 링크 라이브러리(dynamic link library, "DLL")의 컬렉션에 위치된다.
데이터베이스 소프트웨어는 또한 API를 제공할 수 있다. 데이터베이스 API 는 프로세스들이 데이터베이스 서비스들을 인보크하기 위하여 데이터베이스로의 호출을 수행하도록 허용한다. 마이크로소프트 SQL 서버®, IBM DB2®, 오라클 데이터베이스® 및 SYBASE IQ® 와 같은 현재의 데이터베이스 소프트웨어는 모두 API를 제공한다. 대다수의 기업 어플리케이션들은 오늘날 데이터베이스를 사용하고, 따라서 어플리케이션들이 데이터베이스를 액세스하고 조작하도록 허용하는 API 또한 사용한다. 클라이언트 측에서든지, 중간 계층 또는 서버 측 어플리케이션에서든지 가능한 가장 잘 반응하고 스케일링 가능한 데이터베이스 API를 갖는 이러한 어플리케이션들을 제공하는 것이 바람직하다. 이것은 특히 데이터 액세스-집약적 어플리케이션들에 대해 그러하다. 본 발명에서 제공된 API는 운영 시스템 API, 데이터베이스 API, 소정의 다른 어플리케이션이나 서비스에 대한 API로 결합될 수 있으며, 또는 독립형일 수 있다. 본 발명에서 제공된 펑션들은 특정 장치 또는 호스트 소프트웨어 환경으로 한정되지 않는다.
API는 운영 시스템, 어플리케이션 또는 서비스들이 인보크되는 기타 소프트웨어와 마찬가지로 컴퓨터 실행가능 명령어들의 형태로 구현될 수 있다. 이러한 명령어들은 많은 다른 형태들로 구현될 수 있다. 결국에는, 컴퓨터 프로세서에 의한 프로세싱을 위해 명령어들이 기계 판독가능 비트들로 축소된다. 그러나, 이러한 기계 판독가능 비트들의 생성에 앞서, API 구현을 다양한 형태로 전환하는 여러 계층의 펑셔널리티(functionality)가 있을 수 있다. 예를 들면, C++로 구현된 API는 일련의 사람 판독가능한 라인의 코드로서 먼저 나타날 것이다. 그 후 API는 프로세서에서의 실행을 위해 컴파일러 소프트웨어에 의해 기계 판독가능 코드로 컴파 일될 것이다.
최근, C++과 같은 프로그래밍 언어의 확산 및 PC 환경, 애플® 컴퓨터에 의해 제공된 환경, 포켓용 컴퓨터화된 장치, 휴대전화 등과 같은 실행 환경의 확산은, API 구현과 같은 프로그래밍 코드의 원래의 구현과 장치에서의 프로세싱을 위한 비트들로의 축소 사이의 펑셔널리티에 대한 추가 계층들에 대한 요구를 야기한다. 오늘날, C++과 같은 높은 수준의 언어로 처음에 생성된 컴퓨터 프로그램은 먼저 마이크로소프트® 중간 언어(MSIL) 또는 자바®와 같은 중간 언어로 전환될 수 있다. 중간 언어는 그 후 특정 환경에서 실행되기 전에 저스트-인-타임(Just-In-Time, JIT) 컴파일러에 의해 컴파일될 수 있다. 이것은 다수의 컴파일된 버전들을 분배할 필요없이 다양한 프로세싱 환경에서 코드가 실행되도록 한다. API가 구현될 수 있는 여러 수준 및 코드를 생성, 관리 및 프로세싱하기 위해 계속적으로 발전하는 기술의 견지에서, 본 발명은 특정 프로그래밍 언어 또는 실행 환경으로 한정되지 않는다. 본 발명의 다양한 양상을 설명하기 위해 선택된 구현은 관리된 마이크로소프트® .NET 클래스 라이브러리의 구현이다. 이러한 선택은 본 발명을 실행하고 설명하기에 편리한 환경을 제공하지만 이러한 구현으로 본 발명을 한정하고자 하는 의도는 아니다.
본 발명에서 상술된 API의 특성들은 데이터베이스 추적 데이터의 검색 및 재생을 자동화하기 위한 수단을 제공한다. 고려되는 시스템 및 방법의 다양한 실시예들이 도 3에 제공된다. 데이터베이스 성능을 분석하는 데에 관심있는 자들은 그들의 개인적 필요에 따라 추적 데이터(304b)를 수집, 조작 및 재생하기 위해 API(309)를 사용할 수 있는 커스텀 객체들(330,331,332)을 생성할 수 있다. 커스텀 객체들(330,331,332)에 의해 수행되는 잠재적인 동작들은 많은 프로그래머들의 기술 및 요구조건에 따라 변할 것이기 때문에 예측될 수 없다. 그러나 제공된 API(309)는 생성될 수 있는 다양한 객체들(330,331,332)에 대한 견고한 지원을 제공한다. 본 발명이 이 문서에 개시된 펑션들(310)의 집합으로 제한되지 않지만, 제공된 펑션들(310)은 개별적으로도 그룹으로서도 신규하고 유용한 것으로 고려된다. 이러한 펑션들(310)은 추적 데이터(304b)의 검색 및 재생의 자동화와 관련하여 아래 좀더 상세히 설명될 것이다.
커스텀 객체들(330,331,332) 및 설명에서 객체로서 식별되는 임의의 다른 구성요소들은 전형적으로 객체 지향 프로그래밍 기술을 사용하여 생성된 소프트웨어의 분리된 유닛들이다. 게다가, API(309) 자신이 하나 이상의 객체로서 구현될 수 있다. 그러한 하나의 예시적인 객체가 전형적인 COM 객체(1200)의 특성을 도해하는 도 12에 도시된다. 기타 객체 타입들이 본 분야에서 이용가능하고 널리 사용되며, 본 발명에서 기술된 객체(1200)는 설명을 위하여 제한을 가하지 않는 예로서 의도된다. 객체(1200)와 같은 객체들은 일반적으로 하나 이상의 인터페이스(1202, 1203, 1204)를 지원하고, 이들 각각은 메쏘드(1205)를 포함한다. 메쏘드(1205)는 전형적으로 특정 동작을 수행하고 소프트웨어에 의해 호출될 수 있는, 예를 들어 330, 331, 및 332와 같은 또다른 객체에 의해 호출될 수 있는 펑션 또는 프로시저이다. 그러한 호출하는 소프트웨어는 "서버" 객체(1200)의 "클라이언트"로서 언급된다. 인터페이스(1203)를 완전하게 하는 메쏘드(1205)는 대개 소정의 방식으로 서로에게 관련된다. 일반적으로, 클라이언트들은 객체의 인터페이스들(1202, 1203, 1204)에서 메쏘드(1205)를 인보크함으로써 객체(1200)에 의해 제공된 서비스들을 액세스할 수 있다. 클라이언트들은 일반적으로 객체의 데이터를 액세스하는 것이 금지된다. 본 발명에서 및 특허청구범위에서 객체에 의해 수행되는 것으로서 기술된 펑션들은 서로 인터페이스되도록 설계된 다수의 객체들을 통해서도 수행될 수 있다는 점이 유의되어야 한다.
전형적으로, 객체(1200)는 특정 클래스의 인스턴스이다. 예를 들어, 하나의 클래스는 데이터베이스 서버로의 연결을 오픈하기 위한 서비스들을 제공하는 객체들을 포함할 수 있고, 반면 또다른 클래스는 파일에 데이터를 기입하기 위한 객체들을 포함할 수 있다. 전형적으로, 프로그래머는 객체의 인스턴스를 실행하기에 앞서 그 객체의 클래스를 안다. 객체의 클래스는 클래스 라이브러리에서 검색될 수 있다. 그러한 라이브러리는 객체들의 모든 가용한 클래스들의 디렉토리에 액세스할 수 있다. 클라이언트는 원하는 객체의 클래스 및 포인터가 가리키길 원하는 첫 번째 지원되는 인터페이스를 지정하는 라이브러리 내의 펑션을 호출할 수 있다. 그러면 라이브러리는 그 클래스의 객체를 구현하는 서버가 실행을 시작하도록 한다. 라이브러리는 또한 새로 인스턴스화된 객체에서 요청된 인터페이스로의 포인터를 시작한 클라이언트에게 다시 전달한다. 그 후 클라이언트는 객체가 지원하는 임의의 다른 인터페이스로의 포인터들을 객체에게 직접 요구할 수 있다.
객체들에 의해 지원되는 인터페이스들은 일반적으로 객체와 클라이언트 간의 계약으로서 여겨진다. 객체는 인터페이스가 메쏘드들을 정의할 때 인터페이스의 메쏘드들을 지원할 것을 약속하며, 클라이언트들은 메쏘드들을 올바르게 인보크할 것을 약속한다. 따라서, 객체와 클라이언트들은 각 인터페이스를 명시적으로 식별하는 방식, 인터페이스에서 메쏘드들을 기술하거나 정의하는 공통 방식 및 인터페이스를 구현하는 방법에 대한 구체적인 정의에 동의해야 한다.
따라서, 객체들은 그들이 상속하는 클래스 파라미터들뿐만 아니라 그들이 상속하는 인터페이스 파라미터들의 용어로도 기술될 수 있다. 객체들의 클래스가 파일에 데이터를 기입하기 위한 펑션을 갖는 경우, 그 클래스를 상속하는 인스턴스도, 그 인스턴스에서 제공되는 임의의 추가 특성 및 펑션뿐만 아니라, 파일에 데이터를 기입하는 펑션을 가질 것이다. 클래스가 특정 인터페이스를 지원하는 경우, 그 클래스의 인스턴스는 "계약"을 상속하고, 따라서 해당 인터페이스를 지원한다. 본 발명의 소정의 양상들이 구현되는 객체들은 일반적으로 이러한 프로그래밍 원칙 및 객체들, 클래스들, 상속성 및 인터페이스에 대한 정의의 이해를 따른다. 그러나, 객체 지향 프로그래밍 기술로의 변경 및 개선들이 끊임없이 발생하고 있으며 본 발명은 특정 형태 혹은 임의의 특정한 특성을 갖는 객체들로 한정되지 않는다는 점은 명백히 되어야 한다. 제공된 API는 현재 사용중이거나 후에 개발되는 임의의 종류의 객체들을 통하여 구현될 수 있다.
데이터베이스는 전형적으로 하나 이상의 조직의 활동들을 기술하는 데이터의 컬렉션이다. 예를 들어, 대학 데이터베이스는 학생들, 교수단, 과목들 및 강의실과 같은 엔터티들 및 과목들에서 학생 등록자 수, 과목을 가르치는 교수단 및 과목에 대한 강의실 사용과 같은 엔터티들 간의 관계에 대한 정보를 포함할 수 있다. 데이터베이스 관리 시스템, 또는 DBMS는 데이터의 큰 컬렉션들을 유지하고 이용하는 데에 조력하도록 설계된 소프트웨어이다. 그러나 본 문서에서, "데이터베이스" 또는 "데이터베이스 서버"라는 용어는 데이터의 컬렉션과 DBMS 소프트웨어 중 하나 혹은 둘 다를 언급한다. 따라서, 도 1에서 데이터베이스(100), 도 3에서 데이터베이스(300), 도 6에서 데이터베이스(640)는 데이터의 컬렉션 및 DBMS 둘 다를 포함하는 데이터베이스 서버를 도시한다. 또다른 구별이 필요할 때 행해질 것이다.
여러 종류의 데이터베이스가 사용되고 있다. 첫 번째 데이터베이스 모델은 1960년대 초기에 제너럴 일렉트릭(General Electric)의 찰스 바흐만(Charles Bachman)에 의한 것으로 널리 알려진다. 이것은 통합된 데이터 저장소(Integrated Data Store)로 불리었으며, 네트워크 데이터 모델의 뒤를 이었다. 1960년대 후반에, IBM은 계층형 데이터 모델(hierarchical data model)에 대한 기초를 형성한 정보 관리 시스템(Information Management System)을 개발하였다. 1970년에는, IBM의 에드거 코드(Edgar Codd)가 데이터베이스의 개발에 있어서 하나의 분기점으로 알려진 관계형 데이터 모델(relational data model)을 제안하였다. 관계형 데이터베이스의 인기는 상업적 전망을 변화시켰다. 그것의 이득이 널리 인정되었고, 법인 데이터를 관리하기 위한 데이터베이스의 사용은 표준 관례가 되었다. 관계형 데이터베이스들은 오늘날 지배적으로 사용되는 모델이지만, 본 발명의 다양한 양상들은 추적 데이터를 보낼 수 있는 것으로서 현재 사용 중이거나 혹은 후에 개발되는 임의의 데이터베이스와 관련한 사용을 위해 적합하다.
예를 들어, 마이크로소프트 SQL 서버®, IBM DB2®, 오라클 데이터베이스® 및 SYBASE IQ®과 같은 다양한 DBMS 제품들은 데이터베이스의 기능을 매우 확장하였다. 데이터베이스들은 이미지 및 텍스트와 같이 다양한 형태의 데이터를 저장할 수 있고, 저장된 데이터에 대해 복잡한 쿼리를 수행할 수 있다. 데이터 웨어하우스들을 생성하고, 여러 데이터베이스로부터의 데이터를 통합하며, 특화된 분석을 수행하기 위한 특화된 시스템들이 다수의 판매업자에 의해 개발되고 있다. 모든 그러한 제품들 및 데이터베이스 구성들은 본 발명의 시스템 및 방법들과 관련한 사용에 적합하다.
데이터베이스들은 인터넷 시대를 개막하였다. 웹 브라우저를 통해 액세스된 데이터를 저장하기 위한 데이터베이스의 사용은 일반적인 것이다. 쿼리들이 웹 액세스가능한 서식을 통해 생성되고, 브라우저에 디스플레이될 수 있는 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language, HTML) 또는 확장성 마크업 언어(Extensible Markup Language, XML)와 같은 마크업 언어를 사용하여 답변들이 서식화된다. 점점 더 많은 데이터가 온라인화되고, 컴퓨터 네트워킹을 통해 훨씬 더 액세스하기 쉬워짐에 따라 데이터베이스는 계속해서 의의를 얻는다. 오늘날, 이 분야는 멀티미디어 데이터베이스, 대화형 비디오(interactive video), 스트리밍 데이터, 디지털 라이브러리, 과학 프로젝트의 호스트, 법인 데이터 통합 및 데이터 마이닝과 같은 약동하는 비전에 의해 운영되고 있다. 글로벌 컴퓨터 네트워크를 통한 데이터베이스로의 액세스는 일반적인 것이지만, 본 발명에서 제공된 시스템 및 방법들은 클라이언트와 데이터베이스 간의 연결의 거리나 형태에 상관없이 사용될 수 있다는 점이 명백히 되어야 한다.
데이터베이스 추적 데이터의 프로그램적 검색 및 재생을 위한 API가 제공된다. 상기에서는 일반적으로 API 및 데이터베이스를 기술한다. 이하에서는, 추적 데이터가 논의될 것이며, 추적 데이터의 검색 및 재생에 대한 논의가 뒤따르고, 프로그램적인 검색 및 재생에 대한 논의가 이어지며, 그것은 일반적으로 상술된 API의 특성들을 특정하게 지적하도록 제공할 것이다.
추적 데이터는 데이터베이스의 동작들을 나타내는 데이터이다. 도 3의 데이터베이스(300)와 같은 전형적인 데이터베이스는 임의의 수의 클라이언트들, 예를 들어 클라이언트들(301, 302, 303)에 대한 서비스들을 수행하도록 요청받을 것이다. 그러한 요청들은 일반적으로 SQL로 작성된 쿼리지만, 데이터베이스(300)와 같은 데이터베이스들이 점점 복잡해지고 더 넓은 범위의 서비스들을 제공함에 따라, 요청들의 형태 및 용량 또한 증가한다. 현대적인 데이터베이스들은 요청들 및 대응하는 데이터베이스 동작들에 대한 정보를 포함하는 추적 데이터의 스트림(304b)을 보낼 수 있다. 추적 데이터는 데이터베이스(300)가 무엇을 하도록 요청받는지 및 어떻게 그 요청들을 만족시키는지를 분석하는 데에 사용될 수 있다. 이러한 분석을 통해, 데이터가 어떻게 저장되는지, 쿼리들이 어떻게 관리되는지에 대한 관점 및 현대적인 데이터베이스들이 제공하는 기타 서비스들의 호스트의 관점에서 데이터베이스들이 개선될 수 있다.
추적 데이터는 데이터베이스로부터 임의의 포맷으로 전송될 수 있다. 전형적으로, 데이터베이스들은 연속적인 서비스들을 제공하기 때문에, 추적 데이터는 데이터 전송 프로토콜에 따라 조직화된 데이터의 일정한 스트림(304b)으로서 전송 된다. 추적 데이터 스트림(304b)으로의 연결을 오픈함에 의해, 클라이언트(304)는 데이터베이스(300)의 동작들을 분석하고 기록할 수 있다. 이러한 관점에서, 추적 데이터(304b)는 도 4에 제시된 바와 같이 전형적으로 세 위치들 중 하나에 저장된다. 이러한 위치들은 파일(403), 테이블(404) 및 서버(405)를 포함한다. 데이터베이스 추적 데이터(304b)가 본 분야에서 잘 이해될 것이므로, 추적 데이터(304)를 기록하기 위한 명확한 포맷에 대한 상세한 설명은 여기서 필수적인 것이 아니다. 추적 데이터(304b)가 임의의 포맷으로 기록될 수 있다는 것을 잘 알 것이다. 그러나 일반적으로 추적 데이터를 위한 포맷들은 파일(403), 테이블(404) 또는 서버(405) 중 어느 곳에 저장되는지에 상관없이 복수의 레코드 또는 소정의 독립적인 의미를 전달하는 분리된 유닛들을 포함할 수 있다.
추적 데이터(304b)가 전형적으로 어떻게 레코드들로 분할되는지에 대한 예로서, 추적 데이터가 전형적인 파일(403)에 저장되는 경우를 고찰한다. 그러한 파일(403)은 다음 레코드들을 포함할 수 있다.
헤더
2 바이트 - 헤더 길이
48 바이트 - 제공자 이름
2 바이트 - 제공자 버전
48 바이트 - 정의 형태
4 바이트 - 파일 옵션
48 바이트 - 추적된 서버 이름
데이터 섹션
각 새로운 데이터베이스 이벤트는 대개 TRACE_BEGIN_RECORD라는 특별한 열(column)로 시작되고, 그 뒤에는 열의 길이를 나타내는 한 바이트가 뒤따르며, 그 다음은 이벤트 식별자 및 이벤트의 전체길이가 이어진다. 그 후 이벤트에 대한 임의의 기타 열들이 기술된다. 각 이벤트 열 레코드는 열 식별자, 데이터 길이 및 데이터 자체에 대응하는 정보를 포함할 수 있다. 데이터 길이는 대개 한 바이트 필드이다.
상기는 추적 데이터가 추적 데이터 파일(403)의 레코드들로 어떻게 분할될 수 있는지에 대한 예를 제공한다. 테이블에 저장된 추적 데이터 및 서버에 저장된 추적 데이터에 대한 예시적인 레코드 분할은, 추적 데이터가 이러한 포맷들로 저장되는 것은 일반적인 것이기 때문에 본 발명에서는 기술되지 않으며, 일반적으로 원하는 레이아웃으로 추적 데이터를 포맷화하기 위하여 소정 파라미터들을 변경하면서 상기와 유사한 레코드들로 데이터를 분할하는 것을 포함한다. 상기 예는 추적 데이터가 임의의 수의 레코드들로 분할될 수 있고, 레코드들이 임의의 수의 방식들로 조직될 수 있다는 것을 보여주기에 충분하다. 본 발명은 추적 데이터 파일, 추적 데이터 테이블 또는 추적 데이터 서버에서의 레코드들에 대한 특정 수 또는 레이아웃으로 한정되지 않는다.
추적 데이터의 검색은 추적 데이터를 전자적으로 획득하는 것을 일컫는다. 본 발명의 다양한 실시예에서, 검색은 클라이언트(304)가 데이터베이스(300)로 추적 데이터에 대한 요청(304a)을 전송하는 도 3의 예와 같은 시나리오로 발생할 수 있다. 요청(304a)은 데이터베이스(300)나 소정의 다른 중간 프로세스(도시되지 않음)가 추적 데이터 스트림(304b)을 클라이언트(304)로 전송하도록 한다. 도 3이 추적 데이터의 전형적인 검색을 나타내지만, 아래 예시적인 컴퓨팅 및 네트워크 환경을 참조하여 설명된 것처럼 임의의 프로세스 또는 프로세스의 부분들이 도시되지 않은 임의의 수의 장치들에서 또는 장치들을 가로질러 실행될 수 있음을 잘 알 것이다.
추적 데이터의 검색은 도 4에서처럼 검색된 데이터를 저장하는 것을 동반할 수 있다. 추적 데이터는 파일(403), 테이블(404) 또는 서버(405)에 저장될 수 있다. 추적 데이터를 저장하는 프로세스는 데이터베이스(300)로부터 오는 처음 신호로부터 추적 데이터 스트림의 소정의 변환을 관련시킬 수 있다는 것을 유의해야 한다. 상기 설명된 것과 같이, 추적 데이터는 저장소에서 데이터의 원하는 특정 레이아웃 및 표현에 따라 많은 레코드들로 포맷화될 수 있다. 도 4에 제안된 것과 같이, 제공된 API(401)는 예시적인 커스텀 객체(400)가 추적 데이터의 검색을 요청하고, 파일(403), 테이블(404) 또는 서버(405)에서 추적 데이터의 저장을 지정하도록 허용한다. API(401)로 제출된 예시적인 요청들(410, 411 및 412)은 추적 데이터의 검색을 명기할 수 있다. API의 구현은 적절한 데이터베이스로 연결하고, 추적 데이터 스트림을 검색하며 적절한 출력을 403, 404 또는 405로 기입할 수 있다. 다양한 실시예에서, API는 예시적인 커스텀 객체(400)에 의해 저장 위치가 지시되지 않는 경우에 사용될 디폴트 저장 위치(예를 들어 403, 404 또는 405)를 자동으로 선택하도록 구성될 수 있다.
추적 데이터의 재생은 데이터베이스가 추적 데이터의 집합에 표현된 일련의 동작들과 동일하거나 관련된 일련의 동작들을 수행하도록 하는 것을 일컫는다. 예를 들어, 파일(403)에 저장된 추적 데이터의 집합을 고려한다. 문제의 추적 데이터 집합이, 데이터베이스(300)가 예를 들어, 부정확하거나 비정상적이거나 또는 시기를 놓친 결과를 클라이언트(301)에게 리턴함에 의해 비정상적으로 수행하도록 했거나, 또는 불안정하게 하거나 파손되게 하였다고 가정한다. 비정상으로 이끌었던 일련의 이벤트들을 조사하기 위하여, 데이터베이스(300)가 비정상으로 이끌었던 것들과 동일한 상태를 겪도록 하는 것이 바람직할 수 있다. 이러한 상황에서, 이전 요청들(예를 들어, 301a)을 복제하도록 서비스 요청들의 시퀀스를 공식화하기 위하여 파일(403)에 있는 추적 데이터의 적절한 집합이 사용될 수 있다. 요청들의 그러한 시퀀스를 제출하는 것은 결과적으로 추적 데이터의 재생에 해당한다. 추적 데이터를 재생하기 위한 동기들의 호스트가 있을 수 있으며, 비정상에 대한 조사는 단지 하나의 예일 뿐이라는 점이 유의되어야 한다. 본 발명의 시스템 및 방법은 그러한 재생을 시작하는 사람들의 목적이나 의도에 상관없이 추적 데이터를 재생하기 위하여 사용될 수 있다.
추적 데이터의 재생은 처음 추적을 전송했던 데이터베이스와 동일한 데이터베이스에 대한 것일 필요는 없다. 임의의 데이터베이스가 추적 데이터의 검색을 위해 선택될 수 있는 것과 마찬가지로, 임의의 데이터베이스가 재생을 위해 선택될 수 있다. 이것은 현실 책임을 갖는 데이터베이스로부터 분리된 테스트 목적으로 사용되도록 허용한다. 그것은 또한 바라는 대로 다양한 데이터베이스 플랫폼 및 제품에 대하여 추적 데이터의 재생을 허용한다.
파일(403)에서의 추적 데이터가 데이터베이스(300)로 재생될 수 있는 것과 마찬가지로, 테이블(404) 또는 서버(405)에서의 추적 데이터도 재생될 수 있다. 이러한 다양한 포맷으로 저장된 데이터는 재생을 위해 추적을 적절하게 포맷화하고 제출하기 위한 적합한 핸들링을 요구하지만, 임의의 포맷(403, 404, 405)으로 저장된 동일한 추적 데이터는 데이터베이스(300)에 대한 동일한 재생 시퀀스를 생성하기 위하여 사용될 수 있다. 도 4에 도시된 바와 같이, 예시적인 커스텀 객체(400)는 제공된 API(401)를 통해 추적 데이터의 재생을 요청할 수 있다. 요청은 추적 데이터를 재생하도록 지정할 수 있고, 또한 요청들(410, 411, 412)을 생성함으로써 데이터가 파일(403), 테이블(404) 또는 서버(405)에 저장된다는 것을 나타낼 수 있으며, 그러면 API 구현(430)은 추적 데이터가 상주하는 파일(403), 테이블(404) 또는 서버(405)로부터 지정된 집합의 추적 데이터를 검색하고 지정된 데이터베이스에 대하여 추적 데이터를 재생할 수 있다.
때때로 재생하기 전에 추적 데이터를 변경하는 것이 바람직하다. 예를 들어, 특정 유형의 쿼리가 문제의 원인이라고 의혹을 가질 수 있다. 이 이론을 테스트하기 위해 재생하기 전에 의혹 유형에 대한 많은 부가적 쿼리들이 저장된 추적 데이터의 집합으로 추가될 수 있다. 대안적으로 기존 추적 데이터 집합들의 개개의 레코드들을 변경하는 것이 이로울 수 있다. 게다가, 재생하기 전 추적 데이터의 변경이 바람직한 임의의 수의 이유들이 있을 수 있고, 본 발명은 여기서 API를 이용하는 자들의 특정 의도로 한정되지 않는다. 재생하기 전에 추적 데이터를 변 경하는 것이 바람직할 수 있기 때문에, 본 발명에서 사용된 재생이라는 용어는 기록된 추적 데이터에 대한 요청들과 동일한 요청들의 집합을 제출하는 것뿐만 아니라 기록된 추적 데이터에 대한 요청들에 관련된 요청들의 집합을 제출하는 것도 일컫는다. 도 4에 제시된 것과 같이, 제공된 API는 예시적인 커스텀 객체(400)가 요청들(410, 411 및 412)에서와 같이 추적 데이터의 변경을 요청하도록 허용한다. 그러면 API(401)의 구현(430)은 추적 데이터가 파일(403), 테이블(404) 또는 서버(405)에 위치하든지 상관없이 지정된 추적 데이터를 변경할 수 있다.
데이터베이스 추적 데이터의 프로그램적인 검색 및 재생을 위한 API가 제공된다. 상기 설명은 API, 데이터베이스, 추적 데이터 및 추적 데이터의 검색 및 재생을 일반적으로 설명하고 있다. 프로그램적인 검색 및 재생을 위한 시스템 및 방법이 이어서 설명되며, 그것은 상기에 일반적으로 설명된 API의 부가적인 특성들을 특히 지적할 것이다.
본 발명에서, 프로그램적이라는 용어는 자동화된 펑션들에 의해 액세스 가능하다는 것을 언급한다. 즉, 사람의 관여가 전혀 없이 또는 감소되어 프로그램적인 펑션을 트리거(trigger)하도록 컴퓨터화된 명령어들이 작성될 수 있다. 예를 들어, 마이크로소프트 워드®에 저장된 한 묶음의 숫자들을 갖는 컴퓨터 사용자를 고려한다. 사용자는 숫자들을 합산하기를 원한다. 합산을 하는 한가지 방법은 계산기 어플리케이션을 사용하는 것이다. 컴퓨터 사용자는 계산기 어플리케이션을 오픈하고 마우스 장치를 사용하여 적절한 숫자들을 선택하여 임의의 숫자들을 합산할 수 있다. 그러나 계산기 펑션은 전형적으로, 프로그램적으로 숫자들을 검색 및 합 산하는 기능을 드러내지 않는다. 합산할 매우 많은 숫자들 또는 숫자들의 많은 집합들을 갖는 사용자는 그러한 작업을 위하여 계산기 어플리케이션을 사용하는 것은 성가신 일이라 생각할 수 있다.
유사하게, 많은 양의 데이터베이스 추적 데이터 또는 그러한 추적 데이터의 여러 집합을 검색 및/또는 재생하고자 하는 컴퓨터 사용자는 "손으로" 그러한 작업을 하는 프로파일러 어플리케이션을 사용하는 것은 성가신 일이라 생각할 수 있다. 대신에, 그러한 사용자는 추적 데이터를 프로그램적으로 검색, 저장 및 재생하는 프로그램을 작성하는 것을 선호할 수 있다. 본 발명에서 다양한 양상 및 실시예와 관련하여 설명된 것과 같이, 사용자는 언제 추적 데이터를 검색해야 하는지, 그것을 어디서부터 검색해야하는지, 그것을 저장하는 방법, 변경하는 방법, 재생해야 할 때 등을 지정할 수 있다. 이러한 모든 동작들은 사용자 지정에 준하여 프로그램적으로 수행될 수 있다. 본 발명에서 설명된 시스템 및 방법을 사용하여, 그러한 프로그램의 생성이 상당히 용이해진다.
본 발명의 다양한 실시예에 따른 추적 데이터의 검색이 도 4 및 도 5에 도시된다. 도 4는 추적 데이터의 검색에 대한 프로세스 및 정황을 보여주는 반면, 도 5는 프로그램적인 검색 펑션을 제공하는 데에 사용된 객체(들) 및 인터페이스(들)의 구현을 도시한다. 도 4와 관련된 검색은 상기에 논의되며, 도 4에서 예시적인 구현이 하기에 논의된다.
도 5를 참조하면, 본 발명의 시스템 및 방법에 따른 API에 대한 구현을 보여주는 유니폼 모델링 언어(Uniform Modeling Language, UML) 다이어그램이 제공된 다. 도 5의 윗부분에, 엘리먼트(500)가, 예를 들어 서버 또는 데이터베이스로의 연결을 위한 것과 같은, 도 5의 다른 객체들로의 연결 정보를 제공하는 펑션들을 제공한다. 엘리먼트(501)는 다양한 다른 객체들에 의해 액세스될 수 있는 에러를 보고하기 위한 펑션들을 제공한다. 엘리먼트(502)는 데이터 레코드를 위한 인터페이스이며, 엘리먼트(504)는 데이터 검색을 위한 인터페이스이다. IDataReader 인터페이스(504)는 본 기술분야에서 널리 알려진다. 그것은 마이크로소프트®에서 릴리즈된 System.Data 네임스페이스에 정의된 관리된 인터페이스이다. 도 5에서 이러한 인터페이스(504)의 포함은 예시적인 API의 잠재적인 펑션들을 명확하게 식별하는 목적을 위한 것이며, 본 발명을 특히 IDataReader(504) 인터페이스로 한정하고자 하는 것은 아니다.
객체들(506, 507, 508, 509 및 510)은 IDataReader(504) 인터페이스로부터 상속한다. 객체들(508, 509 및 510)은 추적 데이터를 각각 서버, 테이블 및 파일로 검색하는 펑션들을 제공한다. 파일, 테이블 또는 서버로 데이터를 판독 및 기입할 때 상이한 집합의 동작들이 요구되기 때문에, 이러한 펑션들에 대한 개별적인 객체들이 유익하다. 서버의 경우에, 레코드의 변경을 위한 추적 데이터로의 액세스는 전형적으로 불가능하므로, 객체(508)는, 객체들(509 및 510)처럼 객체(507)로부터 상속하지 않고, 객체(506)로부터 직접 상속한다. 파일에서 추적 데이터를 검색하고 그것을 저장하기 위해 객체(508)에 의해 제공된 펑션들은, 서버에서의 저장을 위해 추적 데이터를 포맷화하는 TraceServer(), 지정된 서버로부터 추적 데이터의 검색을 시작하는 Start(), 지정된 서버로부터 추적 데이터의 진행중인 검색을 잠시 중단하는 Pause() 및 지정된 서버로부터 추적 데이터의 진행중인 검색을 중지하는 Stop()을 포함한다. 객체(508)는 객체(506)로부터 상속하기 때문에, 객체(508) 또한 들어오는 데이터를 판독하기 위한 펑션 Read() 및 데이터가 저장된 위치를 닫는 펑션 Close()를 제공한다. 또한, 객체(508)는 IDataReader 인터페이스(504)에 지정된 펑션들을 제공한다. 이러한 펑션들을 제공함으로써, 객체(508)는 사용자가 이러한 펑션들을 프로그램적으로 액세스하고 그것에 의해 자동화하는 것을 허용한다.
객체들(509 및 510)은 객체(507)뿐만 아니라 객체(506)로부터 상속하는 것으로 도시된다. 이것은 상술된 이유로, 즉, 바람직한 실시예에서, 추적 데이터가 객체(509)에서처럼 테이블에, 또는 객체(510)에서처럼 파일에 저장될 때 레코드 변경 펑션들을 제공하기 위해 유익하다. 이것을 달성하기 위하여, 객체(507)는 객체(506)로부터 상속하고, 저장된 추적 데이터의 레코드들을 변경할 수 있는 부가적인 기입 펑션을 제공한다. 도 5에 도시된 바와 같이, 기입 펑션은 ITraceDataWriter 인터페이스(505)를 따르는데, 이것은 데이터를 기입하고, 적합한 객체에게 그러한 기입 동작을 정확히 통지하기 위한 요구조건들을 셋업한다. 차례로, 인터페이스(505)는 설정된 IDataRecord 인터페이스(502)로부터 상속하는 IdataRecordChanger 인터페이스(503)를 사용한다. IDataRecordChanger 인터페이스(503)는 도 9에서 또다른 형태로 도시된다.
도 9의 실시예에서, 두 가지 방법이 IDataRecordChanger 인터페이스를 위해 지정된다. 숙련된 지식을 가진 자들은 본 발명의 기본적인 동작을 변경하지 않고 서 다른 또는 부가적인 방법들이 그러한 인터페이스에 지정될 수 있다는 점을 인정할 것이다. 도 9에 도시된 바와 같은 인터페이스의 목적은 데이터가 기입되거나 재생될 때 데이터를 변경하기 위한 수단을 제공하는 것이다. 이러한 점에서, 메쏘드 SetValue()는 대체될 열의 인덱스(int i)를 가질 수 있고, 그 위치에 새로운 값(object value)을 놓을 수 있다. 한편, 메쏘드 AddColumn()은 추적 데이터에 새로운 열을 추가한다. 이러한 점에서, 열 식별자(int columnid)는 독립변수로서 그러한 메쏘드에 제공되고, 새로 생성된 열에 대한 인덱스가 리턴될 수 있다.
따라서, 또다른 인터페이스(502)에 따라 전달된 추적 데이터 레코드들을 변경하기 위한 요구조건들을 지정하기 위해 인터페이스(503)를 사용하는 것은 궁극적으로 객체들(509 및 510)이 레코드 변경 동작들을 수행하도록 한다. 그러한 레코드 변경이 재생의 목적으로 유용하다. 본 발명에서 제공된 자동화된 재생 기술과 관련하여 사용될 때, 추적 데이터의 동작 중 변경 및 재생은 이전에 결코 달성된 적 없는 강력한 데이터베이스 분석을 제공하도록 한다.
객체들(509 및 510)에 의해 상속된 모든 펑션들은 사용자들, 예를 들어 예시적인 커스텀 객체(400)에 의해 프로그램적으로 액세스 가능하다. 따라서, 객체들(509 및 510)이 데이터베이스 스트림으로부터 UML 다이어그램에서의 TraceTable() 및 TraceFile() 표기에 의해 나타난 바와 같이 각각 테이블 또는 파일에 추적 데이터를 기입할 수 있지만, 객체(507)로부터의 상속성에 의하여 테이블 및 파일에 저장된 레코드들의 변경 또한 지원한다. 또한, 객체(506)로부터의 상속성에 의하여, 데이터베이스 추적 스트림을 판독하고 데이터베이스 추적 스트림으로의 연결을 닫 는 펑션들 또한 객체들(509 및 510)에 의해 지원된다. UML 다이어그램을 이해하는 자들은 이것을 잘 알 것이며, 또한 IDataReader 인터페이스(504) 및 그 인터페이스로부터 상속된 대응하는 예시적인 펑션들 또한 인지할 것이다.
이제 데이터베이스 추적 데이터의 프로그램적인 재생을 지원하는 본 발명의 실시예들로 옮겨가 도 6, 도 7, 도 8, 도 9, 도 10 및 도 11을 참조한다. 도 6은 추적 데이터의 프로그램적인 재생을 허용하는 API를 통하여 수행될 수 있는 다양한 동작들을 도식적으로 도시하는 다이어그램을 제공한다. 도 7부터 도 11은 재생 펑션들을 액세스하도록 노출될 수 있는 다양한 호출에 대한 정보를 제공한다. 여기서는 UML 다이어그램이 제공되지 않는다는 점이 유의되어야 하며, 그것은 그러한 다이어그램이 흥미롭거나 유용하지 않을 것이기 때문이다. 바람직한 실시예에서, 이것은 재생 펑션 객체들이 임의의 이전에 존재했던 객체들로부터 상속할 필요가 없기 때문이다. 즉 그것은, 상속성을 이용하는 본 발명의 구현이 확실히 고안될 수 있다는 것을 말해준다.
도 6으로 돌아가서, 다시, API(601)로의 다양한 펑션 호출(610, 611, 612)을 할 수 있는 예시적인 커스텀 객체(600)가 제공된다. API(601)는 자신에게 요청되는 다양한 동작들을 수행하기 위한 구현(630)에 의하여 지원될 수 있다. 구현(630)은 도 12와 같이 본 발명에서 논의된 다양한 객체 지향 설계 원리들을 이용할 수 있다. 요청된 펑션들을 수행할 때, API 구현(630)은 파일(603)에 저장된 추적 데이터, 테이블(604)에 저장된 추적 데이터 및 서버(605)에 저장된 추적 데이터를 액세스 및/또는 변경할 수 있다. 구현(630)은 또한 603, 604 및 605의 추적 데이 터에 관련된 일련의 쿼리 또는 다른 통신들을 공식화하고 데이터베이스(640)로 전송할 수 있다. 구현은 추가적인 분석을 위해 603, 604 또는 605로 그러한 데이터를 다시 저장하기 위해 추적 데이터 스트림 리턴(642)을 동시에 검색할 수 있다.
API는 추적 데이터의 재생을 시작, 잠시 중단 또는 중지하기 위한 기능(610)을 노출할 수 있다. 이러한 특성들은 객체들의 추적 재생 클래스를 위한 의사 코드 정의를 제공하는 도 7에서 설명된다. 도 7에 제공된 것과 같이 호출을 행하는 커스텀 객체(600)는 임의의 수의 시작 파라미터들과 함께 재생을 시작하기 위한 시작 동작을 지정할 수 있다. 그러한 파라미터들은 재생될 추적의 위치, 재생 시간, 재생을 위한 데이터베이스 등을 지정할 수 있다. 유사하게, 도 7에 도시된 것과 같이, 잠시 중단 및 중지 펑션들이 예시적인 커스텀 객체(600)에 의해 액세스될 수 있다.
API는 또한 임의의 수의 이벤트의 발생 시 통지(611)를 요청하는 기능을 드러낼 수 있다. 그러한 통지는 추적 데이터를 재생할 때 더 유용한 이점을 위하여 커스텀 객체(600)에 의해 사용될 수 있다. 이러한 커스텀 통지들은 또한 도 7에 도시된다. 예를 들어, 커스텀 객체(600)는 재생을 시작하기 전에 통지를 요청할 수 있다. 이것은 또한 도 7의 "event ReplayNotifyDelegate..." 줄에 의해서도 보여진다. 이러한 특성은 커스텀 객체(600)가 예를 들어, 재생 직전에 추적 데이터를 검사하고, 원하는 대로 다양한 레코드에 임의의 변경을 행하도록 허용한다. 유사하게, 통지는 "event ReplayPauseDelegate ReplayPauseNotify" 줄에 의해 도 7에 나타난 바와 같이, 재생이 잠시 중단될 때 요청될 수 있다. 통지는 "event ReplayPauseDelegate ReplayStartNotify"에 의해 도 7에 나타난 바와 같이 재생이 재시작될 때, 또는 "event ReplayStopDelegate ReplayStopNotify" 줄에 의해 도 7에 나타난 바와 같이 추적 데이터 재생이 중지될 때 요청될 수 있다. 통지는 "event ReplayOutputNotifyDelegate ReplayOuputNotify" 줄에 의해 도 7에 나타난 바와 같이, 특정 재생으로부터의 추적 데이터 출력이 준비되었을 때 요청될 수 있다. 역으로, 커스텀 객체(600)는 통지에 대한 요청(611)을 할 수 없고, 단순히 이러한 이벤트들을 무시하도록 선택할 수 있다.
추적 데이터의 변경 및 재생을 통합하기 위하여 커스텀 객체(600)에 의해 이러한 통지들(611)이 사용될 수 있는 방식은 제한되지 않는다. 그러한 객체들이 본 발명의 범위를 넘어서는 부가적인 특성들 또한 포함하는지에 관계없이, 본 발명의 범위는 개시된 API의 사용 및 API를 사용하는 객체들로 확장된다. 본 발명에 개시된 바와 같이 추적 데이터를 재생하기 위한 API를 통하여 통지를 제공하는 개념은 본질적으로 제공된 API를 사용하는 커스텀 객체들의 유연하고 강력한 설계를 지원할 진보된 개념이다.
도 6의 통지(611a)는 API(601)로부터 커스텀 객체로의 통지 신호를 나타낸다. 도 7의 언어에 의해 제시된 것처럼 이벤트 객체들 또는 .NET delegate와 같은 본 분야에서 잘 알려진 임의의 형태의 통지가 사용될 수 있다는 점을 잘 알 것이다. .NET delegate가 콜백 통지(callback notification)를 위하여 사용되는 다양한 바람직한 실시예에서, 통지 이벤트들은 도 8에 도시된 것처럼 선언될 수 있다. 여기서의 예는 약간의 구현 차이를 갖는 다른 실시예들로 확장될 수 있다. 도 8에 도시된 바와 같이, ReplayNotifyDelegate는 서브젝트 통지(subject notification) 관련 데이터를 선언할 수 있다. 이것은 또한 다른 예시적인 통지 이벤트들에 대해서도 그러하다.
도 8에 도시된 통지 이벤트들은 이벤트 핸들러가 통지에 응답하여 적절한 동작을 지적으로 선택하도록 하기 위해 충분한 정보를 전달하도록 설계된다. 이러한 통지들은 또한 재생의 실행에 영향을 주는 메커니즘들을 포함할 수 있다. 이러한 점에서, 다음 예시적인 정보가 도 8과 같은 통지 이벤트들과 함께 포함될 수 있다.
RecordNumber - 재생될 추적 레코드의 행 수를 지정할 수 있다.
currentRecord - 현재 재생되고 있는 추적 레코드일 수 있다. 커스텀 객체는 그러한 레코드의 열들을 검사하고, 직접 변경할 수 있다.
skipRecord - "진실(true)"로 스킵 레코드 플래그를 설정함으로써, 커스텀 객체 핸들러는 API가 특정 추적 레코드를 재생하지 않도록 요구할 수 있다.
도 7에 도시된 부가적인 특성들은 먼저, 여기서 "TraceReaderWriter Output" 펑션으로 식별되는 펑션이다. 사용된 언어에 의해 암시되는 것처럼, 이것은 재생의 결과로서 데이터베이스에 의해 전송된 추적 데이터 출력을 커스텀 객체(600)가 검색하는 것을 허용한다. 그러한 출력 데이터는 저장에 앞서 변경될 수 있다. "ConnectionInfoBase Connection" 펑션은 커스텀 객체가 데이터베이스 또는 기타 적합한 서버로의 연결에 관련된 정보를 지정하도록 허용한다. 예를 들어, 특정 데이터베이스 어드레스 및 통신 프로토콜이 지정될 수 있다. 그러면 API는 커스텀 객체(600)에 의해 요청된 것과 같은 시점에 지정된 데이터베이스로의 연결을 프로 그램적으로 오픈할 수 있다.
도 7과 관련하여 마지막으로, "TraceReplayOptions" 펑션은 커스텀 객체(600)가 임의의 수의 부가적인 옵션을 지정하도록 허용한다. 바람직한 API에서 이용가능할 수 있는 예시적인 옵션들이 도 10에 도시된다. 추적 데이터 API에 대한 옵션들을 제공하는 객체는 도시된 다섯 가지 옵션 중 임의의 옵션뿐만 아니라 유용한 것으로 고안되거나 여겨질 수 있는 임의의 다른 옵션들을 제공할 수 있다. 재생 스레드 풀(replay thread pool)의 크기가 제어될 수 있다. 이러한 옵션은 재생이 너무 많은 스레드를 오픈하는 것 및 시스템 자원들에 많은 부담을 주는 것을 방지하기 위하여 이용될 수 있다. 정지된 채 있는 프로세스를 "죽이기(killing)" 또는 끝내기(terminating)에 앞서 대기 시간(wait time)이 지정될 수 있다. 예를 들어, 만약 데이터베이스로의 연결이 적절히 실행되고 있지 않으면, 그 프로세스는 끝내기 전에 지정된 시간만큼을 부여받을 수 있다. 정지된 채 있는 프로세스를 폴링(polling)하는 빈도가 설정될 수 있다. 이것은 얼마나 많은 시스템 자원들이 폴링에 전념되어야 하는지를 사용자가 지정하도록 허용한다. 매우 안정된 환경에서, 덜 빈번한 폴링이 바람직할 것이다. 재생 모드가 지정될 수 있다. 이러한 옵션은 도 11에서 더 설명된다. 본 발명에서 두 가지 모드가 고려된다. 첫째는, 추적 데이터가 추적 데이터 저장 장소에 수집되었던 순서와 동일한 순서로 데이터베이스에 재생되는 순차적 재생 모드(sequential replay mode)이다. 둘째는, 특정 클라이언트에 관련된 모든 이벤트들은 순차적으로 재생되지만, 이벤트들의 임의의 글로벌 시퀀스는 유지되지 않는, 즉 클라이언트 요청들이 서로 독립적인 것으로 가정되는 "연결 레벨 동조(connection level synchronized)" 모드이다. 예를 들어, 만약 하나의 클라이언트가 특정 데이터베이스에 대한 요청의 십분의 일을 발생하였다면, 본 발명의 양상은 데이터베이스 요청의 동일한 십분의 일이 데이터베이스에 대해 순차적으로 재생되도록 허용한다. 본 발명에서 프로그램적으로 액세스될 수 있는 기타 함수들과 마찬가지로, 이것은 재생의 세부사항들에 대한 유연한 제어를 허용한다.
마지막으로, 도 10을 다시 참조하여, 객체는 실제 데이터베이스 쿼리 결과들이 리턴되어야 하는지 또는 단순히 에러를 발생시킨 동작들에 대한 결과만이 리턴되어야 하는지를 지정할 수 있다. 이러한 옵션은 본 발명의 유용한 양상을 강조하는데, 즉, 추적 데이터 외에 실제 결과들(쿼리 결과 또는 에러)이 재생하는 동안 수집될 수 있고, 또한 이러한 특성은 재생 옵션들의 제어를 제공하는 객체에 의해 제어될 수 있다.
따라서, 본 발명에 개시된 API 및 다양한 지원 객체들은 여러 관점으로부터 추적 데이터의 관리를 매우 단순화한다. 첫째, 그것들은 사용자가 추적된 서버의 보안 심사 및 헬쓰 모니터링을 완전히 자동화하는 것을 가능하게 한다. 둘째, 그것들은 새로운 서버 릴리즈 및 보안 팩의 자동적인 펑션 검증을 허용한다.
예시적인 컴퓨팅 및 네트워크 환경
도 2a를 참조하면, 본 발명의 시스템 및 방법과 관련된 사용에 적합한 예시적인 컴퓨팅 장치(200)가 개괄적으로 설명된다. 가장 기본적인 구성에서, 장치(200)는 전형적으로 프로세싱 유닛(202) 및 메모리(203)를 포함한다. 컴퓨팅 장치 의 정확한 구성 및 형태에 따라, 메모리(203)는 휘발성(예를 들어, RAM), 비휘발성(예를 들어, ROM, 플래시 메모리 등) 또는 둘의 임의의 조합일 수 있다. 부가적으로, 장치(200)는 자기 또는 광학 디스크 또는 테이프와 같은 대용량의 저장소(분리형(204) 및/또는 비분리형(205)) 또한 가질 수 있다. 유사하게, 장치(200)는 키보드 및 마우스와 같은 입력 장치들(207) 및/또는 컴퓨팅 장치(200)의 함수들을 액세스하는 그래픽적인 원조로서 GUI를 제공하는 디스플레이와 같은 출력 장치들(206) 또한 가질 수 있다. 장치(200)의 기타 양상들은 유선 또는 무선 매체를 사용하는 기타 장치들, 컴퓨터, 네트워크, 서버 등으로의 통신 연결들(208)을 포함할 수 있다. 이러한 모든 장치들은 본 기술 분야에서 널리 알려지므로 여기서는 장황하게 논의될 필요가 없다.
도 2b는 도 2a로부터의 적합한 컴퓨팅 장치 및 주변 시스템들의 다소 더욱 세부적인 예를 도시한다. 컴퓨팅 시스템 환경(220)은 단지 적합한 컴퓨팅 환경의 하나의 예일 뿐이며, 본 발명의 사용 또는 기능의 범위에 대해 어떠한 제한을 가하고자 하는 것은 아니다. 예시적인 운영 환경(220)에 도시된 컴포넌트들 중 임의의 하나 혹은 조합에 관련되어 임의의 의존성 또는 요구조건을 가지는 것으로 해석되어서는 안 된다.
본 발명은 다양한 기타의 범용 혹은 특별한 목적을 갖는 컴퓨팅 시스템 환경이나 구조에서 동작 가능하다. 본 발명에서 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구조의 예는 개인용 컴퓨터, 서버 컴퓨터, 포켓용 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로 프로세서 기반 시스템, 셋탑 박스, 프로그래밍 가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상술된 시스템이나 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만 이들로 제한되는 것은 아니다.
본 발명은 프로그램 모듈과 같이 컴퓨터에 의해 실행되는 컴퓨터 실행가능한 명령어의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 연결된 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하여 로컬 및 원격 컴퓨터 저장 매체 모두에 위치될 수 있다.
도 2b을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(241)의 형태로 범용 컴퓨팅 장치를 포함한다. 컴퓨터(241)의 컴포넌트들은 프로세싱 유닛(259), 시스템 메모리(222) 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트들을 프로세싱 유닛(259)으로 연결하는 시스템 버스(221)를 포함하지만 이들로 제한되지는 않는다. 시스템 버스(221)는 메모리 버스나 메모리 컨트롤러, 주변 버스 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 형태의 버스 구조 중 임의의 것일 수 있다. 제한을 가하지 않는 예로서, 그러한 아키텍처는 산업 표준 아키텍처(Industry Standard Architecture:ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture:MCA) 버스, 강화된 ISA(EISA) 버스, 비디오 전자 표준 협회(Video Electronics Standards Association:VESA) 로컬 버스 및 Mezzanine 버스로도 알려진 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect:PCI) 버스를 포함하며, 이들로 제한되지는 않는다.
컴퓨터(241)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(241)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 제한을 가하지 않는 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체와 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체 모두를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(241)에 의해 액세스될 수 있는 기타 매체를 포함하며, 이들로 제한되지는 않는다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파나 기타 전송 메커니즘과 같은 변조된 데이터 신호에서의 기타 데이터를 포함하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호에 있는 정보를 암호화하기 위한 방식으로 설정 또는 변화된 하나 이상의 특성을 갖는 신호를 의미한다. 제한을 가하지 않는 예로서, 통신 매체는 유선 네트워크나 직접 유선연결된 연결과 같은 유선 매체와 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상기 임의의 것의 조합 또한 컴퓨터 판독가능 매체의 범위에 포함되어야 한다.
시스템 메모리(222)는 ROM(223)과 RAM(260) 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시작할 때 등에, 컴퓨터(241) 내의 구성요소들 사이에 정보 전달을 돕는 기본적인 루틴들을 포함하는 기본적인 입력/출력 시스템(224)(BIOS)은 전형적으로 ROM(223)에 저장된다. RAM(260)은 전형적으로 직접 액세스 가능하고/하거나 현재 프로세싱 유닛(259)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한을 가하지 않는 예로서, 도 2b는 운영 시스템(225), 어플리케이션 프로그램(226), 기타 프로그램 모듈(227) 및 프로그램 데이터(228)를 도시한다.
컴퓨터(241)는 또한 기타 분리형/비분리형인 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 단지 예로서, 도 2b는 비분리형 비휘발성 자기 매체를 판독하거나 기입하는 하드 디스크 드라이브(238), 분리형 비휘발성 자기 디스크(254)를 판독하거나 기록하는 자기 디스크 드라이브(239) 및 CD ROM이나 기타 광학 매체와 같은 분리형 비휘발성 광학 디스크(253)를 판독하거나 기록하는 광학 디스크 드라이브(240)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 기타 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만 이들로 제한되지는 않는다. 하드 디스크 드라이브(238)는 전형적으로 인터페이스(234)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(221)로 연결되고, 자기 디스크 드라이브(239) 및 광학 디스크 드라이브(240)는 전형적으로 인터페이스 (235)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(221)로 연결된다.
상술되고 도 2b에 도시된 드라이브들과 관련 컴퓨터 저장 매체는 컴퓨터(241)에 대해 컴퓨터 판독가능 명령어들, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 예를 들어 도 2b에서, 하드 디스크 드라이브(238)는 운영 시스템(258), 어플리케이션 프로그램(257), 기타 프로그램 모듈(256) 및 프로그램 데이터(255)를 저장하는 것으로 도시된다. 이러한 컴포넌트들은 운영 시스템(225), 어플리케이션 프로그램(226), 기타 프로그램 모듈(227) 및 프로그램 데이터(228)와 동일할 수도 있고 다를 수도 있다는 점을 유의해야 한다. 운영 시스템(258), 어플리케이션 프로그램(257), 기타 프로그램 모듈(256) 및 프로그램 데이터(255)는 여기서 최소한 그것들이 다른 것들이라는 것을 도시하기 위하여 다른 번호를 부여받는다. 사용자는 키보드(251) 및 일반적으로 마우스, 트랙볼 또는 터치패드로서 언급되는 포인팅 장치(252)와 같은 입력 장치를 통해 컴퓨터(241)로 명령어 및 정보를 입력할 수 있다. 기타 입력 장치들(도시되지 않음)은 마이크, 조이스틱, 게임 패드, 위성 디쉬, 스캐너 등을 포함할 수 있다. 이러한 장치들과 기타 입력 장치들은 종종 시스템 버스로 연결되는 사용자 입력 인터페이스(236)를 통해 프로세싱 유닛(239)으로 연결되는데, 기타 인터페이스 및 병렬 포트, 게임 포트 또는 USB와 같은 버스 구조에 의해 연결될 수 있다. 모니터(242)나 다른 종류의 디스플레이 장치 또한 비디오 인터페이스(232)와 같은 인터페이스를 통해 시스템 버스(221)로 연결된다. 모니터 외에, 컴퓨터는 스피커(244)와 프린터(243) 같은 기타 주변 출력 장치들을 포함할 수 있고, 그것은 출력 주변 인터페이스(233)를 통해 연결될 수 있다.
컴퓨터(241)는 원격 컴퓨터(246)와 같은 하나 이상의 원격 컴퓨터들로의 논리적 연결을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(246)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 기타 공통 네트워크 노드일 수 있으며, 도 2b에는 메모리 저장 장치만이 도시되지만 전형적으로 컴퓨터(241)와 관련되어 상술된 구성요소들 중 다수 혹은 모두를 포함한다. 도 2b에 도시된 논리적 연결들은 근거리 통신망(LAN)(245)과 광역 통신망(WAN)(249)을 포함하지만, 다른 네트워크들도 포함할 수 있다. 그러한 네트워킹 환경들은 사무실, 기업 규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(241)는 네트워크 인터페이스나 어댑터(237)를 통해 LAN(245)으로 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(241)는 전형적으로 인터넷과 같은 WAN(249)을 거쳐 통신을 설정하기 위한 모뎀(250)이나 다른 수단을 포함한다. 내장되거나 외장일 수 있는 모뎀(250)은 사용자 입력 인터페이스(236)나 기타 적합한 메커니즘을 통해 시스템 버스(221)로 연결될 수 있다. 네트워크 환경에서, 컴퓨터(241)와 관련되어 기술된 프로그램 모듈이나 그들의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 제한을 가하지 않는 예로서, 도 2b는 원격 어플리케이션 프로그램들(248)을 메모리 장치(247)에 상주하는 것으로 도시한다. 도시된 네트워크 연결들은 예시이고, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단들이 사용될 수 있다는 것을 잘 알 수 있을 것이다.
본 발명에서 설명된 다양한 기술들이 적절한 하드웨어 또는 소프트웨어, 또는 둘의 조합과의 연결로 구현될 수 있다는 점이 이해되어야 한다. 따라서, 본 발명의 방법 및 장치, 또는 그들의 어떠한 양상 또는 부분들은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 프로그램 코드가 컴퓨터와 같은 기계로 로드되고 기계에 의해 실행될 때 그 기계가 본 발명을 실행하는 장치가 되는 기타 기계 판독가능 저장 매체와 같은 실체적인 매체에서 구현된 프로그램 코드(즉, 명령어들)의 형태를 취할 수 있다. 프로그램가능한 컴퓨터에서 프로그램 코드가 실행되는 경우에, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 구성요소들을 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 본 발명과 관련하여 설명된 프로세스들을 구현 또는 이용할 수 있는 하나 이상의 프로그램이 예를 들어, API, 재사용가능한 제어 등의 사용을 통하여 본 발명과 관련하여 기술되었다. 그러한 프로그램들은 컴퓨터 시스템과 통신하기 위하여 높은 수준의 절차적 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 원한다면 프로그램(들)은 어셈블리 또는 기계 언어로 구현될 수 있다. 임의의 경우에, 언어는 컴파일 언어 또는 인터프리티드 언어일 수 있으며, 하드웨어 구현과 결합될 수 있다.
예시적인 실시예들이 하나 이상의 자립형 컴퓨터 시스템의 문맥에서 본 발명을 이용하는 것을 언급하고 있지만 그렇게 제한되지 않으며, 오히려 네트워크 또는 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 함께 구현될 수 있다. 또한, 본 발명은 다수의 프로세싱 칩 또는 장치에서 또는 이들을 거쳐 구현될 수 있고, 유사 하게 저장은 다수의 장치에 걸쳐 이루어질 수 있다. 그러한 장치들은 개인용 컴퓨터, 네트워크 서버, 포켓용 장치, 슈퍼컴퓨터, 또는 자동차 및 비행기와 같은 기타 시스템으로 통합된 컴퓨터를 포함할 수 있다.
예시적인 네트워크 컴퓨팅 환경이 도 2c에 제공된다. 본 분야에서 일반적인 기술 중 하나는 네트워크가 임의의 컴퓨터 또는 기타 클라이언트 또는 서버 장치 또는 분산 컴퓨팅 환경에 연결할 수 있다는 점을 잘 알 수 있다. 이러한 점에서, 임의의 수의 프로세싱, 메모리 또는 저장 유닛 및 동시에 발생하는 임의의 수의 어플리케이션 및 프로세스를 갖는 임의의 컴퓨터 시스템 또는 환경이, 제공된 시스템 및 방법과 관련된 사용에 적합한 것으로 고려된다.
분산 컴퓨팅은 컴퓨팅 장치들과 시스템들 사이의 교환에 의하여 컴퓨터 자원 및 서비스의 공유를 제공한다. 이러한 자원 및 서비스들은 파일에 대한 정보의 교환, 캐쉬 저장 및 디스크 저장을 포함한다. 분산 컴퓨팅은 네트워크 연결성을 이용하여, 클라이언트가 전체 기업에 이득을 주기 위하여 그들의 집합적인 능력에 영향을 주는 것을 허용한다. 이러한 점에서, 다양한 장치들이 본 발명에서 기술된 프로세스들을 포함할 수 있는 어플리케이션들, 객체들 또는 자원들을 가질 수 있다.
도 2c는 예시적인 네트워크 또는 분산 컴퓨팅 환경의 도식적인 다이어그램을 제공한다. 환경은 객체들(273, 274 및 275) 및 데이터베이스(278)뿐만 아니라 컴퓨팅 장치들(271, 272, 276 및 277)을 포함한다. 이러한 컴포넌트들(271, 272, 273, 274, 275, 276, 277 및 278) 각각은 프로그램들, 메쏘드들, 데이터 저장소들, 프로그램 가능한 로직 등을 포함하거나 이용할 수 있다. 컴포넌트들(271, 272, 273, 274, 275, 276, 277 및 278)은 PDA, 오디오/비디오 장치, MP3 플레이어, 개인용 컴퓨터 등과 동일하거나 다른 장치들의 부분에까지 걸칠 수 있다. 각 컴포넌트(271, 272, 273, 274, 275, 276, 277 및 278)는 통신 네트워크(270)에 의해 또다른 컴포넌트(271, 272, 273, 274, 275, 276, 277 및 278)와 통신할 수 있다. 이러한 점에서, 임의의 엔터티는 데이터베이스(278) 또는 기타 저장 구성요소를 유지하고 갱신할 책임이 있을 수 있다.
이러한 네트워크(270)는 도 2c의 시스템으로 서비스들을 제공하는 기타 컴퓨팅 엔터티들을 네트워크 자체에 포함할 수 있고, 그 자체가 다수의 상호연결된 네트워크를 나타낼 수 있다. 본 발명의 양상에 따라, 각 컴포넌트(271, 272, 273, 274, 275, 276, 277 및 278)는 하나 이상의 다른 컴포넌트(271, 272, 273, 274, 275, 276, 277 및 278)의 서비스들을 요청하기 위하여, API, 또는 기타 객체, 소프트웨어, 펌웨어 및/또는 하드웨어를 이용할 수 있는 분리된 펑션 프로그램 모듈을 포함할 수 있다.
275와 같은 객체는 또다른 컴퓨팅 장치(276)에서 호스트될 수 있다는 점 또한 잘 알 수 있다. 따라서, 도시된 물리적 환경이 컴퓨터로서 연결된 장치를 보여줄 수 있지만, 그러한 도시는 단지 예시일 뿐이며, 대안적으로 물리적 환경이 PDA, 텔레비전, MP3 플레이어 등과 같은 다양한 디지털 장치, 인터페이스, COM 객체 등과 같은 소프트웨어 객체들을 포함하여 도시되거나 기술될 수 있다.
분산 컴퓨팅 환경을 지원하는 다양한 시스템, 컴포넌트 및 네트워크 구성이 있다. 예를 들어, 컴퓨팅 시스템은 유선 또는 무선 시스템, 로컬 네트워크 또는 넓게 분산된 네트워크에 의해 함께 연결될 수 있다. 현재, 많은 네트워크들이 인터넷으로 연결되는데, 그것은 넓게 분산된 컴퓨팅을 위한 기반구조를 제공하며 여러 다른 네트워크들을 포함한다. 임의의 그러한 기반구조들은 인터넷에 연결되든지 되지 않든지 제공된 시스템 및 방법과 관련하여 사용될 수 있다.
네트워크 기반구조는 클라이언트/서버, 피어-투-피어(peer-to-peer) 또는 하이브리드 아키텍처와 같은 네트워크 형상의 호스트를 가능하게 할 수 있다. "클라이언트"는 관련되지 않은 또다른 클래스 또는 그룹의 서비스들을 사용하는 클래스 또는 그룹의 구성원이다. 컴퓨팅에서, 클라이언트는 또다른 프로그램에 의해 제공된 서비스를 요청하는 프로세스, 즉, 개략적으로 명령어 또는 태스크의 집합이다. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 대한 세부 동작을 "알" 필요 없이 요청된 서비스를 이용한다. 클라이언트/서버 아키텍처, 특히 네트워크 시스템에서, 클라이언트는 대개 또다른 컴퓨터, 예를 들어, 서버에 의해 제공된 공유 네트워크 자원을 액세스하는 컴퓨터이다. 도 2c의 예에서, 임의의 컴포넌트(271, 272, 273, 274, 275, 276, 277 및 278)는 환경에 따라 클라이언트, 서버 또는 둘다로 생각될 수 있다.
서버는 필수적이지는 않지만 전형적으로 인터넷과 같은 원격 또는 로컬 네트워크를 거쳐 액세스 가능한 원격 컴퓨터 시스템이다. 통신 매체를 통해 서로 통신하면서, 클라이언트 프로세스는 제1 컴퓨터 시스템에서 동작 중일 수 있고 서버 프로세스는 제2 컴퓨터 시스템에서 동작 중일 수 있으며, 따라서 분산된 펑셔널리티 를 제공하고 다수의 클라이언트가 서버의 정보 수집 능력을 이용하는 것을 허용한다. 임의의 소프트웨어 객체들이 다수의 컴퓨팅 장치 또는 객체들에 걸쳐 분산될 수 있다.
클라이언트(들) 및 서버(들)는 프로토콜 계층(들)에 의해 제공된 펑셔널리티를 이용하여 서로 통신한다. 예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)은 월드 와이드 웹(WWW) 또는 "웹"과 관련하여 사용되는 일반적인 프로토콜이다. 전형적으로, 인터넷 프로토콜(IP) 어드레스와 같은 컴퓨터 네트워크 어드레스 또는 공용 리소스 로케이터(URL)와 같은 기타 레퍼런스는 서버 또는 클라이언트 컴퓨터가 서로에게 식별하기 위하여 사용될 수 있다. 네트워크 어드레스는 URL 어드레스로 언급될 수 있다. 통신은 통신 매체를 통해 제공될 수 있는데, 예를 들어, 클라이언트(들) 및 서버(들)는 고용량 통신을 위한 TCP/IP 연결(들)을 통해 서로 연결될 수 있다.
도 2a 및 도 2b에 제공된 일반적인 프레임워크에 따라 형성될 수 있는 다양한 컴퓨팅 환경 및 도 2c와 같은 네트워크 환경에서의 컴퓨팅 시 발생할 수 있는 다양성의 관점에서, 본 발명에서 제공된 시스템 및 방법은 특정 컴퓨팅 아키텍처로 어떠한 식으로든 제한되는 것으로 해석될 수 없다. 대신에, 본 발명은 하나의 실시예로 한정되어서는 안 되며, 오히려 첨부되는 특허청구범위에 따른 생명력 및 범위로 해석되어야 한다.
본 발명에 개시된 API 및 다양한 지원 객체들은 여러 관점으로부터 추적 데 이터의 관리를 매우 단순화한다. 첫째, 그것들은 사용자가 추적된 서버의 보안 심사 및 헬쓰 모니터링을 완전히 자동화하는 것을 가능하게 한다. 둘째, 그것들은 새로운 서버 릴리즈 및 보안 팩의 자동적인 펑션 검증을 허용한다.

Claims (55)

  1. 데이터베이스 추적 데이터(database trace data)의 프로그램적인 검색 및 재생을 지원하기 위한 시스템으로서,
    데이터베이스 추적 데이터를 검색하기 위한 다수의 기계 판독가능 명령어를 포함하는 제1 기능적 구성요소,
    커스텀 컴퓨터 프로세스(custom computer process)들이 상기 제1 기능적 구성요소의 동작을 프로그램적으로 시작할 수 있게 하는 제1 노출된 펑션 호출(exposed function call),
    데이터베이스 추적 데이터를 저장하기 위한 다수의 기계 판독가능 명령어를 포함하는 제2 기능적 구성요소,
    데이터베이스 추적 데이터를 재생하기 위한 다수의 기계 판독가능 명령어를 포함하는 제3 기능적 구성요소, 및
    커스텀 컴퓨터 프로세스들이 상기 제3 기능적 구성요소의 동작을 프로그램적으로 시작할 수 있게 하는 제3 노출된 펑션 호출
    을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 제2 기능적 구성요소는 데이터베이스 추적 데이터를 파일, 테이블 및 서버 중 하나 이상에 저장하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스 템.
  3. 제1항에 있어서,
    저장된 데이터베이스 추적 데이터를 변경하기 위한 다수의 기계 판독가능 명령어를 포함하는 제4 기능적 구성요소를 더 포함하는 시스템.
  4. 제3항에 있어서,
    커스텀 컴퓨터 프로세스들이 상기 제4 기능적 구성요소의 동작을 프로그램적으로 시작할 수 있게 하는 제4 노출된 펑션 호출을 더 포함하는 시스템.
  5. 제1항에 있어서,
    상기 제1 기능적 구성요소는 IDataReader 인터페이스로부터 상속하는 하나 이상의 객체를 포함하는 시스템.
  6. 제1항에 있어서,
    상기 제3 기능적 구성요소는 추적 데이터를 재생(replay)하기 전에 커스텀 컴퓨터 프로세스에게 통지하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  7. 제1항에 있어서,
    상기 제3 기능적 구성요소는 재생으로부터의 데이터베이스 출력이 커스텀 컴퓨터 프로세스에 대해 가용한 때를 커스텀 컴퓨터 프로세스에게 통지하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  8. 제1항에 있어서,
    상기 제3 기능적 구성요소는 재생이 중지되는 때를 커스텀 컴퓨터 프로세스에게 통지하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  9. 제1항에 있어서,
    상기 제3 기능적 구성요소는 특정 데이터베이스에 대한 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 순차적 재생 모드(sequential replay mode)를 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  10. 제1항에 있어서,
    상기 제3 기능적 구성요소는 식별된 클라이언트 또는 클라이언트들의 집합으로부터 데이터베이스로 전송된 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 연결 레벨 재생 모드(connection level replay mode)를 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  11. 제1항에 있어서,
    상기 제3 기능적 구성요소는 재생과 관련된 실질적으로 모든 데이터베이스 출력을 수집하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  12. 제1항에 있어서,
    상기 제3 기능적 구성요소는 실질적으로 재생과 관련된 보고된 데이터베이스 에러들만을 수집하기 위한 다수의 기계 판독가능 명령어를 포함하는 시스템.
  13. 컴퓨터화된 프로세스(computerized process)가 데이터베이스 추적 데이터를 프로그램적으로 검색 및 재생하도록 하기 위한 방법으로서,
    데이터베이스 추적 데이터를 검색하기 위한 제1 펑션 호출을 노출하는 단계 - 상기 제1 펑션 호출은 커스텀 컴퓨터화된 프로세스들(custom computerized processes)에 노출됨 - ,
    상기 제1 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 검색하는 단계,
    상기 커스텀 컴퓨터화된 프로세스들 중 하나 이상에 의해 지정된 위치, 또는 디폴트 위치로 지정된 위치에 데이터베이스 추적 데이터를 저장하는 단계,
    데이터베이스 추적 데이터를 재생하기 위한 제2 펑션 호출을 노출하는 단계 - 상기 제2 펑션 호출은 커스텀 컴퓨터화된 프로세스들에 노출됨 - , 및
    상기 제2 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 재생하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서,
    상기 저장하는 단계는 데이터베이스 추적 데이터를 파일, 테이블 및 서버 중 하나 이상에 기입하는 단계를 포함하는 방법.
  15. 제13항에 있어서,
    상기 검색하기 위한 펑션 호출은 다수의 위치에 데이터베이스 추적 데이터를 저장하기 위해 동작하는 다수의 펑션 호출을 포함하고, 이에 의하여, 저장 위치는 상기 다수의 펑션 호출 중 하나 이상을 인보크함으로써 커스텀 컴퓨터화된 프로세스들에 의해 지정될 수 있는 방법.
  16. 제13항에 있어서,
    데이터베이스 추적 데이터를 변경하기 위한 제4 펑션 호출을 노출하는 단계를 더 포함하고, 상기 제4 펑션 호출은 커스텀 컴퓨터화된 프로세스들에 노출되는 방법.
  17. 제16항에 있어서,
    상기 제4 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 변경하는 단계를 더 포함하는 방법.
  18. 제13항에 있어서,
    상기 데이터베이스 추적 데이터를 검색하는 단계는 IDataReader 인터페이스로부터 상속하는 하나 이상의 객체를 관련시키는 방법.
  19. 제13항에 있어서,
    추적 데이터를 재생하기 전에 커스텀 컴퓨터 프로세스에게 통지하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서,
    상기 통지하는 단계는 이벤트 객체를 커스텀 컴퓨터 프로세스에게 리턴하는 것을 포함하는 방법.
  21. 제19항에 있어서,
    상기 통지하는 단계는 델리게이트(delegate)를 커스텀 컴퓨터 프로세스에게 리턴하는 것을 포함하는 방법.
  22. 제19항에 있어서,
    상기 통지하는 단계는 인터페이스를 커스텀 컴퓨터 프로세스에게 리턴하는 것을 포함하며, 상기 인터페이스는 추적 데이터 레코드들을 변경하기 위한 파라미 터들을 정의하는 방법.
  23. 제19항에 있어서,
    상기 통지하는 단계는 인터페이스를 커스텀 컴퓨터 프로세스에게 리턴하는 것을 포함하며, 상기 인터페이스는 상기 재생 동안 추적 데이터를 스킵(skip)하기 위한 파라미터들을 정의하는 방법.
  24. 제13항에 있어서,
    재생으로부터의 데이터베이스 출력이 커스텀 컴퓨터 프로세스에 대해 가용한 때를 커스텀 컴퓨터 프로세스에게 통지하는 단계를 더 포함하는 방법.
  25. 제24항에 있어서,
    상기 통지하는 단계는 이벤트 객체를 커스텀 컴퓨터 프로세스에게 리턴하는 단계를 포함하는 방법.
  26. 제24항에 있어서,
    상기 통지하는 단계는 델리게이트를 커스텀 컴퓨터 프로세스에게 리턴하는 단계를 포함하는 방법.
  27. 제13항에 있어서,
    상기 재생하는 단계는 재생이 중지되는 때를 커스텀 컴퓨터 프로세스에게 통지하는 단계를 포함하는 방법.
  28. 제13항에 있어서,
    상기 재생하는 단계는 데이터베이스에 연결하는 단계를 포함하며, 상기 데이터베이스는 커스텀 컴퓨터 프로세스에 의해 지정되는 방법.
  29. 제13항에 있어서,
    상기 재생하는 단계는 스레드 풀(thread pool)의 크기를 제어하는 단계를 포함하며, 상기 스레드 풀 크기는 커스텀 컴퓨터 프로세스에 의해 지정되는 방법.
  30. 제13항에 있어서,
    상기 재생하는 단계는, 데이터베이스 추적 데이터의 프로그램적인 검색 및 재생을 지원하기 위한 시스템의 하나 이상의 구성요소가, 진행되지 않고 있는 프로세스를 끝내기 전에 기다릴 시간 간격(time interval)을 제어하는 단계를 포함하는 방법.
  31. 제13항에 있어서,
    상기 재생하는 단계는 진행되지 않고 있는 프로세스들을 발견하기 위한 폴링 빈도(polling frequency)를 제어하는 단계를 포함하는 방법.
  32. 제13항에 있어서,
    상기 재생하는 단계는 특정 데이터베이스에 대한 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 순차적 재생 모드를 이용하는 단계를 포함하는 방법.
  33. 제13항에 있어서,
    상기 재생하는 단계는 식별된 클라이언트 또는 클라이언트들의 집합으로부터 데이터베이스에 전송된 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 연결 레벨 재생 모드를 이용하는 단계를 포함하는 방법.
  34. 제13항에 있어서,
    상기 재생하는 단계는 재생과 관련된 실질적으로 모든 데이터베이스 출력을 수집하는 단계를 포함하는 방법.
  35. 제13항에 있어서,
    상기 재생하는 단계는 실질적으로 재생과 관련된 보고된 데이터베이스 에러들만을 수집하는 단계를 포함하는 방법.
  36. 컴퓨터화된 프로세스가 데이터베이스 추적 데이터를 프로그램적으로 검색 및 재생하도록 허용하기 위한 명령어들을 가지는 컴퓨터 판독가능 매체로서,
    데이터베이스 추적 데이터를 검색하기 위한 제1 펑션 호출을 노출하기 위한 명령어들 - 상기 제1 펑션 호출은 커스텀 컴퓨터화된 프로세스들에 노출됨 - ,
    상기 제1 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 검색하기 위한 명령어들,
    상기 커스텀 컴퓨터화된 프로세스들 중 하나 이상에 의해 지정된 위치 또는 디폴트 위치로서 지정된 위치에 데이터베이스 추적 데이터를 저장하기 위한 명령어들,
    데이터베이스 추적 데이터를 재생하기 위한 제2 펑션 호출을 노출하기 위한 명령어들 - 상기 제2 펑션 호출은 커스텀 컴퓨터화된 프로세스들에 노출됨 - , 및
    상기 제2 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 재생하기 위한 명령어들
    을 포함하는 컴퓨터 판독가능 매체.
  37. 제36항에 있어서,
    상기 저장하기 위한 명령어들은 파일, 테이블 및 서버 중 하나 이상에 데이터베이스 추적 데이터를 기입하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  38. 제36항에 있어서,
    상기 검색하기 위한 제1 펑션 호출을 노출하기 위한 명령어들은 다수의 위치에 데이터베이스 추적 데이터를 저장하기 위해 동작하는 다수의 펑션 호출을 위한 명령어들을 포함하며, 이에 의하여, 다수의 펑션 호출 중 하나 이상을 인보크함으로써 커스텀 컴퓨터화된 프로세스들에 의하여 저장 위치가 지정될 수 있는 컴퓨터 판독가능 매체.
  39. 제36항에 있어서,
    데이터베이스 추적 데이터를 변경하기 위한 제4 펑션 호출을 노출하기 위한 명령어들을 더 포함하며, 상기 제4 펑션 호출은 커스텀 컴퓨터화된 프로세스들에 노출되는 컴퓨터 판독가능 매체.
  40. 제39항에 있어서,
    상기 제4 펑션 호출 인보크에 응답하여 데이터베이스 추적 데이터를 변경하기 위한 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  41. 제36항에 있어서,
    상기 데이터베이스 추적 데이터를 검색하기 위한 명령어들은 IDataReader 인터페이스로부터 상속하는 하나 이상의 객체들을 포함하는 컴퓨터 판독가능 매체.
  42. 제36항에 있어서,
    추적 데이터를 재생하기 전에 커스텀 컴퓨터 프로세스에게 통지하기 위한 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  43. 제42항에 있어서,
    상기 통지하기 위한 명령어들은 이벤트 객체를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  44. 제42항에 있어서,
    상기 통지하기 위한 명령어들은 인터페이스를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하며, 상기 인터페이스는 추적 데이터를 변경하기 위한 파라미터들을 정의하는 컴퓨터 판독가능 매체.
  45. 제42항에 있어서,
    상기 통지하기 위한 명령어들은 인터페이스를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하며, 상기 인터페이스는 상기 재생 동안 추적 데이터를 스킵하기 위한 파라미터들을 정의하는 컴퓨터 판독가능 매체.
  46. 제42항에 있어서,
    상기 통지하기 위한 명령어들은 델리게이트를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  47. 제36항에 있어서,
    재생으로부터의 데이터베이스 출력이 커스텀 컴퓨터 프로세스에 대해 가용한 때를 커스텀 컴퓨터 프로세스에게 통지하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  48. 제47항에 있어서,
    상기 통지하기 위한 명령어들은 이벤트 객체를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  49. 제47항에 있어서,
    상기 통지하기 위한 명령어들은 델리게이트를 커스텀 컴퓨터 프로세스에게 리턴하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  50. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 재생이 중지되는 때를 커스텀 컴퓨터 프로세스에게 통지하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  51. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 데이터베이스에 연결하기 위한 명령어들을 포함하며, 상기 데이터베이스는 커스텀 컴퓨터 프로세스에 의해 지정되는 컴퓨터 판독가능 매체.
  52. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 특정 데이터베이스에 대한 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 순차적 재생 모드를 이용하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  53. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 식별된 클라이언트 또는 클라이언트들의 집합으로부터 데이터베이스에 전송된 실질적으로 모든 데이터베이스 서비스 요청들이 재생되는 연결 레벨 재생 모드를 이용하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  54. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 재생과 관련된 실질적으로 모든 데이터베이스 출력을 수집하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
  55. 제36항에 있어서,
    상기 재생하기 위한 명령어들은 실질적으로 재생과 관련된 보고된 데이터베 이스 에러들만을 수집하기 위한 명령어들을 포함하는 컴퓨터 판독가능 매체.
KR1020050033065A 2004-06-21 2005-04-21 데이터베이스 추적의 프로그램적인 검색 및 재생을 위한시스템 KR101203333B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/872,633 US7822741B2 (en) 2004-06-21 2004-06-21 API for programmatic retrieval and replay of database trace
US10/872,633 2004-06-21

Publications (2)

Publication Number Publication Date
KR20060047324A true KR20060047324A (ko) 2006-05-18
KR101203333B1 KR101203333B1 (ko) 2012-11-20

Family

ID=35057008

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050033065A KR101203333B1 (ko) 2004-06-21 2005-04-21 데이터베이스 추적의 프로그램적인 검색 및 재생을 위한시스템

Country Status (5)

Country Link
US (1) US7822741B2 (ko)
EP (1) EP1610238A3 (ko)
JP (1) JP5404986B2 (ko)
KR (1) KR101203333B1 (ko)
CN (1) CN1722086B (ko)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599966B2 (en) * 2005-01-27 2009-10-06 Yahoo! Inc. System and method for improving online search engine results
US8130758B2 (en) * 2005-06-27 2012-03-06 Bank Of America Corporation System and method for low latency market data
US8065351B2 (en) * 2006-02-23 2011-11-22 Microsoft Corporation Default location that may be dynamically changed
US7890458B2 (en) 2006-10-20 2011-02-15 Oracle International Corporation Capturing database workload while preserving original transactional and concurrency characteristics for replay
US8024299B2 (en) 2006-10-20 2011-09-20 Oracle International Corporation Client-driven functionally equivalent database replay
US7984015B2 (en) 2006-10-20 2011-07-19 Oracle International Corporation Database workload capture and replay architecture
EP1952241B1 (en) * 2006-10-20 2016-03-16 Oracle International Corporation Database workload capture and replay architecture
US7634512B2 (en) 2006-10-20 2009-12-15 Oracle International Corporation Migrating temporary data of a session
US7890457B2 (en) 2006-10-20 2011-02-15 Oracle International Corporation Transactionally consistent database workload replay
US8214807B2 (en) * 2007-01-10 2012-07-03 International Business Machines Corporation Code path tracking
KR101358750B1 (ko) 2007-01-22 2014-02-06 삼성전자주식회사 관계형 데이터베이스를 이용한 프로그램 트레이스 방법
US8997048B1 (en) 2007-02-14 2015-03-31 Oracle America, Inc. Method and apparatus for profiling a virtual machine
US8185740B2 (en) * 2007-03-26 2012-05-22 Microsoft Corporation Consumer computer health validation
US20080288498A1 (en) * 2007-05-14 2008-11-20 Hinshaw Foster D Network-attached storage devices
WO2008157831A2 (en) * 2007-06-21 2008-12-24 The Owens Group, Inc. System and method of tracing items
US9401846B2 (en) * 2007-10-17 2016-07-26 Dell Products, Lp Information handling system configuration identification tool and method
US8433680B2 (en) 2008-07-01 2013-04-30 Oracle International Corporation Capturing and restoring database session state
US8418150B2 (en) 2009-04-03 2013-04-09 Oracle International Corporation Estimating impact of configuration changes
US9935812B1 (en) * 2009-09-10 2018-04-03 New Relic, Inc. Performance evaluation of applications that access external resources
US8818991B2 (en) * 2009-12-23 2014-08-26 Pivotal Software, Inc. Apparatus and method for analyzing query optimizer performance
US9026862B2 (en) * 2010-12-02 2015-05-05 Robert W. Dreyfoos Performance monitoring for applications without explicit instrumentation
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US10262050B2 (en) * 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8850261B2 (en) 2011-06-01 2014-09-30 Microsoft Corporation Replaying jobs at a secondary location of a service
US10585766B2 (en) 2011-06-06 2020-03-10 Microsoft Technology Licensing, Llc Automatic configuration of a recovery service
US9311219B2 (en) * 2011-09-29 2016-04-12 Siemens Aktiengesellschaft Automatic trace retrieval using semantic bridge
US8898643B2 (en) * 2012-06-19 2014-11-25 Sap Se Application trace replay and simulation systems and methods
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
CN104038556B (zh) * 2014-06-26 2017-11-17 浪潮(北京)电子信息产业有限公司 一种Sybase IQ数据库集群中的存储资源配置方法及系统
CN105825137B (zh) * 2015-01-05 2018-10-02 中国移动通信集团江苏有限公司 一种确定敏感数据扩散行为的方法及装置
US10713275B2 (en) 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US11843679B2 (en) 2015-07-27 2023-12-12 Wp Company Llc Automated dependency management based on page components
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US9672141B1 (en) * 2015-11-25 2017-06-06 International Business Machines Corporation Generic language application programming interface interpreter
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10621050B2 (en) 2016-06-27 2020-04-14 Mongodb, Inc. Method and apparatus for restoring data from snapshots
JP6839267B2 (ja) * 2016-09-09 2021-03-03 マイクロソフト テクノロジー ライセンシング,エルエルシー 異なるパーティーにまたがるオブジェクトのトレース
US9965376B1 (en) * 2017-01-06 2018-05-08 Microsoft Technology Licensing, Llc Speculative replay of executable code
US10180799B2 (en) * 2017-02-02 2019-01-15 Microsoft Technology Licensing, Llc Efficient retrieval of memory values during trace replay
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
US10296442B2 (en) * 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US11556500B2 (en) 2017-09-29 2023-01-17 Oracle International Corporation Session templates
CN110058987B (zh) * 2018-01-18 2023-06-27 伊姆西Ip控股有限责任公司 用于对计算系统进行追踪的方法、设备和计算机可读介质
US10785017B2 (en) * 2018-04-24 2020-09-22 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically scaled time dilation
CN112131070A (zh) * 2019-06-25 2020-12-25 北京京东尚科信息技术有限公司 调用关系跟踪方法、装置、设备及计算机可读存储介质
US11151025B1 (en) 2020-05-15 2021-10-19 Dell Products L.P. Generating software test plans based at least in part on monitored traffic of a production application
US11544222B2 (en) * 2020-12-11 2023-01-03 Fidelity Information Services, Llc Systems and methods for data tracing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835915A (en) * 1995-01-24 1998-11-10 Tandem Computer Remote duplicate database facility with improved throughput and fault tolerance
JPH08235098A (ja) * 1995-02-22 1996-09-13 Mitsubishi Electric Corp 分散アプリケーション通信方式
US5745750A (en) * 1995-12-15 1998-04-28 International Business Machines Corporation Process and article of manufacture for constructing and optimizing transaction logs for mobile file systems
US6101497A (en) * 1996-05-31 2000-08-08 Emc Corporation Method and apparatus for independent and simultaneous access to a common data set
US6145121A (en) * 1997-04-17 2000-11-07 University Of Washington Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications
JP2000278359A (ja) * 1999-03-19 2000-10-06 Ntt Communicationware Corp 電文データ生成方法、電文データ生成装置、サーバ装置、アプリケーションプログラムの試験システムおよび記録媒体
US6467052B1 (en) 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
JP4257563B2 (ja) * 2000-08-30 2009-04-22 ソニー株式会社 情報処理装置および方法、記録媒体、並びにデータベース構築装置
JP2002269145A (ja) * 2000-12-08 2002-09-20 Fujitsu Ltd 情報処理装置、端末装置、方法、媒体、およびプログラム
US7228416B2 (en) * 2001-01-26 2007-06-05 Hitachi, Ltd. Database access method and system capable of concealing the contents of query
CN1435782A (zh) * 2002-01-31 2003-08-13 百度在线网络技术(北京)有限公司 一种使用快照的方式实现对网上信息进行记录和分析的方法
US7039644B2 (en) * 2002-09-17 2006-05-02 International Business Machines Corporation Problem determination method, system and program product
JP2004163480A (ja) * 2002-11-11 2004-06-10 Hitachi Ltd 地図生成システム及び地図管理システム
GB0228279D0 (en) 2002-12-04 2003-01-08 Ibm A synchronization method
EP1562120A1 (en) * 2004-02-09 2005-08-10 Sap Ag Data processing system with display of test data

Also Published As

Publication number Publication date
KR101203333B1 (ko) 2012-11-20
JP2006012141A (ja) 2006-01-12
CN1722086A (zh) 2006-01-18
US20050283457A1 (en) 2005-12-22
US7822741B2 (en) 2010-10-26
JP5404986B2 (ja) 2014-02-05
EP1610238A3 (en) 2006-07-26
CN1722086B (zh) 2010-05-12
EP1610238A2 (en) 2005-12-28

Similar Documents

Publication Publication Date Title
KR101203333B1 (ko) 데이터베이스 추적의 프로그램적인 검색 및 재생을 위한시스템
CN101889278B (zh) 概述响应于触发门户页面中的事件而捕获的门户件使用
US8327351B2 (en) Application modification framework
US10482161B2 (en) Generating and displaying active reports
US6708293B2 (en) Method and apparatus for analyzing performance of data processing system
KR101085639B1 (ko) 테이블 값 함수를 호출하는 질의의 효율적 평가를 위한시스템 및 방법
US20190050378A1 (en) Serializable and serialized interaction representations
US11580088B2 (en) Creation, management, and transfer of interaction representation sets
US7665098B2 (en) System and method for monitoring interactions between application programs and data stores
US8782001B2 (en) Computation of impacted and affected code due to database schema changes
US20070220347A1 (en) Automatic testing for dynamic applications
US7836429B2 (en) Data synchronization mechanism for change-request-management repository interoperation
EP3362902A1 (en) Telemetry definition system
KR20140041499A (ko) 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법
Scott et al. Kafka in Action
EP4290393A1 (en) Consolidation spaces providing access to multiple instances of application content
Boss et al. Saving data journalism: Using ReproZip-Web to capture dynamic websites for future reuse
Stapelfeldt et al. Strategies for Preserving Digital Scholarship/Humanities Projects
Harter Emergent properties in modular storage: A study of apple desktop applications, Facebook messages, and docker containers
Ravikumar et al. Oracle Database Upgrade and Migration Methods
US8495106B2 (en) Write instruction datasource for database write procedure
Chen Developing a music player mobile application with cloud server
Barber ReMp3–The Remote MP3 Player Document Final Report Author Sacha Barber [sb54]
Bhakthavatsalam et al. Oracle Enterprise Manager Cloud Control Getting Started with Oracle Fusion Middleware Management 12c Release 3 (12.1. 0.3) E24215-05
Fernando et al. noteEd-A web-based lecture capture system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7