KR20050030531A - 실시간 데이타 집계의 자기 유지 - Google Patents

실시간 데이타 집계의 자기 유지 Download PDF

Info

Publication number
KR20050030531A
KR20050030531A KR1020040055474A KR20040055474A KR20050030531A KR 20050030531 A KR20050030531 A KR 20050030531A KR 1020040055474 A KR1020040055474 A KR 1020040055474A KR 20040055474 A KR20040055474 A KR 20040055474A KR 20050030531 A KR20050030531 A KR 20050030531A
Authority
KR
South Korea
Prior art keywords
aggregate
record
records
instance
group
Prior art date
Application number
KR1020040055474A
Other languages
English (en)
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 KR20050030531A publication Critical patent/KR20050030531A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders
    • 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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • 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/99931Database or file accessing
    • 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/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Fuzzy Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

집계 데이타 표의 다수의 파티션일 수 있는 다수의 집계 그룹이 형성된다. 각 그룹은 다수의 집계 레코드를 포함하며, 각 집계 레코드는 다수의 데이타베이스 레코드의 상이한 서브세트에 들어 있는 값들의 집계를 포함한다. 집계 그룹이 집계 그룹 갱신 트랜잭션 동안 단일 프로그램 스레드에 의해 액세스될 때 다른 스레드는 그 그룹에 액세스하는 것이 허용되지 않는다. 집계 그룹들은 단일 집계 레코드 표로 결합된다. 다수의 데이타베이스 레코드 각각은 조직 액티비티의 인스턴스에 대응할 수 있고 대응 인스턴스가 여러 처리 상태 중 한 상태에 있는 것을 나타내는 값을 가진 필드를 포함할 수 있다. 각 집계 그룹은 시간 정렬된 집계 레코드를 더 포함할 수 있으며, 각각의 시간 정렬 집계 레코드는 그에 관련된 기간 동안 여러 처리 상태 중 한 상태에 있는 인스턴스들에 대한 집계 값을 갖는다. 미리 선택된 시간 윈도우의 외측에서 완료된 인스턴스들에 대응하는 집계 레코드가 삭제된다.

Description

실시간 데이타 집계의 자기 유지{SELF-MAINTAINING REAL-TIME DATA AGGREGATION}
본 특허 문서 개시의 일부는 저작권 보호를 받는 자료를 포함한다. 저작권 소유자는 특허 상품청의 특허 파일 또는 기록에 나타나는 경우, 특허 문서 또는 특허 개시에 대한 다른 사람에 의한 원본 복제에 이의가 없지만, 그렇지 않는 경우 모든 저작권을 보호한다.
본 발명은 기업 또는 기타 조직의 작업흐름을 모니터링하기 위한 방법 및 시스템에 관한 것이다. 더 상세하게는, 본 발명은 다수의 액티비티(activity) 인스턴스에 대한 정보를 집계하고 그 집계를 유지하는 방법에 관한 것이다.
컴퓨터 특히, 컴퓨터 데이타베이스 어플리케이션은 기업 및 기타 조직에 의해 조직의 액티비티에 대한 정보를 모니터링 및 기록하는 데 사용된다. 종종, 조직은 수행되어야 하는 다양한 처리 또는 액티비티를 가질 것이며, 그것은 자주 반복된다. 실제로, 조직이 임의의 주어진 시간에 다양한 완료 단계에서 다수의 액티비티 인스턴스를 갖는 것은 흔한 일이다. 일례로서, 기업은 고객으로부터 받은 주문을 기초로 상품을 판매할 수 있다. 관심(interest) 액티비티는 그러한 고객 주문을 수행할 수 있다. 각각의 구매 주문은 그 액티비티의 개별 인스턴스를 나타낸다. 임의의 특정 시간에, 그 기업은 다수의 액티비티 인스턴스(즉, 다수의 고객으로부터의 다수의 주문)를 가질 수 있다. 다른 예에서, 재정 협회는 고객으로부터의 신청에 기초하여 그 고객에게 자금을 빌려줄 수 있다. 관심 액티비티는 완료(예를 들어, 승낙 또는 거절)에 대한 로운(loan) 신청의 처리일 수 있으며, 이 때 각각의 신청은 액티비티의 개별 인스턴스를 나타낸다. 임의의 특정 시간에, 처리의 다양한 단계에서 다수의 로운 신청 인스턴스가 있을 수 있다. 또다른 예로서, 허가를 발행하는 것을 책임지는 정부 실체는 처리되는 다양한 단계에서 다수의 허가 신청을 가질 수 있다.
액티비티의 다수 인스턴스를 모니터링하기 위하여, 다수의 조직은 그 액티비티 인스턴스에 대한 정보를 데이타베이스 프로그램에 저장한다. 특히, 레코드 또는 기타 데이타 오브젝트가 액티비티의 각각의 인스턴스에 대하여 생성될 수 있다. 그리고, 개별 필드 또는 레코드의 기타 컴포넌트가 각각의 인스턴스에게 공통적인 임의의 타입의 정보에 대한 값을 보유하기 위하여 설립된다. 상기 예들 중 하나를 예로서 사용하면, 상품을 판매하는 기업은 각각의 고객 주문에 대하여 개별 데이타베이스 레코드를 생성할 수 있다. 그 안에서, 레코드는 주문이 접수된 시간, 주문이 접수된 장소, 주문 받은 품목, 선적된 시간 등에 대한 개별 필드들일 수 있다. 데이타베이스 프로그램의 그러한 사용은 종종 표로 개념화된다. 액티비티의 각각의 인스턴스는 표의 개별 행(row)(또는 튜플)을 할당받는다. 그리고 다수의 인스턴스에 공통적인 정보의 각각의 타입은 표의 개별 열(column)을 할당받는다.
각각의 레코드 내의 각각의 필드의 값이 가끔 필요하지만, 다수의 조직은 자주 레코드 그룹에 대한 정보를 필요로 한다. 또한, 이 정보는 종종 실시간으로 요구된다. 예를 들어, 상품을 판매하는 다수의 기업은 얼마나 많은 주문이 현재 미해결된 채로 있는 지, 얼마나 많은 주문이 완료됐는 지, 및 얼마나 많은 주문이 완료의 하나 이상의 중간 단계에 있는 지를 아는 것이 필요하다. 특정 데이타베이스 프로그램은 데이타베이스의 다수의 레코드 내의 값을 집계함으로써 그러한 보고(report)를 제공할 수 있다. 그러나, 데이타베이스가 매우 큰 이것은 종종 수용할 수 없는 해결책이다.
레코드가 축적될수록, 데이타베이스가 액세스될 수 있는 속도는 현저하게 떨어진다. 하루에 수백수천의 주문을 받는 상품 판매자와 같은 큰 기업에 있어서, 레코드의 수는 수백수천 또는 수백만에 달할 수 있다. 데이타베이스가 질의될 때마다, 디스크 드라이브 또는 기타 저장 장치를 검색하기 위하여 유한한 양의 시간이 필요하다. 마찬가지로, 새로운 레코드가 생성되고 기존의 레코드가 갱신될 때, 그 레코드들 각각을 생성 또는 갱신하기 위하여 유한한 양의 시간이 필요하다. 레코드 수가 증가함에 따라, 특정 레코드를 찾기 위해 필요한 시간은 증가한다. 수백(또는 수천)의 사용자 및 수천(수백만)의 데이타베이스 레코드를 갖는 기업 또는 조직에서, 데이타베이스 시스템 액세스에 대한 잠재는 매우 클수 있다. 또한, 다수의 사용자들이 데이타베이스 내의 동일한 정보를 액세스하려고 할 때, 동일한 레코드를 액세스하려고 하는 사용자 간에 교착 상태(deadlock)가 발생할 수 있다. 다수의 사용자가 큰 데이타베이스 내에 레코드를 삽입 및 갱신하고 있는 한편, 다른 사용자가 다양한 필드의 요약을 생성하기 위하여 그 데이타베이스를 액세스하려고 한다면, 모든 사용자는 만족스럽지 못한 데이타베이스 성능을 경험할 수 있다.
다른 가능한 해결책은 데이타베이스 내의 데이타에 대하여 OLAP(On-Line Analytical Processing) 큐브를 생성하는 것이다. 그러나, OLAP 큐브를 생성하기 위해 요구되는 처리도 상당히 시간 소모적일 수 있다. 매우 많은 데이타베이스 레코드가 있다면, 종종, OLAP 큐브는 단지 매일(또는 때때로 매시간) 생성될 수 있다. 조직이 실시간으로 집계 정보를 필요로하면, OLAP 큐브는 종종 충분하지 않을 것이다.
본 발명은 상술된 내용, 및 액티비티의 다수의 인스턴스에 대한 집계 정보를 유지하는 것과 관련된 다른 도전을 처리한다. 적어도 하나의 실시예에서, 본 발명은 다수의 데이타베이스 레코드의 필드에 의해 포함되는 값들의 집계를 유지하기 위한 방법을 포함한다. 방법은 다수의 집계 그룹을 생성하는 것을 포함한다. 각각의 그룹은 복수의 집계 레코드를 포함하고, 각각의 집계 레코드는 복수의 데이타베이스 레코드의 상이한 서브세트의 필드에 의해 포함되는 값들의 집계에 대한 값을 포함한다. 방법은 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시에 제1 집계 그룹을 선택하는 것을 더 포함한다. 방법은 삽입 또는 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여, 제1 집계 그룹 갱신 트랜잭션의 일부로서, 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 것도 포함한다. 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 제1 집계 그룹의 후속 선택이 금지된다. 제1 집계 그룹 갱신 트랜잭션이 수행되는 동안에 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹이 선택된다. 삽입 또는 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션 동안에 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값이 변경된다. 본 발명의 다른 양태에서, 집계 그룹은 집계 레코드들의 단일 표로 결합된다.
적어도 또다른 실시예에서, 본 발명은 조직 액티비티의 다수의 인스턴스에 관한 집계 데이타를 유지하기 위한 방법을 포함하며, 그 액티비티의 각각의 인스턴스는 복수의 처리 상태 중 하나의 상태를 갖는다. 방법은 집계 데이타 표에서 복수의 레코드를 생성하는 것을 포함하며, 각각의 레코드는 동일한 기간동안 동일한 처리 상태에 있는 다수의 인스턴스의 서브세트에 대한 집계 값을 포함한다. 방법은 미리 선택된 시간 윈도우의 외측에서 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하도록 집계 데이타 표를 갱신하는 것을 더 포함한다.
전술한 것과 그 이외의 본 발명의 특징 및 장점은 첨부된 도면과 결합되어 선호되는 실시예에 대한 다음의 상세한 설명으로부터 쉽게 명백해지고 완전히 이해될 것이다.
본 발명은 "현재 상태, 데이타 및 처리의 히스토리에 관한 실시간 질의 지원(SUPPORT FOR REAL-TIME QUERIES CONCERNING CURRENT STATE, DATA AND HISTORY OF A PROCESS)"을 명칭으로 2002년 5월 31일의 미국 특허 출원 번호 10/157,968에 기재된 방법, 장치 및 시스템과 결합하여 유익하게 사용될 수 있으며, 그 내용은 여기서 참조로써 통합된다.
본 발명은 SQL(Structured Query Language) 명령, 및 SQL SERVER™ 2000 관계형 데이타베이스 관리 시스템(RDBMS) 소프트웨어 및 워싱턴 레드몬드의 마이크로소프트사로부터 이용가능한 관련된 온라인 분석 처리(OLAP) 서비스 소프트웨어에서 발견된 다른 데이타 분석 특징을 참조함으로써 기재될 것이다. 본 발명의 특정 실시예를 구현하는 데 사용될 수 있는 SQL 명령의 일부 양태가 여기에 개재되지만, 본 발명을 구현하는 데 사용되는 다른 명령, 프로그래밍 알고리즘 및 프로시져는 본 기술에 숙련된 자에게 있어서 여기에 제공된 설명을 제공받는다면 명백해질 것이다. SQL SERVER™ 2000 RDBMS 소프트웨어 및 관련된 OLAP 서비스 소프트웨어에 대한 일반적인 설명은 케런 디레니(Karen Delaney)(2001년 마이크로소프트 지)의 인사이드 마이크로소프트?? SQL SERVER™ 2000(Inside Microsoft?? SQL SERVER™ 2000), 및 <http://www.microsoft.com/sql/techinfo/productdoc/2000/>에서 사용가능한 마이크로소프트?? SQL SERVER™ 2000 북스 온라인(Microsoft?? SQL SERVER™ 2000 Books Online)을 포함한 다양한 소스로부터 획득될 수 있다. 본 발명은 SQL SERVER™ 2000 RDBMS 소프트웨어 및 관련된 OLAP 서비스 소프트웨어를 사용하는 구현에 제한되지 않으며, 다른 유형의 RDBMS 및 OLAP 소프트웨어를 사용하여 구현될 수 있다.
본 발명은 또한 서버 상에서 수행하고 하나 이상의 클라이언트에 의해 액세스되는 (전술된 SQL SERVER™ 2000 소프트웨어와 같은) RDBMS 소프트웨어를 참조함으로써 개시될 것이다. 그러한 구성은 본 기술분야에 알려져 있으며, 예를 들어, 이전에 통합된 미국 특허 출원 10/157,968에 개재되어 있다. 그러나, 클라이언트 서버 구성은 본 발명이 구현될 수 있는 방법의 일례일 뿐이다. 본 발명은 다른 물리적인 시스템 구성에서도 구현될 수 있다.
도 1은 고객 구매 주문에 기초하여 고객에게 상품을 판매하는 가상의 도매 기업에 의한 고객 주문의 처리를 도시하는 블록도이다. 편의상, 기업은 여기서 "기업 X"로 나타낼 것이다. 기업 X는 다수의 고객으로부터 구매 주문을 받는다. 각각의 구매 주문 접수시, 기업 X는 그 주문에 대한 정보를 데이타베이스 서버 상에서 유지되는 데이타베이스에 입력한다. 특히, 기업 X는 데이타베이스에서 구매 주문에 대한 새로운 레코드를 생성하며, 그 레코드는 각각의 구매 주문에 공통적인 다양한 유형의 정보에 대한 필드들을 갖는다. 예를 들어, 각각의 레코드는 구매 주문 번호, 접수 날짜 및 시간, 고객이 사는 도시, 및 주문된 상품의 양에 대한 필드를 포함한다. 기업 X는 각각의 구매 주문이 수락될 지 또는 거절될 지를 결정하고, 그 수락 또는 거절을 반영하도록 데이타베이스 내의 하나 이상의 다른 필드를 갱신한다. 구매 주문이 수락되면, 대응하는 판매 주문이 생성되어 주문한 고객의 도시에 위치한 기업 X 도매점에게 송신된다. 상품이 고객에게 선적될 때, 선적 시간은 (도매점들 중 하나의 도매점에 있는 클라이언트 컴퓨터를 통해) 그 레코드의 다른 필드에 입력된다. 상품이 배달될 때, 역시 다른 필드가 갱신된다.
전술된 예는 본 발명을 설명하기 위하여 생성된 것이지만, 그 예(여기에 기재된 추가적인 양태를 포함함)는 단순화된 형태이지만 다수의 실제 기업을 대표한다. 또한, 본 기술분야에 숙련된 자는 가상의 기업 X에 관하여 설명된 개념이 넓은 범위의 기업 및 다른 조직 액티비티에 적용가능하다는 것을 이해할 것이다. 실제로, 본 발명은 대안적으로 "기업 X" 대신에 "조직"을 일반적으로 참조함으로써 기재될 수 있다. 마찬가지로, 구매 주문 및 주문 수행의 다양한 단계를 참조하는 것 대신에, 본 발명은 "조직 처리의 인스턴스", 조직 처리 인스턴스의 "상태", 조직 처리 인스턴스의 완료 등과 같은 일반적인 용어를 사용하여 기재될 수 있다. 보다 읽을 수 있는 설명을 제공하기 위하여 실제 기업 유형의 단순화된 예가 사용되지만, 본 발명은 조직 또는 조직 액티비티의 특정 유형으로 제한되지 않는다.
도 2는 도 1의 데이타베이스의 표 일부이며, 기업 X에 의해 유지되고 각각의 구매 주문 인스턴스에 관한 데이타를 저장하는 데 사용된다. 이 인스턴스 데이타 표는 각각의 구매 주문에 대한 개별 레코드(예를 들어, 행), 및 다양한 데이타 타입에 대한 개별 필드(열)를 갖는다. 예를 들어, "PO#"는 구매 주문 번호이다. "RecvTime"은 구매 주문이 접수된 날짜 및 시간이고, "City"는 구매 주문을 발행한 고객과 가장 가까운 도매점이 위치한 도시이고, "Quantity"는 주문된 항목의 수이다. "ShipTime"은 구매 주문에 대한 상품이 선적된 시간이고, "DeliveryTime"은 그 상품이 배달된 시간이다. "ProcessState"는 구매 주문이 현재 진행 중인 처리의 일부를 설명하는 데 사용되는 변수이다. 구매 주문이 접수되었지만 상품이 선적되지 않았다면, 구매 주문은 "처리중"이다. 상품이 선적되었지만 배달되지 않았다면, 구매 주문은 "선적"이다. 상품이 배달되었다면, 구매 주문은 "배달"이다. 도시되지 않았지만, ProcessState에 대한 다른 값{예를 들어, 취하된 구매 주문에 대한 "취하(denied)"}이 있을 수 있다. 상품이 아직 선적되지 않은 구매 주문은 ShipTime 필드에 <NULL> 값을 갖는다. 마찬가지로, 상품이 배달되지 않은 구매 주문은 DeliveryTime 필드에 <NULL> 값을 값는다. 구매 주문이 선적 및/또는 배달될 때, 그러한 필드들은 적합한 시간 값으로 갱신된다.
도 2로부터, 심지어 제한된 수의 레코드만으로 나타날 수 있는 바와 같이, 행 데이타의 표는 집계 정보가 요구될 때 다루기 어려워질 수 있다. 예를 들어, 특정 도매점으로부터 배달된 총 상품이 필요할 때, 각각의 열을 검사하는 것은 필수적이다. 집계 데이타를 획득하기 위한 보다 유용한 표 포맷은 도 3에 도시된다. 특히, 도 3은 도매점에 의해, 현재 배달되거나, 처리 중이거나, 선적된 구매 주문의 총 수량("Count")을 도시한다. 도 3은 Quantity 열에서, 각각의 도매점이 배달하고, 선적하고, 선적을 위해 처리 중인 상품의 총 수량도 도시한다.
도 4는 도 3의 표가 레드몬드로부터의 30개의 유닛에 대한 새로운 구매 주문 번호 135의 접수를 반영하도록 갱신된다. 특히, 레드몬드에 대한 "처리중" 총계는 30만큼 증가되고, Count 총계는 1만큼 증가된다. 도 5는 구매 주문 번호 135가 선적될 때, 도 4의 표를 갱신하는 것을 도시한다. 레드몬드/처리중 구매 주문에 대한 "Quantity" 및 "Count" 총계가 각각 30 및 1만큼 감소하는 반면, 레드몬드/선적 구매 주문에 대한 동일한 필드는 각각 30 및 1만큼 증가한다.
도 4 및 5의 갱신은 비교적 간단하지만, 다수의 프로그래밍 스레드가 동시적으로 동일한 집계 데이타 표를 액세스할 때 문제가 발생할 수 있다. 도 6은 동일한 표 상에 동시적으로 트랜잭션을 수행하려는 2개의 프로그램 스레드를 도시한다. 평이성을 위해, 레코드가 도 6에 도시된 순서로 위에서 아래로 액세스되는 것을 허용하는 City 및 ProcessState 상의 집단 인덱스(clustered index)가 있다고 가정한다(즉, 데이타 행이 집단 인덱스 키에 기초하여 정렬되어 저장됨). 다수의 데이타베이스 환경에서, 다수의 레코드는 표를 액세스하는 단일 트랜잭션의 일부로서 수정된다. 각각의 트랜잭션을 요구하는 처리 오버헤드 때문에, 다수의 레코드를 처리하는 배치(batch)가 종종 보다 효율적이다. 트랜잭션이 "전부이거나 전무(all or nothing)"를 기초로 수행되기를 요구하는 것도 흔한 관례이다. 다시 말하면, 트랜잭션의 모든 부분이 완료될 수 없다면 레코드는 수정되지 않는다. 그렇지 않으면 표의 무결성이 손상될 수 있다.
이 데이타베이스 처리 제약은 교착 상태(deadlock)를 야기할 수 있다. 도 6에서, 프로그램 스레드 A가 하나의 트랜잭션에서 3개의 레코드를 갱신하고자 할 때 교착 상태가 발생한다. 구매 주문 134가 선적되었다는 것을 반영하도록 레드몬드/처리중 및 레드몬드/선적을 갱신하고, 새로운 구매 주문 136을 반영하도록 시애틀/처리중을 갱신한다. 동시에, 프로그램 스레드 B도 하나의 트랜잭션에서 3개의 레코드를 갱신하고자 한다. 구매 주문 133이 선적되었다는 것을 반영하도록 시애틀/처리중 및 시애틀/선적을 갱신하고, 새로운 구매 주문 135를 반영하기 위하여 레드몬드/처리중을 갱신한다. 트랜잭션을 수행하기 위하여, 레코드가 스레드 A에 의해 갱신되는 동안에 다른 스레드가 이 레코드에 영향을 미치는 것을 막기위해 스레드 A는 레드몬드/처리중 및 레드몬드/선적 상에 배타적 로크(lock)를 획득한다. 그리고 스레드 A는 시애틀/처리중 상에 배타적 로크를 획득하는 것을 시도한다. 동시에, 스레드 B는 시애틀/처리중 및 시애틀/선적 레코드들 상에 배타적 로크를 획득하여 수정하고, 레드몬드/처리중 상에 배타적 로크를 획득하려고 한다. 스레드 A가 이미 레드몬드/처리중을 로킹했기 때문에, 스레드 B는 트랜잭션의 제1 부분을 완료할 수 없다. 그러나, 스레드 B는 스레드 A가 시애틀/처리중을 로킹하려고 시도하기 전에 시애틀/처리중 및 시애틀/선적을 로킹할 수 있다. 따라서, 스레드 A는 트랜잭션의 제2 부분을 완료하지 못하게 된다. 요컨대, 각각의 스레드는 완료하기 위해 서로를 기다리고, 아무도 트랜잭션을 완료할 수 없게 된다. 일부 시스템은 스레드들 중 하나의 스레드를 교착 상태 희생자로 선택하여, 그 희생자의 트랜잭션의 부분적으로 완료된 임의의 부분을 롤백(roll back)하고, 희생자에게 에러를 알린다. 이것이 다른 스레드의 처리를 허용하고 희생자가 트랜잭션을 다시 시도할 수 있지만, 시스템 성능은 역시 떨어진다. 특히, 부분적으로 완료된 트랜잭션을 원상태로 되돌리는 데에 처리 자원 및 메모리가 낭비되며, 이전에 완료된 트랜잭션 부분을 반복하는 것에 의해 더욱 그러하다.
도 7은 교착 상태가 본 발명의 적어도 하나의 실시예에 따라 어떻게 방지되는 지를 도시한다. 집계 값의 표는 구분된 표들로 분할된다. 도 7은 2개의 파티션(굵은 선에 의해 구분됨)을 도시하고, 추가적인 파티션의 존재는 세로의 생략부호에 의해 나타난다. 각각 분할된 표 0, 1 등의 각각은 동일한 래코드를 포함하지만, 그 레코드 내의 값들은 파티션사이에서 보통 상이할 것이다. 도 7의 예에서, 파티션 0은 레드몬드/배달, 레드몬드/처리중, 레드몬드/선적, 시애틀/배달, 시애틀/처리중 및 시애틀/선적에 대한 레코드를 갖는다. 파티션 1도 레드몬드/배달, 레드몬드/처리중, 레드몬드/선적, 시애틀/배달, 시애틀/처리중 및 시애틀/선적에 대한 레코드를 갖는다. 그러나, 파티션 0 내의 레드몬드/배달에 대한 Quantity 및 Count의 값은 파티션 1 내의 레드몬드/배달에 대한 Quantity 및 Count의 값과 상이하다. 하나의 프로그램 스레드만이 한번에 특정 파티션을 액세스하도록 허용된다. 설명을 위해, 도 6의 스레드 A 및 B가 도 7에서 도시된다. 도 7에서, 스레드 A는 파티션 0 상에서 트랜잭션을 수행하는 한편, 동시에 스레드 B는 파티션 1 상에서 트랜잭션을 수행한다. 스레드들이 더이상 동일한 레코드를 액세스하기 위해 경쟁하지 않기 때문에, 교착 상태가 회피된다.
SQL SERVER™ 2000 RDBM 소프트웨어를 사용하여 구현된 본 발명의 일 실시예에서, 도 7의 분할된 표는 도 8에서 도시된 것과 같이 각각의 SQL 표로 구현된다. 파티션 번호가 추가적인 필드("PartitionID")로 포함된다. 이 멀티 파티션 집계표는 도 2의 인스턴스 데이타 표 상의 트리거(trigger)에 의해 유지된다. 본 기술분야에서 알려져 있는 바와 같이, "트리거"는 INSERT, UPDATE 또는 CELETE 문에 의해 자동적으로 호출되는 SQL 저장된 프로시져의 특수 유형이다. 새로운 레코드가 도 2의 인스턴스 데이타 표에 삽입될 때마다, 트리거는 대응하는 컨트리뷰션(contribution)이 도 8의 멀티 파티션 집계표의 파티션들 중 하나의 파티션으로 되게 한다. 마찬가지로, 인스턴스 데이타 표(도 2) 내의 레코드가 갱신될 때, 멀티 파티션 집계표(도 8)의 대응하는 레코드도 갱신된다.
임의의 주어진 시간에서, 도 8의 표 내의 각각의 파티션은 기업 X에 대한 정보를 완성하지 못할 것이다. 인스턴스 데이타 표(도 2)의 하나의 갱신은 파티션 0 내에서의 갱신을 야기할 수 있는 한편, 인스턴스 데이타 표의 다른 갱신은 파티션 1 내에서의 갱신을 야기할 수 있다. 또한, 인스턴스 데이타 표 내의 레코드 생성은 도 8의 하나의 파티션의 표 내의 레코드 갱신을 야기할 수 있고, 동일한 인스턴스 데이타 레코드의 나중 갱신은 상이한 파티션 내의 레코드 갱신을 야기할 수 있다. 예를 들어, 새로운 구매 주문 번호 140(레드몬드, Quantity=200)을 도 2에 추가하는 것은 도 8의 <PartitionID=1>/<City=레드몬드>/<ProcessState=처리중> 레코드의 Quantity 및 Count 필드가 200 및 1만큼 증가되는 것을 야기할 수 있다. 그러나, 구매 주문 140에 대한 상품이 선적될 때, 도 8의 <PartitionID=3>/<City=레드몬드>/<ProcessState=처리중> 레코드의 Quantity 및 Count 필드는 200 및 1만큼 감소될 수 있으며, <PartitionID=3>/<City=레드몬드>/<ProcessState=선적> 레코드의 동일한 필드는 200 및 1만큼 증가될 수 있다. 따라서, 파티션들이 결합되어 기업 X에게 완전한 데이타 집계표를 제공한다. 특히, 다음의 SQL 코드는 적어도 일 실시예에서 사용된다.
제1 이탤릭 이름("view_name")은 각각의 파티션이 결합된 뷰에 대한 이름이다. 제2 이탤릭 이름("multi_partition_table")은 도 8의 멀티 파티션 집계표의 이름이다. 결과 표("view_name")는 도 9에서 도시되는 형식일 것이다. 멀티 파티션 집계표의 각각의 파티션이 상대적으로 적은 레코드를 포함하고 있기 때문에, 파티션들은 상대적으로 신속하게 결합될 수 있다. 요컨대, 요약되는 것이다. 다른 실시예에서, 각각의 파티션은 개별 표로 구현될 수 있고, SQL JOIN 문을 갖는 CREATE VIEW 명령문에서 결합될 수 있다.
각각의 파티션이 한번에 하나의 프로그램 스레드에 의해서만 액세스되므로, 스레드는 파티션을 액세스하기 위하여 가상의 토큰을 소유해야 한다. 본 발명의 일 실시예에서, 토큰은 Get_Mutex라고 불리우는 특수 저장된 프로시져 호출에 의해 획득된다. 상술된 바와 같이, 멀티 파티션 집계표는 SQL 트리거에 의해 유지된다. 멀티 파티션 집계표 내의 행이 갱신될 수 있기 전에, 트리거 내의 하나 이상의 명령은 어느 행이 갱신되는 지를 나타내어야 한다. 그 명령의 일부로서, Get_Mutex 저장된 프로시져가 호출된다. Get_Mutex 프로시져는 표의 PartitionID 열에 대한 값을 리턴한다. 스레드가 리턴된 PartitionID 값을 갖는 레코드 상에서 트랜잭션을 수행하는 동안, 다른 스레드는 동일한 값을 획득하는 것으로부터 차단되어, 또다른 스레드에 의해 갱신되는 동안 파티션을 액세스하는 것으로부터 차단된다.
이전의 예를 참조하면, 구매 주문 140에 대한 레코드가 초기에 인스턴스 데이타 표(도 2)에서 생성될 때, 트리거가 시동된다. 그 트리거는,
Get_Mutex를 호출하여 PartitionID에 대한 값을 수신하고;
갱신될 파티션 내의 행(들)을 결정하고;
PartitionID가 Get_Mutex 프로시져에 의해 리턴된 PartitionID 값과 동일하고, City가 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 City 값과 동일하며, ProcessState가 "처리중"인 멀티 파티션 집계표의 행을 식별하고;
그 행의 Quantity에 대한 값을 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 Quantity 값 만큼 증가시키고;
그 행의 Count에 대한 값을 1만큼 증가시킨다.
더 설명하자면, 구매 주문 140에 대한 기존의 인스턴스 데이타 표 레코드는 나중에 갱신되어 ProcessState를 처리중에서 선적으로 변경한다. 트리거 내의 추가적인 논리에서는,
Get_Mutex를 호출하여 PartitionID에 대한 값을 수신하고;
갱신될 파티션 내의 행(들)을 결정하고;
PartitionID가 Get_Mutex 프로시져에 의해 리턴된 값과 동일하고, City가 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 City 값과 동일하며, ProcessState가 "처리중"인 멀티 파티션 집계표의 행을 식별하고;
그 행의 Quantity에 대한 값을 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 Quantity 값 만큼 감소시키고;
그 행의 Count 값을 1만큼 감소시키고;
PartitionID가 Get_Mutex 프로시져에 의해 리턴된 값과 동일하고, City가 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 City 값과 동일하며, ProcessState가 "선적"인 멀티 파티션 집계표의 행을 식별하고;
그 행의 Quantity에 대한 값을 구매 주문 140에 대한 인스턴스 데이타 레코드 내의 Quantity 값 만큼 증가시키고;
그 행의 Count 값을 1만큼 증가시킨다.
구매 주문 140 ProcessState가 선적에서 배달로 변경될 때, 유사한 논리가 멀티 파티션 집계표 내의 적합한 행을 식별 및 수정할 것이다.
Get_Mutex에 대한 일 실시예가 도 10에서 도시된다. 우선, RTA_Mutex라고 불리우는 단일-열 표가 생성된다("create table RTA_Mutex"). RTA_Mutex 표는 도 8의 멀티 파티션 집계표에 파티션들이 있는 것과 동일한 수의 행을 갖는다. 각각의 필드는 PartitionID 값들 중 하나의 값을 할당받는다. 도 10의 예에서, 도 8의 표가 10개의 파티션(즉, PartitionID는 0에서 9의 정수 값을 가짐)을 포함한다고 가정한다. 다음으로, Get_Mutex 저장된 프로시져가 생성된다. 지역 변수 @par를 선언한 후에, 지역 @par 변수는 RTA_Mutex 표의 행들 중 하나의 행으로부터 값을 할당받는다. 특히, "select"문은 PartitionID가 "@@spid%10"인 RTA_Mutex 표로부터 PartitionID의 값을 @par에 할당한다. 시스템 함수 @@spid는 현재 사용자 프로세스의 서버 프로세스 식별자를 리턴한다. 다시 말하면, @@spid 함수는 Get_Mutex 저장된 프로시져를 호출한 프로그램 스레드를 식별하는 번호를 리턴한다. 모듈로(modulo) 수학 연산자("%")는 프로그램 스레드 식별자를 10으로 나눈 나머지를 리턴한다. 그리고 프로시져는 PartitionID의 값이 그 나머지와 동일한 RTA_Mutex의 행을 발견하여, 그 행을 로킹하고 배타적 로크가 힌트{"(xlock)"}를 로킹한다. 그리고, 그 로킹된 RTA_Mutex 행 내의 PartitionID의 값이 Get_Mutex 저장된 프로시져의 결과로서 리턴된다. 그 행의 배타적 로크 때문에, 다른 프로그래밍 스레드는 RTA_Mutex 표의 그 행을 액세스하는 것이 허용되지 않아서, 이전에 그 PartitionID 값을 획득했던 트랜잭션이 완료될 때까지 그 PartitionID 값을 획득할 수 없다.
설명하면, 231의 식별자를 갖는 프로그램 스레드는 Get_Mutex를 호출한다. 231을 10으로 나눈 나머지는 1이다. 따라서, Get_Mutex에 의해 프로그래밍 스레드로 리턴된 값은 PartitionID가 1인 RTA_Mutex 내의 필드 값이다. Get_Mutex로부터 값이 리턴될 때, 프로그램 스레드 231은 도 8의 파티션 1의 행(들)을 갱신할 수 있다. 스레드 231이 파티션 1을 갱신하는 동안, 프로그램 스레드 161은 Get_Mutex를 호출한다. 그러나, 스레드 231의 트랜잭션이 완료되지 않았기 때문에, 스레드 161은 PartitionID에 대하여 값 1을 보유하고 있는 RTA_Mutex의 행을 액세스할 수 없다. 스레드 161은 필요한 RTA_Mutex 행의 배타적 로크가 해제될 때까지(즉, 스레드 231의 트랜잭션이 완료될 때까지), 큐에서 대기한다. 추가적인 스레드가 그 RTA_Mutex 행을 액세스하는 것을 시도한다면, 역시 선입후출(first-in-first-out) 기반의 큐에서 대기한다. 특히, 스레드 161은 Get_Mutex 호출로부터 값이 리턴될 때까지 진행되지 않으므로, 스레드 161은 스레드 231이 파티션 1을 액세스하는 동안 파티션 1을 액세스하려고 시도하지 않는다. 스레드 161이 큐에서 xlock이 해제되기를 기다리고 있는 동안, 스레드 154는 Get_Mutex를 호출한다. PartitionID=4인 RTA_Mutex의 행에 현재 로크가 없기 때문에, Get_Mutex는 값(4)을 스레드 154로 리턴한다.
도 10은 Get_Mutex 프로시져가 구현될 수 있는 방법의 일례일 뿐이다. 다른 예로서, 파티션을 액세스하고자 하는 모든 스레드는 선입선출 큐에 들어갈 수 있다. 큐 내의 각각의 스레드는 제1 사용가능한 파티션을 할당받을 수 있다.
일 실시예에서, 파티션의 수는 데이타베이스 서버 상의 프로세서의 수와 적어도 동일하고, 바람직하게는 그것보다 더 크다.
전술된 바와 같이, 인스턴스 데이타 표(도 2)의 크기는 점점 더 많은 구매 주문이 접수되는 사이에 증대할 것이다. 그러나, 도 9의 집계표(또는 도 8의 멀티 파티션 집계표)의 크기는 추가적인 집계 필드(예를 들어, 레드몬드/취하 및 시애틀/취하)가 추가되지 않는다면 증대하지 않을 것이다. 그러나, 표의 크기가 증대하지 않을지라도, Quantity 및 Count 열의 값은 증가할 것이다. 종종, 조직은 특정 시간 "윈도우" 내의 사건에 대한 집계 데이타만을 요구한다. 예를 들어, 기업 X는 현재 처리중인 구매 주문, 현재 선적되고 있는 주문, 및 마지막 24시간 내에 배달된 주문에 대한 집계 데이타를 요구할 수 있다. 또한, 기업 x는 예를 들어, 사건이 발생한 날의 시간에 기초하여 데이타를 더 정렬하기를 원할 수 잇다. 도 11을 참조하여, 기업 X 관리자는 얼마나 많은 구매 주문이 최근 8:00 a.m.동안 레드몬드 및 시애틀에서 처리되었고 아직 선적되지 않았는지(예에서는 0), 얼마나 많은 구매 주문이 최근 9:00 a.m.동안 레드몬드 및 시애틀에서 처리되었고 아직 선적되지 않았는지(예에서는 0), 얼마나 많은 구매 주문이 최근 10:00 a.m.동안 레드몬드 및 시애틀에서 처리되었고 아직 선적되지 않았는지(2 및 1) 등을 알기를 원한다. 마찬가지로, 관리자는 얼마나 많은 구매 주문이 8:00 a.m.에 선적되었지만 아직 배달되지 않았는지, 얼마나 많은 구매 주문이 9:00 a.m.에 선적되엇지만 아직 배달되지 않았는지 등도 알기를 원한다. 관리자는 얼마자 많은 구매 주문이 그 기간동안 그 위치로부터 배달되었는지도 알기를 원한다. 그러나, 이것은 집계표가 매시간 증대한다는 것을 의미한다. "처리중" 또는 "선적"이고 궁극적으로 "배달"이 될 구매 주문과 달리, "배달" 구매 주문은 다른 상태로 변환하지 않는다. 달리 설명하면, 구매 주문이 특정 날짜의 특정 시간에 "배달"이 되면, 레코드는 특정 액션이 취해지지 않는 경우 그 시간/날짜에 대한 집계표 내에 존속할 것이다. 따라서, 시간이 지나면, 표는 커지고 질의에 느려질 것이다. 한편, 관리자는 더 긴 기간(예를 들어 지난 주 등)이 지나 위치로부터 배달된 구매 주문의 총 수를 아는 데는 덜 관심을 가진다. 그러한 정보는 특정 목적에 유용할 수 있지만, 비교적 드물게 필요하다.
도 12는 본 발명의 적어도 일 실시예에서, 비활성 구매 주문 인스턴스에 대한 데이타가 특정 나이에 도달할 때 어떻게 실시간 집계표로부터 제거되는 지를 도시한다. 간단하게, 하나의 파티션이 도시된다. 그러나, 본 기술분야에 숙련된 자는 다음의 설명에 기초하여 이해할 것이므로, 도 12의 실시예는 상술된 멀티 파티션 실시예와 결합하여 설명될 수 있다.
도 12에서 나타나는 바와 같이, 도 9의 실시간 집계표에 TimeSlice 및 Hour에 대한 열이 추가되었다. TimeSlice는 인스턴스 데이타 표(도 2)가 인스턴스가 완료된 것을 반영하도록 갱신되는 서버 날짜 및 시간{시각(hour) 정밀도를 가짐}이다. 예를 들어, 주문된 상품이 고객에게 배달되었을 때, 구매 주문은 완료된다. 시각은 관련 사건이 발생한 날짜의 시각이다. 예를 들어, 흔한 케이스로 요구되는 것는 아니지만, TimeSlice의 시간 컴포넌트는 완료된 레코드에 대한 Hour와 동일할 수 있다.
이전의 예에서와 같이, 도 12의 실시간 집계표의 데이타는 인스턴스 데이타 표의 데이타 레코드가 삽입 또는 갱신될 때 시동되는 트리거에 의해 수정된다. TimeSlice 열의 값은 2개의 규칙에 따라 트리거에 의해 자동적으로 생성된다. 레코드에 더 많은 갱신이 예상되면(예를 들어 상품이 아직 배달되지 않음), TimeSlice는 NULL이다. 그렇지 않으면, 현재 시간(시각 정밀도를 가짐) 및 날짜를 나타내는 숫자가 생성된다. 특히, 완료된 구매 주문에 대한 NULL이 아닌 TimeSlice 값은 완료된 구매 주문에 대한 데이타의 집계를 방해하지 않는다. TimeSlice의 시간 컴포넌트는 시각 정밀도만을 갖기 때문에, 동일한 도매점으로부터 동일한 1 시간 기간동안에 배달된 구매 주문은 단일 레코드 내에 집계될 수 있다. 예를 들어, 구매 주문 126 및 128(도 2)은 각각 3:10 p.m. 및 3:05 p.m.에 배달되었다. 도 12에서 도시되는 바와 같이, 1월 20일 3 p.m./3/시애틀/전달에 대한 레코드는 Count 2 및 Quantity 790을 나타내며, 이것은 도 2의 구매 주문 126 및 구매 주문 128에 대한 데이타 레코드와 서로 관련된다.
트리거가 도 12의 실시간 집계표를 수정할 때마다, 트리거는 표 내의 임의의 완료된 인스턴스 집계 데이타가 오래된 것 즉, 더이상 필요하지 않은 것인지도 결정한다. 이 예에서, 24시간 이상 전에 완료된 인스턴스에 대한 집계 데이타는 오래된 것이며, 집계 데이타 표에서 삭제되어야 한다는 것을 가정한다. 따라서, 트리거가 도 12의 표를 수정할 때마다, 트리거는 시간 슬라이스 기간에서의 최근 시간이 현재 시각 이전으로 24시간 이상인 TimeSlice 값을 갖는 레코드를 삭제한다. 트리거가 1월 21일 1:05 p.m.에 도 12의 표를 갱신하면, 1월 20일 12 p.m./12/시애틀/배달에 대한 레코드는, 그 레코드 내의 모든 데이타가 24시간 이상 전에 완료된 구매 주문에 대응하기 때문에 삭제될 것이다. 적어도 하나의 실시예에서, 도 12의 표는 TimeSlice 데이타를 사용자로부터 숨기는 뷰에서 디스프레이된다.
도 13은 멀티 파티션 내의 실시간 데이타 집계표(도 12와 같음)를 유지하는 트리거에 대한 논리를 나타내는 흐름도이다. 특히, 도 13의 흐름도는 파티션에서 하나 이상의 집계 데이타 레코드를 갱신하는 트랜잭션 동안 각각의 개별 프로그래밍 스레드에서 트리거가 따르는 논리를 도시한다. 각각의 스레드는 개별 파티션을 갱신하고, 이 때 각각의 파티션은 도 12의 표와 유사한 포맷을 갖는다. 실행 중에, 트리거는 SQL 데이타베이스 서버에 의해 메모리(예를 들어, RAM) 내에 유지되는 "inserted" 및 "deleted"라고 불리우는 2개의 시스템 표를 액세스한다. inserted 및 deleted 표가 데이타베이스 서버에 의해 자동적으로 생성되고, 레코드를 삽입하거나 인스턴스 데이타 표(도 2와 같음)의 기존 레코드를 갱신하려는 진행 시도 동안 영향을 받은 행으로부터의 데이타의 복사본을 임시적으로 저장한다. 특히, inserted 표는 인스턴스 데이타 표의 행에 삽입된 값을 포함하고, deleted 표는 인스턴스 데이타 표의 갱신된 행에서 대체된 값을 포함한다.
시작 후에, 트리거는 우선 블록(102)에서 토큰을 획득한다. 상술한 바와 같이, 트리거는 Get_Mutex와 같은 프로시져로 호출에 의해 토큰을 획득한다. 블록(104)에서, 트리거는 인스턴스 데이타 레코드가 갱신될 지를 결정한다. 특히, 트리거는 deleted 표가 비어있는 지를 결정한다. deleted 표가 비어있지 않은 경우, deleted 표 내의 Quantity 값은 블록(106)에서 그 파티션의 적합한 레코드에 대한 Quantity 값을 감소시키는 데 사용된다. 특히, 트리거는 Hour가 인스턴스 데이타 레코드가 이전의 ProcessState 값으로 갱신되는 동안의 시각과 동일하고, City가 갱신된 인스턴스 데이타 레코드의 도시와 동일하고, ProcessState가 갱신된 레코드의 이전의 처리 상태와 동일한 파티션 내의 레코드를 식별한다. 그 레코드에 대한 Count 값도 1만큼 감소된다. 블록(108)에서, 트리거는 그 파티션 내의 임의의 레코드가 TimeSlice에 대하여 NULL 값을 갖고 Count 값 0을 갖는 지를 결정한다. 갖는다면, 그 레코드는 삭제된다.
블록(110)에서, 트리거는 갱신되는(또는 삽입되는) 인스턴스 데이타 레코드가 완료되는 지를 결정한다. 다시 말하면, 트리거는 더 이상의 갱신이 예상되는 지를 결정한다. 이것은 다양한 방법으로 수행될 수 있다. 예를 들어, "IsComplete" 열이 각각의 인스턴스 레코드에 추가될 수 있고 갱신이 마지막일 때 "1"로 설정될 수 있다. 다른 실시예에서, 다양한 처리 상태 값(예를 들어, "배달" 또는 "취하")이 인스턴스에 대한 처리 완료를 신호할 수 있다. 인스턴스 데이타 레코드가 완료되지 않은 경우(즉, 구매 주문 인스턴스가 갱신되고 그 이상의 갱신이 예상되는 것에 관하여 처리가 아직도 활성임), "inserted" 표로부터의 Quantity 값은 블록(112)에서 TimeSlice가 NULL이고, Hour가 인스턴스 데이타 레코드가 현재의 ProcessState 값으로 갱신된 시간과 동일하고, City가 갱신된 인스턴스 데이타 레코드의 도시와 동일하고, ProcessState가 갱신된 인스턴스 데이타 레코드의 현재 ProcessState 값과 동일한 집계표 파티션 내의 레코드의 Quantity 값을 증가시키는 데 사용된다. 그 파티션 레코드 내의 Count 값도 1만큼 증가된다. 그리고 트리거는 종료한다.
블록(110)에서, 트리거가 갱신된 인스턴스 데이타 레코드가 완료된 것으로 결정한다면, TimeSlice 값은 블록(114)에서 생성된다. 블록(116)에서, 트리거는 선택된 시간 윈도우의 외측에서(예를 들어, 24시간보다 오래됨) TimeSlice 값을 갖는 모든 레코드를 삭제한다. 그리고 트리거는 TimeSlice 값이 방금 생성된 TimeSlice 값과 동일하고, Hour가 완료 시각과 동일하고, City가 갱신된 인스턴스 데이타 레코드의 도시와 동일하고, ProcessState가 완료된 인스턴스 데이타 레코드로부터의 값(예를 들어, "배달")과 동일한 파티션 레코드를 식별(또는, 필요시 생성)한다. "inserted" 표로부터의 Quantity 값은 식별된(또는, 생성된) 파티션 레코드의 Quantity 값을 증가시키는 데 사용된다. 그 파티션 레코드에 대한 Count 값도 1만큼 증가한다. 그리고 트리거는 종료한다.
다른 실시예에서, 도 13의 트리거 논리는 인스턴스 데이타 표 내의 다수의 레코드의 갱신을 수용하도록 수정될 수 있다. 블록(112 또는 118) 후에 종료하는 것 대신에, 트리거는 인스턴스 데이타 표의 배치 갱신의 일부로서 갱신될 추가적인 인스턴스 레코드가 있는 지를 결정한다. 있다면, 트리거 논리는 블록(104)으로 되돌아 간다. 없다면, 트리거는 종료한다. 다른 실시예에서, 시간 윈도우는 사용자에 의해 조정될 수 있다.
본 발명이 예로서 가상의 기업 유형을 사용하여 설명되었지만, 본 발명이 특정 유형의 기업, 조직 또는 액티비티로 한정되는 것이 아님을 기억해야 한다. 또한, 본 발명은 데이타베이스 레코드 내의 필드 값을 합산함으로써 값이 집계되는 구현예로 한정되는 것은 아니다. 단지 일례로서, 집계 값이 데이타베이스 레코드 내의 필드 값의 평균을 나타내는 집계표가 생성될 수 있다. 따라서, 본 발명을 수행하는 특정 예가 개재되었지만, 본 기술분야에 숙련된 기술자는 첨부된 청구항에서 밝힌 본 발명의 취지 및 범주 내에서 상술된 시스템 및 기술에 대한 수많은 변동 및 치환이 있음을 이해할 것이다. 상술한 것과 그 이외의 변경은 첨부된 청구항에 의해 정의된 본 발명의 범주 내에 있다.
본 발명은 다수의 액티비티(activity) 인스턴스에 대한 정보를 집계하고 그 집계를 유지하는 방법을 제공한다.
도 1은 가상의 도매 기업에 의한 고객 주문의 처리를 도시하는 블록도.
도 2는 도 1의 기업에 대한 인스턴스 데이타 표의 일부.
도 3은 도 2의 표의 다양한 필드로부터 데이타를 집계하는 표.
도 4는 새로운 인스턴스 데이타 레코드를 반영하기 위한 집계된 데이타 표의 갱신을 도시.
도 5는 기존 인스턴스 데이타 레코드의 갱신을 반영하기 위한 집계된 데이타 표의 갱신을 도시.
도 6은 다수의 프로그램 스레드들 간의 교착 상태를 도시.
도 7은 본 발명의 적어도 하나의 실시예에 따른 멀티 파티션 집계표를 도시.
도 8은 본 발명의 적어도 하나의 실시예에 따른 도 7의 집계표의 구현을 도시.
도 9는 본 발명의 적어도 하나의 실시예에 따른 멀티 파티션 집계표의 파티션들을 결합시키는 뷰를 도시.
도 10은 프로그램 스레드에 파티션을 할당하는 저장된 프로시져의 일 구현을 도시.
도 11은 기업 이정표 시간소인이 집계 기준으로 사용되는 집계 데이타를 제공하는 다른 표를 도시.
도 12는 본 발명의 일 실시예에 따라 오래된 집계 데이타의 삭제를 용이하게 하는 표를 도시.
도 13은 본 발명의 적어도 하나의 실시예에 따라 실시간 데이타 집계표를 유지하는 트리거에 대한 논리를 도시하는 흐름도.

Claims (44)

  1. 다수의 데이타베이스 레코드의 필드들에 들어 있는 값들의 집계를 유지하기 위한 방법에 있어서,
    다수의 집계 그룹을 생성하는 단계 -각각의 그룹은 다수의 집계 레코드를 포함하고, 각각의 집계 레코드는 상기 다수의 데이타베이스 레코드의 별개의 서브세트의 필드들에 들어 있는 값들의 집계를 위한 값을 포함함-;
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시 제1 집계 그룹을 선택하는 단계;
    상기 삽입되거나 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션의 일부로서 상기 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계;
    상기 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 상기 제1 집계 그룹의 후속 선택을 금지하는 단계;
    상기 제1 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하는 단계; 및
    상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 각각의 집계 그룹은 멀티 파티션 집계표(multi-partition aggregation table)의 개별 파티션인 방법.
  3. 제1항에 있어서,
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하는 단계; 및
    상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하는 단계를 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 방법.
  5. 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 3개의 집계 그룹을 생성하는 단계를 포함하는 방법.
  6. 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 10개의 집계 그룹을 생성하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 제1항의 단계들을 이행하는 데 사용되는 컴퓨터 내의 프로세서의 수를 초과하는 수의 집계 그룹을 생성하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 제1 집계 그룹을 선택하는 단계는 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,
    상기 후속 선택을 금지하는 단계는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 단계를 포함하는 방법.
  9. 제8항에 있어서,
    집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하는 단계; 및
    상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하는 단계
    를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 다수의 데이타베이스 레코드 각각은 조직 액티비티의 인스턴스에 대응하고,
    상기 다수의 데이타베이스 레코드 각각은 상기 대응하는 인스턴스가 여러 처리 상태 중 한 상태에 있는 것을 나타내는 값을 갖는 필드를 포함하고,
    각각의 집계 그룹은 시간 정렬된 집계 레코드들을 포함하고, 각각의 시간 정렬 집계 레코드는 그 시간 정렬 집계 레코드와 관련된 기간 동안 상기 여러 처리 상태 중 한 상태에 있는 인스턴스들에 대한 집계 값을 갖는 방법.
  11. 제10항에 있어서, 상기 여러 처리 상태 중 한 상태는 완료된 인스턴스를 포함하고, 상기 방법은
    미리 선택된 시간 윈도우의 외측에서 완료된 인스턴스에 대응하는 집계 레코드를 삭제하는 단계
    를 더 포함하는 방법.
  12. 다수의 처리 상태 중 한 상태를 각각 갖는 다수의 조직 액티비티의 인스턴스에 관한 집계 데이타를 유지하는 방법에 있어서,
    집계 데이타 표에 다수의 레코드를 생성하는 단계 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-; 및
    미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하도록 상기 집계 데이타 표를 갱신하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서, 상기 집계 데이타 표로부터 레코드를 삭제하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 방법.
  14. 제12항에 있어서, 상기 집계 데이타 표를 갱신하는 단계는 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 단계를 포함하는 방법.
  15. 제12항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며, 상기 방법은
    완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값(null value)을 할당하는 단계; 및
    상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값(non-null value)을 할당하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고, 상기 방법은
    상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하는 단계;
    상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하는 단계;
    상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하는 단계;
    상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하는 단계; 및
    상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서, 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하는 단계를 포함하는 방법.
  18. 명령 시퀀스를 나타내는 데이타를 저장한 컴퓨터 판독가능 매체에 있어서,
    상기 명령은 프로세서에 의해 실행될 때 상기 프로세서가
    다수의 집계 그룹을 생성하는 단계 -각각의 그룹은 다수의 집계 레코드를 포함하고, 각각의 집계 레코드는 상기 다수의 데이타베이스 레코드의 별개의 서브세트의 필드들에 들어 있는 값들의 집계를 위한 값을 포함함-;
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시 제1 집계 그룹을 선택하는 단계;
    상기 삽입되거나 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션의 일부로서 상기 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계;
    상기 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 상기 제1 집계 그룹의 후속 선택을 금지하는 단계;
    상기 제1 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하는 단계; 및
    상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계
    를 포함하는 단계들을 행하도록 하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서, 각각의 집계 그룹은 멀티 파티션 집계표(multi-partition aggregation table)의 개별 파티션인 컴퓨터 판독가능 매체.
  20. 제18항에 있어서,
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하는 단계; 및
    상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하는 단계
    를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  21. 제18항에 있어서,
    상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 컴퓨터 판독가능 매체.
  22. 제18항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 3개의 집계 그룹을 생성하는 단계를 포함하는 컴퓨터 판독가능 매체.
  23. 제18항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 10개의 집계 그룹을 생성하는 단계를 포함하는 컴퓨터 판독가능 매체.
  24. 제18항에 있어서,
    상기 제1 집계 그룹을 선택하는 단계는 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,
    상기 후속 선택을 금지하는 단계는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 단계를 포함하는 컴퓨터 판독가능 매체.
  25. 제24항에 있어서,
    집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하는 단계; 및
    상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하는 단계
    를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  26. 제18항에 있어서,
    상기 다수의 데이타베이스 레코드 각각은 조직 액티비티의 인스턴스에 대응하고,
    상기 다수의 데이타베이스 레코드 각각은 상기 대응하는 인스턴스가 여러 처리 상태 중 한 상태에 있는 것을 나타내는 값을 갖는 필드를 포함하고,
    각각의 집계 그룹은 시간 정렬된 집계 레코드들을 포함하고, 각각의 시간 정렬 집계 레코드는 그 시간 정렬 집계 레코드와 관련된 기간 동안 상기 여러 처리 상태 중 한 상태에 있는 인스턴스들에 대한 집계 값을 갖는 컴퓨터 판독가능 매체.
  27. 제26항에 있어서, 상기 여러 처리 상태 중 한 상태는 완료된 인스턴스를 포함하고,
    미리 선택된 시간 윈도우의 외측에서 완료된 인스턴스에 대응하는 집계 레코드를 삭제하는 단계
    를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  28. 명령 시퀀스를 나타내는 데이타를 저장한 컴퓨터 판독가능 매체에 있어서,
    상기 명령은 프로세서에 의해 실행될 때 상기 프로세서가
    집계 데이타 표에 다수의 레코드를 생성하는 단계 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-; 및
    미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하도록 상기 집계 데이타 표를 갱신하는 단계
    를 포함하는 단계들을 행하도록 하는 컴퓨터 판독가능 매체.
  29. 제28항에 있어서, 상기 집계 데이타 표로부터 레코드를 삭제하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 컴퓨터 판독가능 매체.
  30. 제28항에 있어서, 상기 집계 데이타 표를 갱신하는 단계는 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 단계를 포함하는 컴퓨터 판독가능 매체.
  31. 제28항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며,
    완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값을 할당하는 단계; 및
    상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값을 할당하는 단계
    를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  32. 제28항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고,
    상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하는 단계;
    상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하는 단계;
    상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하는 단계;
    상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하는 단계; 및
    상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하는 단계
    를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  33. 제32항에 있어서, 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
  34. 다수의 데이타베이스 레코드의 필드들에 들어 있는 값들의 집계를 유지하기 위한 데이타 처리 장치에 있어서,
    적어도 하나의 데이타 저장 장치;
    적어도 하나의 사용자 입력 장치; 및
    상기 저장 장치 및 상기 사용자 입력 장치에 동작 접속된 프로세서
    를 포함하고,
    상기 적어도 하나의 데이타 저장 장치는 실행시 상기 프로세서를
    다수의 집계 그룹을 생성하고 -각각의 그룹은 다수의 집계 레코드를 포함하고, 각각의 집계 레코드는 상기 다수의 데이타베이스 레코드의 별개의 서브세트의 필드들에 들어 있는 값들의 집계를 위한 값을 포함함-;
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시 제1 집계 그룹을 선택하고;
    상기 삽입되거나 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션의 일부로서 상기 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하고;
    상기 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 상기 제1 집계 그룹의 후속 선택을 금지하고;
    상기 제1 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하며;
    상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하도록
    구성하는 명령 세트를 저장하고 있는 데이타 처리 장치.
  35. 제34항에 있어서,
    상기 명령 세트는 실행시 상기 프로세서를
    상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하고;
    상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하도록
    구성하는 추가 명령을 포함하는 데이타 처리 장치.
  36. 제34항에 있어서,
    상기 명령 세트는 실행시 상기 프로세서를 상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하도록 구성하는 추가 명령을 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 데이타 처리 장치.
  37. 제34항에 있어서,
    상기 제1 집계 그룹의 선택은 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,
    상기 후속 선택의 금지는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 것을 포함하는 데이타 처리 장치.
  38. 제37항에 있어서,
    상기 명령 세트는 실행시 상기 프로세서를
    집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하고;
    상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하도록
    구성하는 추가 명령을 더 포함하는 데이타 처리 장치.
  39. 다수의 처리 상태 중 한 상태를 각각 갖는 다수의 조직 액티비티의 인스턴스에 관한 집계 데이타를 유지하기 위한 데이타 처리 장치에 있어서,
    적어도 하나의 데이타 저장 장치;
    적어도 하나의 사용자 입력 장치; 및
    상기 저장 장치 및 상기 사용자 입력 장치에 동작 접속된 프로세서
    를 포함하고,
    상기 적어도 하나의 기억 장치는 실행시 상기 프로세서를
    집계 데이타 표에 다수의 레코드를 생성하고 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-;
    미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하여 상기 집계 데이타 표를 갱신하도록
    구성하는 명령 세트를 저장하고 있는 데이타 처리 장치.
  40. 제39항에 있어서, 상기 명령 세트는 실행시 상기 프로세서를 상기 집계 데이타 표로부터 레코드를 삭제하도록 구성하는 추가 명령을 포함하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 데이타 처리 장치.
  41. 제39항에 있어서, 상기 집계 데이타 표의 갱신은 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 것을 포함하는 데이타 처리 장치.
  42. 제39항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며, 상기 명령 세트는 실행시 상기 프로세서를
    완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값을 할당하고;
    상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값을 할당하도록
    구성하는 추가 명령을 포함하는 데이타 처리 장치.
  43. 제42항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고, 상기 명령 세트는 실행시 상기 프로세서를
    상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하고;
    상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하고;
    상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하고;
    상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하며;
    상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하도록
    구성하는 추가 명령을 포함하는 데이타 처리 장치.
  44. 제43항에 있어서, 상기 명령 세트는 실행시 상기 프로세서를 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하도록 구성하는 추가 명령을 포함하는 데이타 처리 장치.
KR1020040055474A 2003-09-26 2004-07-16 실시간 데이타 집계의 자기 유지 KR20050030531A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/670,561 2003-09-26
US10/670,561 US7149736B2 (en) 2003-09-26 2003-09-26 Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions

Publications (1)

Publication Number Publication Date
KR20050030531A true KR20050030531A (ko) 2005-03-30

Family

ID=34194828

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040055474A KR20050030531A (ko) 2003-09-26 2004-07-16 실시간 데이타 집계의 자기 유지

Country Status (6)

Country Link
US (1) US7149736B2 (ko)
EP (2) EP2306381A1 (ko)
JP (1) JP4828102B2 (ko)
KR (1) KR20050030531A (ko)
CN (1) CN1601541B (ko)
AT (1) ATE521944T1 (ko)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7849075B2 (en) 2003-09-15 2010-12-07 Ab Initio Technology Llc Joint field profiling
US8315972B2 (en) * 2003-09-26 2012-11-20 Microsoft Corporation Method for maintaining databases information about multiple instances of an activity generating, updating virtual OLAP cube based on modified star-schema
US7392359B2 (en) * 2003-10-01 2008-06-24 Hewlett-Packard Development Company, L.P. Non-blocking distinct grouping of database entries with overflow
US7526459B2 (en) 2003-11-28 2009-04-28 Manyworlds, Inc. Adaptive social and process network systems
USRE45770E1 (en) 2003-11-28 2015-10-20 World Assets Consulting Ag, Llc Adaptive recommendation explanations
US8600920B2 (en) 2003-11-28 2013-12-03 World Assets Consulting Ag, Llc Affinity propagation in adaptive network-based systems
US8566263B2 (en) 2003-11-28 2013-10-22 World Assets Consulting Ag, Llc Adaptive computer-based personalities
US7539652B2 (en) 2003-11-28 2009-05-26 Manyworlds, Inc. Adaptive self-modifying and recombinant systems
US20090018918A1 (en) 2004-11-04 2009-01-15 Manyworlds Inc. Influence-based Social Network Advertising
US7606772B2 (en) 2003-11-28 2009-10-20 Manyworlds, Inc. Adaptive social computing methods
US7526458B2 (en) * 2003-11-28 2009-04-28 Manyworlds, Inc. Adaptive recommendations systems
US7275055B2 (en) * 2004-02-26 2007-09-25 International Business Machines Corporation Method and system for managing aggregation data structures
US7447718B2 (en) 2004-04-26 2008-11-04 Right90, Inc. Real-time operating plan data aggregation
DE602004024293D1 (de) * 2004-06-23 2010-01-07 Sap Ag System und Verfahren zur Datenverarbeitung
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US7359923B2 (en) * 2004-08-20 2008-04-15 International Business Machines Corporation Online incremental deferred integrity processing and maintenance of rolled in and rolled out data
US7516114B2 (en) * 2004-10-22 2009-04-07 International Business Machines Corporation Visual structuring of multivariable data
US20060190433A1 (en) * 2005-02-23 2006-08-24 Microsoft Corporation Distributed navigation business activities data
US20060224400A1 (en) * 2005-04-01 2006-10-05 Microsoft Corporation Business event notifications on aggregated thresholds
US7774359B2 (en) * 2005-04-26 2010-08-10 Microsoft Corporation Business alerts on process instances based on defined conditions
US8152062B2 (en) 2005-04-29 2012-04-10 Mercatus Technologies Inc. Portable information terminal mountable on shopping cart and removable memory device usable with same
AU2006242976A1 (en) 2005-04-29 2006-11-09 Mercatus Technologies Inc. Communicating information with a personal shopping device
US7627544B2 (en) * 2005-05-20 2009-12-01 Microsoft Corporation Recognizing event patterns from event streams
GB0524348D0 (en) * 2005-11-30 2006-01-04 Ibm Method and system for concurrent processing of list items
US20070150585A1 (en) * 2005-12-28 2007-06-28 Microsoft Corporation Multi-dimensional aggregation on event streams
US7519613B2 (en) * 2006-02-28 2009-04-14 International Business Machines Corporation Method and system for generating threads of documents
CN100456295C (zh) * 2006-06-20 2009-01-28 华为技术有限公司 一种数据系统维护方法及装置
US8806495B2 (en) * 2006-11-20 2014-08-12 Microsoft Corp. Lightweight transactional memory for data parallel programming
US8095474B2 (en) * 2006-11-29 2012-01-10 Caterpillar Inc. Method for processing advanced ship notices (ASNs)
US20080133493A1 (en) * 2006-12-04 2008-06-05 Michael Bender Method for maintaining database clustering when replacing tables with inserts
US8424011B2 (en) * 2007-05-31 2013-04-16 Sap Ag Multiple instance management for workflow process models
US8229966B2 (en) * 2007-09-07 2012-07-24 Teradata Us, Inc. System to generate a structured query language query by using a dimensional hierarchy
GB2460626A (en) * 2008-05-22 2009-12-09 Geotate Bv File creation system and method
JP5086934B2 (ja) * 2008-08-07 2012-11-28 株式会社三菱東京Ufj銀行 データ処理装置及びプログラム
US20100146008A1 (en) * 2008-12-10 2010-06-10 Yahoo! Inc. Light-weight concurrency control in parallelized view maintenance
EP2290562A1 (en) * 2009-08-24 2011-03-02 Amadeus S.A.S. Segmented main-memory stored relational database table system with improved collaborative scan algorithm
US8645377B2 (en) * 2010-01-15 2014-02-04 Microsoft Corporation Aggregating data from a work queue
CN102129425B (zh) * 2010-01-20 2016-08-03 阿里巴巴集团控股有限公司 数据仓库中大对象集合表的访问方法及装置
US9292575B2 (en) 2010-11-19 2016-03-22 International Business Machines Corporation Dynamic data aggregation from a plurality of data sources
EP2668725B1 (en) 2011-01-28 2021-12-22 Ab Initio Technology LLC Generating data pattern information
US10621206B2 (en) 2012-04-19 2020-04-14 Full Circle Insights, Inc. Method and system for recording responses in a CRM system
US10599620B2 (en) * 2011-09-01 2020-03-24 Full Circle Insights, Inc. Method and system for object synchronization in CRM systems
US8468129B2 (en) 2011-09-23 2013-06-18 Loyal3 Holdings, Inc. Asynchronous replication of databases of peer networks
US8533804B2 (en) 2011-09-23 2013-09-10 Loyal3 Holdings, Inc. User login with redirect to home network
JP5295395B2 (ja) * 2012-01-04 2013-09-18 株式会社三菱東京Ufj銀行 データ処理装置
US8938416B1 (en) 2012-01-13 2015-01-20 Amazon Technologies, Inc. Distributed storage of aggregated data
US9218371B2 (en) 2012-02-29 2015-12-22 International Business Machines Corporation Automatic table cleanup for relational databases
US10180960B2 (en) 2012-05-15 2019-01-15 Entit Software Llc Query processing
US10061807B2 (en) 2012-05-18 2018-08-28 Splunk Inc. Collection query driven generation of inverted index for raw machine data
US8682925B1 (en) 2013-01-31 2014-03-25 Splunk Inc. Distributed high performance analytics store
US8516008B1 (en) 2012-05-18 2013-08-20 Splunk Inc. Flexible schema column store
US8935430B2 (en) 2012-06-29 2015-01-13 Verisign, Inc. Secondary service updates into DNS system
US8792633B2 (en) 2012-09-07 2014-07-29 Genesys Telecommunications Laboratories, Inc. Method of distributed aggregation in a call center
CN103729304B (zh) * 2012-10-11 2017-03-15 腾讯科技(深圳)有限公司 数据处理方法及装置
US9239741B2 (en) * 2012-10-16 2016-01-19 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP)
CA2887670C (en) 2012-10-22 2021-05-25 Ab Initio Technology Llc Profiling data with location information
US9900432B2 (en) 2012-11-08 2018-02-20 Genesys Telecommunications Laboratories, Inc. Scalable approach to agent-group state maintenance in a contact center
US9756184B2 (en) 2012-11-08 2017-09-05 Genesys Telecommunications Laboratories, Inc. System and method of distributed maintenance of contact center state
WO2014081895A1 (en) * 2012-11-20 2014-05-30 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9477464B2 (en) 2012-11-20 2016-10-25 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on sliding interval
US10412121B2 (en) 2012-11-20 2019-09-10 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9460135B2 (en) * 2012-12-18 2016-10-04 Webtrends Inc. Methods and automated systems for testing, optimization, and analysis that use robust statistical processing of non-binomial experimental results
US9892026B2 (en) * 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9578171B2 (en) 2013-03-26 2017-02-21 Genesys Telecommunications Laboratories, Inc. Low latency distributed aggregation for contact center agent-groups on sliding interval
JP5604554B2 (ja) * 2013-04-30 2014-10-08 株式会社三菱東京Ufj銀行 データ処理装置
US9917885B2 (en) 2013-07-30 2018-03-13 International Business Machines Corporation Managing transactional data for high use databases
CN103544302B (zh) * 2013-10-31 2018-06-19 北京锐安科技有限公司 数据库的分区维护方法和装置
US9569481B1 (en) 2013-12-10 2017-02-14 Google Inc. Efficient locking of large data collections
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
US20170032016A1 (en) 2014-03-07 2017-02-02 SYSTEMA Systementwicklung Dip. -inf. Manfred Austen GmbH Real-time information systems and methodology based on continuous homomorphic processing in linear information spaces
AU2015225694B2 (en) 2014-03-07 2019-06-27 Ab Initio Technology Llc Managing data profiling operations related to data type
AU2015316450B2 (en) * 2014-11-12 2016-11-03 Huawei Cloud Computing Technologies Co., Ltd. Method for updating data table of KeyValue database and apparatus for updating table data
US10706073B1 (en) * 2014-12-03 2020-07-07 Amazon Technologies, Inc. Partitioned batch processing for a usage analysis system
US10229150B2 (en) * 2015-04-23 2019-03-12 Splunk Inc. Systems and methods for concurrent summarization of indexed data
US10417189B2 (en) 2015-10-30 2019-09-17 Netapp, Inc. Hybrid model of fine-grained locking and data partitioning
US10452633B2 (en) * 2015-10-30 2019-10-22 Netapp, Inc. Auto-expiring locks based on object stamping
US10546257B2 (en) * 2016-05-09 2020-01-28 International Business Machines Corporation Optimizing event aggregation in an event-driven system
US11182384B2 (en) * 2016-07-25 2021-11-23 Visa International Service Association Event-driven architecture using rolling aggregates
US20180067972A1 (en) 2016-09-07 2018-03-08 International Business Machines Corporation Automatically setting an auto-purge value to multiple tables within a database
CN106598823B (zh) * 2016-10-19 2019-01-25 同盾控股有限公司 一种网络行为特征的差量计算方法和系统
US11379530B2 (en) 2017-01-31 2022-07-05 Splunk Inc. Leveraging references values in inverted indexes to retrieve associated event records comprising raw machine data
US10474674B2 (en) 2017-01-31 2019-11-12 Splunk Inc. Using an inverted index in a pipelined search query to determine a set of event data that is further limited by filtering and/or processing of subsequent query pipestages
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
US10776338B2 (en) 2018-03-29 2020-09-15 Hewlett-Packard Development Company, L.P. Data aggregation data structure
CN109034982B (zh) * 2018-09-05 2022-06-17 满金坝(深圳)科技有限公司 千万级订单表中订单信息加速处理方法及装置
CN109684398A (zh) * 2018-12-24 2019-04-26 普元信息技术股份有限公司 大数据环境下基于多状态实现数据优化管理功能的系统及方法
CN112579616A (zh) * 2019-09-29 2021-03-30 北京国双科技有限公司 任务处理方法、装置、存储介质和电子设备
US11841827B2 (en) * 2021-01-29 2023-12-12 Splunk Inc. Facilitating generation of data model summaries
US11892976B2 (en) 2021-01-29 2024-02-06 Splunk Inc. Enhanced search performance using data model summaries stored in a remote data store
US11748352B2 (en) * 2021-08-26 2023-09-05 International Business Machines Corporation Dynamical database system resource balance
CN113986932B (zh) * 2021-12-28 2022-04-12 恒生电子股份有限公司 数据处理方法、装置、计算机设备及可读存储介质

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319780A (en) * 1987-10-19 1994-06-07 International Business Machines Corporation System that implicitly locks a subtree or explicitly locks a node based upon whether or not an explicit lock request is issued
JPH04167056A (ja) * 1990-10-31 1992-06-15 Hitachi Ltd Almデータベースの更新方式
JPH052610A (ja) * 1991-06-25 1993-01-08 Mitsubishi Electric Corp リレーシヨナルデータベースにおける集約演算処理方式
US5713020A (en) * 1993-09-02 1998-01-27 Microsoft Corporation Method and system for generating database queries containing multiple levels of aggregation
US5590319A (en) * 1993-12-15 1996-12-31 Information Builders, Inc. Query processor for parallel processing in homogenous and heterogenous databases
US5537589A (en) * 1994-06-30 1996-07-16 Microsoft Corporation Method and system for efficiently performing database table aggregation using an aggregation index
CA2167790A1 (en) * 1995-01-23 1996-07-24 Donald S. Maier Relational database system and method with high data availability during table data restructuring
US5717919A (en) * 1995-10-02 1998-02-10 Sybase, Inc. Database system with methods for appending data records by partitioning an object into multiple page chains
US5794241A (en) * 1996-04-08 1998-08-11 Oracle Corporation Method and apparatus for dynamically disabling and enabling table locking for a database
US5822751A (en) * 1996-12-16 1998-10-13 Microsoft Corporation Efficient multidimensional data aggregation operator implementation
US6301616B1 (en) * 1997-04-11 2001-10-09 Microsoft Corporation Pledge-based resource allocation system
US6115705A (en) * 1997-05-19 2000-09-05 Microsoft Corporation Relational database system and method for query processing using early aggregation
US5926818A (en) * 1997-06-30 1999-07-20 International Business Machines Corporation Relational database implementation of a multi-dimensional database
US5943668A (en) * 1997-06-30 1999-08-24 International Business Machines Corporation Relational emulation of a multi-dimensional database
US5940818A (en) * 1997-06-30 1999-08-17 International Business Machines Corporation Attribute-based access for multi-dimensional databases
US5978796A (en) * 1997-06-30 1999-11-02 International Business Machines Corporation Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database
US6205447B1 (en) * 1997-06-30 2001-03-20 International Business Machines Corporation Relational database management of multi-dimensional data
US5905985A (en) * 1997-06-30 1999-05-18 International Business Machines Corporation Relational database modifications based on multi-dimensional database modifications
JP3476349B2 (ja) * 1997-11-12 2003-12-10 三菱電機株式会社 データ処理装置
GB2332540B (en) * 1997-12-18 2002-12-04 Ibm An improved parcel trace system
CA2326513C (en) * 1998-03-27 2009-06-16 Informix Software, Inc. Processing precomputed views
US6122640A (en) * 1998-09-22 2000-09-19 Platinum Technology Ip, Inc. Method and apparatus for reorganizing an active DBMS table
US20010051907A1 (en) * 1998-12-08 2001-12-13 Srihari Kumar Interactive financial portfolio tracking interface
US6502086B2 (en) * 1999-01-04 2002-12-31 International Business Machines Corporation Mapping binary objects in extended relational database management systems with relational registry
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US6442560B1 (en) * 1999-06-22 2002-08-27 Microsoft Corporation Record for multidimensional databases
US6438537B1 (en) * 1999-06-22 2002-08-20 Microsoft Corporation Usage based aggregation optimization
US6430565B1 (en) * 1999-06-22 2002-08-06 Microsoft Corporation Path compression for records of multidimensional database
US6665682B1 (en) * 1999-07-19 2003-12-16 International Business Machines Corporation Performance of table insertion by using multiple tables or multiple threads
US6374263B1 (en) * 1999-07-19 2002-04-16 International Business Machines Corp. System for maintaining precomputed views
US6408292B1 (en) * 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
US6542895B1 (en) * 1999-08-30 2003-04-01 International Business Machines Corporation Multi-dimensional restructure performance when adding or removing dimensions and dimensions members
US6546395B1 (en) * 1999-08-30 2003-04-08 International Business Machines Corporation Multi-dimensional restructure performance by selecting a technique to modify a relational database based on a type of restructure
US6895581B1 (en) * 2000-03-30 2005-05-17 Microsoft Corporation Replaceable classes and virtual constructors for object-oriented programming languages
WO2001075663A2 (en) * 2000-03-31 2001-10-11 Mdsi Mobile Data Solutions Inc. Systems and methods for enhancing connectivity
US6516322B1 (en) * 2000-04-28 2003-02-04 Microsoft Corporation XML-based representation of mobile process calculi
US6505189B1 (en) * 2000-06-15 2003-01-07 Ncr Corporation Aggregate join index for relational databases
US6735587B2 (en) * 2000-07-28 2004-05-11 International Business Machines Corporation Maintaining pre-computed aggregate views incrementally in the presence of non-minimal changes
US6603839B1 (en) * 2000-09-13 2003-08-05 International Business Machines Corporation Automatic transfer of electronic directory entries from directory assistance service to a directory within an electronic communication device
EP1197876A3 (en) * 2000-10-13 2003-04-16 Miosoft Corporation Persistent data storage techniques
AU2002223277A1 (en) * 2000-11-27 2002-06-03 Commonwealth Bank Of Australia Aggregation service
US6633884B2 (en) * 2001-04-03 2003-10-14 Bmc Software, Inc. System and method for analyzing a database for on-line reorganization
US20030005087A1 (en) * 2001-05-24 2003-01-02 Microsoft Corporation Server side sampling of databases
US6728709B1 (en) * 2001-06-22 2004-04-27 Unisys Corporation Locking partitioned database tables
US7024401B2 (en) * 2001-07-02 2006-04-04 International Business Machines Corporation Partition boundary determination using random sampling on very large databases
US20030061132A1 (en) * 2001-09-26 2003-03-27 Yu, Mason K. System and method for categorizing, aggregating and analyzing payment transactions data
US6792429B2 (en) 2001-12-19 2004-09-14 Hewlett-Packard Development Company, L.P. Method for fault tolerant modification of data representation in a large database
US7969306B2 (en) * 2002-01-11 2011-06-28 Sap Aktiengesellschaft Context-aware and real-time item tracking system architecture and scenarios
US8090751B2 (en) 2002-02-05 2012-01-03 Hewlett-Packard Development Company, L.P. Operational data store
US7171427B2 (en) * 2002-04-26 2007-01-30 Oracle International Corporation Methods of navigating a cube that is implemented as a relational object
US20030204421A1 (en) * 2002-04-29 2003-10-30 Value Benefits Insurance Agency, Inc. Integrated system and method for insurance products
US7548935B2 (en) * 2002-05-09 2009-06-16 Robert Pecherer Method of recursive objects for representing hierarchies in relational database systems
US7571187B2 (en) * 2002-05-31 2009-08-04 Microsoft Corporation Support for real-time queries concerning current state, data and history of a process
US7155429B2 (en) * 2002-07-09 2006-12-26 Bridgelogix Corporation Method, apparatus and article of manufacture to aggregate automated transaction procession
US7698338B2 (en) * 2002-09-18 2010-04-13 Netezza Corporation Field oriented pipeline architecture for a programmable data streaming processor
US6768995B2 (en) * 2002-09-30 2004-07-27 Adaytum, Inc. Real-time aggregation of data within an enterprise planning environment
AU2003284118A1 (en) * 2002-10-14 2004-05-04 Battelle Memorial Institute Information reservoir
US7146356B2 (en) * 2003-03-21 2006-12-05 International Business Machines Corporation Real-time aggregation of unstructured data into structured data for SQL processing by a relational database engine
US7089266B2 (en) * 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
US7152778B2 (en) * 2003-06-23 2006-12-26 Bitstock Collecting and valuating used items for sale
WO2005029275A2 (en) * 2003-09-19 2005-03-31 Thomson Global Resources Ag Leveraging informational assets across multiple business units
US8315972B2 (en) * 2003-09-26 2012-11-20 Microsoft Corporation Method for maintaining databases information about multiple instances of an activity generating, updating virtual OLAP cube based on modified star-schema
US7334002B2 (en) * 2004-02-27 2008-02-19 Microsoft Corporation System and method for recovery units in databases
WO2005091138A1 (en) * 2004-03-16 2005-09-29 Grid Analytics Llc System and method for aggregation and analysis of information from multiple disparate sources while assuring source and record anonymity using an exchange hub

Also Published As

Publication number Publication date
EP1519283A2 (en) 2005-03-30
US20050071320A1 (en) 2005-03-31
JP4828102B2 (ja) 2011-11-30
US7149736B2 (en) 2006-12-12
EP1519283A3 (en) 2006-05-10
EP2306381A1 (en) 2011-04-06
EP1519283B1 (en) 2011-08-24
JP2005108186A (ja) 2005-04-21
CN1601541A (zh) 2005-03-30
CN1601541B (zh) 2011-11-30
ATE521944T1 (de) 2011-09-15

Similar Documents

Publication Publication Date Title
KR20050030531A (ko) 실시간 데이타 집계의 자기 유지
JP5209001B2 (ja) アクティビティの複数のインスタンスに関する情報を維持する方法
US7308704B2 (en) Data structure for access control
US7350237B2 (en) Managing access control information
US20190258625A1 (en) Data partitioning and ordering
US20200081879A1 (en) Persistent data storage techniques
US6157928A (en) Apparatus and system for an adaptive data management architecture
WO2000026844A1 (en) Method and apparatus for data management using an event transition network
US20050166091A1 (en) Transaction processing
US20210182266A1 (en) System and method for use of lock-less techniques with a multidimensional database
US10963464B2 (en) Multiple partitioning schemes for partitioned database objects
US20080120309A1 (en) Storing, maintaining and locating information
AU2017219050A1 (en) System and method for fast probabilistic querying role-based access control systems
JP2012138110A (ja) 持続的データ記憶技術
KR20110093860A (ko) 데이터 베이스 내 대용량 업데이트를 실시간으로 집적하는 방법
US20120166164A1 (en) Derived simulations for planning systems
US7711730B2 (en) Method of returning data during insert statement processing
US20150379585A1 (en) Single Sheet Planning
IE84056B1 (en) Transaction processing
IE20030694A1 (en) Transaction processing
IE20030700U1 (en) Transaction processing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid