KR20050030531A - 실시간 데이타 집계의 자기 유지 - Google Patents
실시간 데이타 집계의 자기 유지 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/087—Inventory or stock management, e.g. order filling, procurement or balancing against orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
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
본 특허 문서 개시의 일부는 저작권 보호를 받는 자료를 포함한다. 저작권 소유자는 특허 상품청의 특허 파일 또는 기록에 나타나는 경우, 특허 문서 또는 특허 개시에 대한 다른 사람에 의한 원본 복제에 이의가 없지만, 그렇지 않는 경우 모든 저작권을 보호한다.
본 발명은 기업 또는 기타 조직의 작업흐름을 모니터링하기 위한 방법 및 시스템에 관한 것이다. 더 상세하게는, 본 발명은 다수의 액티비티(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 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하는 단계; 및상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계를 포함하는 방법.
- 제1항에 있어서, 각각의 집계 그룹은 멀티 파티션 집계표(multi-partition aggregation table)의 개별 파티션인 방법.
- 제1항에 있어서,상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하는 단계; 및상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하는 단계를 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 방법.
- 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 3개의 집계 그룹을 생성하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 10개의 집계 그룹을 생성하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 제1항의 단계들을 이행하는 데 사용되는 컴퓨터 내의 프로세서의 수를 초과하는 수의 집계 그룹을 생성하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제1 집계 그룹을 선택하는 단계는 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,상기 후속 선택을 금지하는 단계는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 단계를 포함하는 방법.
- 제8항에 있어서,집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하는 단계; 및상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하는 단계를 더 포함하는 방법.
- 제1항에 있어서,상기 다수의 데이타베이스 레코드 각각은 조직 액티비티의 인스턴스에 대응하고,상기 다수의 데이타베이스 레코드 각각은 상기 대응하는 인스턴스가 여러 처리 상태 중 한 상태에 있는 것을 나타내는 값을 갖는 필드를 포함하고,각각의 집계 그룹은 시간 정렬된 집계 레코드들을 포함하고, 각각의 시간 정렬 집계 레코드는 그 시간 정렬 집계 레코드와 관련된 기간 동안 상기 여러 처리 상태 중 한 상태에 있는 인스턴스들에 대한 집계 값을 갖는 방법.
- 제10항에 있어서, 상기 여러 처리 상태 중 한 상태는 완료된 인스턴스를 포함하고, 상기 방법은미리 선택된 시간 윈도우의 외측에서 완료된 인스턴스에 대응하는 집계 레코드를 삭제하는 단계를 더 포함하는 방법.
- 다수의 처리 상태 중 한 상태를 각각 갖는 다수의 조직 액티비티의 인스턴스에 관한 집계 데이타를 유지하는 방법에 있어서,집계 데이타 표에 다수의 레코드를 생성하는 단계 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-; 및미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하도록 상기 집계 데이타 표를 갱신하는 단계를 포함하는 방법.
- 제12항에 있어서, 상기 집계 데이타 표로부터 레코드를 삭제하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 방법.
- 제12항에 있어서, 상기 집계 데이타 표를 갱신하는 단계는 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 단계를 포함하는 방법.
- 제12항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며, 상기 방법은완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값(null value)을 할당하는 단계; 및상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값(non-null value)을 할당하는 단계를 더 포함하는 방법.
- 제15항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고, 상기 방법은상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하는 단계;상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하는 단계;상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하는 단계;상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하는 단계; 및상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하는 단계를 포함하는 방법.
- 제16항에 있어서, 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하는 단계를 포함하는 방법.
- 명령 시퀀스를 나타내는 데이타를 저장한 컴퓨터 판독가능 매체에 있어서,상기 명령은 프로세서에 의해 실행될 때 상기 프로세서가다수의 집계 그룹을 생성하는 단계 -각각의 그룹은 다수의 집계 레코드를 포함하고, 각각의 집계 레코드는 상기 다수의 데이타베이스 레코드의 별개의 서브세트의 필드들에 들어 있는 값들의 집계를 위한 값을 포함함-;상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시 제1 집계 그룹을 선택하는 단계;상기 삽입되거나 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션의 일부로서 상기 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계;상기 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 상기 제1 집계 그룹의 후속 선택을 금지하는 단계;상기 제1 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하는 단계; 및상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하는 단계를 포함하는 단계들을 행하도록 하는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 각각의 집계 그룹은 멀티 파티션 집계표(multi-partition aggregation table)의 개별 파티션인 컴퓨터 판독가능 매체.
- 제18항에 있어서,상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하는 단계; 및상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 제18항에 있어서,상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 3개의 집계 그룹을 생성하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 상기 다수의 집계 그룹을 생성하는 단계는 적어도 10개의 집계 그룹을 생성하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제18항에 있어서,상기 제1 집계 그룹을 선택하는 단계는 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,상기 후속 선택을 금지하는 단계는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제24항에 있어서,집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하는 단계; 및상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 제18항에 있어서,상기 다수의 데이타베이스 레코드 각각은 조직 액티비티의 인스턴스에 대응하고,상기 다수의 데이타베이스 레코드 각각은 상기 대응하는 인스턴스가 여러 처리 상태 중 한 상태에 있는 것을 나타내는 값을 갖는 필드를 포함하고,각각의 집계 그룹은 시간 정렬된 집계 레코드들을 포함하고, 각각의 시간 정렬 집계 레코드는 그 시간 정렬 집계 레코드와 관련된 기간 동안 상기 여러 처리 상태 중 한 상태에 있는 인스턴스들에 대한 집계 값을 갖는 컴퓨터 판독가능 매체.
- 제26항에 있어서, 상기 여러 처리 상태 중 한 상태는 완료된 인스턴스를 포함하고,미리 선택된 시간 윈도우의 외측에서 완료된 인스턴스에 대응하는 집계 레코드를 삭제하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 명령 시퀀스를 나타내는 데이타를 저장한 컴퓨터 판독가능 매체에 있어서,상기 명령은 프로세서에 의해 실행될 때 상기 프로세서가집계 데이타 표에 다수의 레코드를 생성하는 단계 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-; 및미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하도록 상기 집계 데이타 표를 갱신하는 단계를 포함하는 단계들을 행하도록 하는 컴퓨터 판독가능 매체.
- 제28항에 있어서, 상기 집계 데이타 표로부터 레코드를 삭제하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 컴퓨터 판독가능 매체.
- 제28항에 있어서, 상기 집계 데이타 표를 갱신하는 단계는 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제28항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며,완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값을 할당하는 단계; 및상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값을 할당하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 제28항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고,상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하는 단계;상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하는 단계;상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하는 단계;상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하는 단계; 및상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 제32항에 있어서, 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하는 단계를 포함하는 단계들을 행하기 위한 명령을 더 포함하는 컴퓨터 판독가능 매체.
- 다수의 데이타베이스 레코드의 필드들에 들어 있는 값들의 집계를 유지하기 위한 데이타 처리 장치에 있어서,적어도 하나의 데이타 저장 장치;적어도 하나의 사용자 입력 장치; 및상기 저장 장치 및 상기 사용자 입력 장치에 동작 접속된 프로세서를 포함하고,상기 적어도 하나의 데이타 저장 장치는 실행시 상기 프로세서를다수의 집계 그룹을 생성하고 -각각의 그룹은 다수의 집계 레코드를 포함하고, 각각의 집계 레코드는 상기 다수의 데이타베이스 레코드의 별개의 서브세트의 필드들에 들어 있는 값들의 집계를 위한 값을 포함함-;상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드의 삽입 또는 갱신시 제1 집계 그룹을 선택하고;상기 삽입되거나 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 제1 집계 그룹 갱신 트랜잭션의 일부로서 상기 제1 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하고;상기 제1 집계 그룹 갱신 트랜잭션이 완료될 때까지 상기 제1 집계 그룹의 후속 선택을 금지하고;상기 제1 집계 그룹 갱신 트랜잭션이 행해지고 있는 동안에 상기 다수의 데이타베이스 레코드 중 제2 데이타베이스 레코드의 삽입 또는 갱신시에 제2 집계 그룹을 선택하며;상기 삽입되거나 갱신된 제2 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제1 집계 그룹 갱신 트랜잭션 동안에 상기 제2 집계 그룹의 집계 레코드들 중 한 레코드의 집계 값을 변경하도록구성하는 명령 세트를 저장하고 있는 데이타 처리 장치.
- 제34항에 있어서,상기 명령 세트는 실행시 상기 프로세서를상기 다수의 데이타베이스 레코드 중 제1 데이타베이스 레코드를 갱신하기 위한 후속 트랜잭션의 개시시에 제3 집계 그룹을 선택하고;상기 후속 갱신된 제1 데이타베이스 레코드 내의 하나 이상의 값에 기초하여 상기 제3 집계 그룹의 집계 레코드의 집계 값을 변경하도록구성하는 추가 명령을 포함하는 데이타 처리 장치.
- 제34항에 있어서,상기 명령 세트는 실행시 상기 프로세서를 상기 다수의 집계 그룹을 단일 집계 레코드 표로 결합하도록 구성하는 추가 명령을 더 포함하고, 상기 단일 표의 각각의 레코드는 상기 다수의 집계 그룹 각각으로부터 집계 레코드의 값들을 집계하는 데이타 처리 장치.
- 제34항에 있어서,상기 제1 집계 그룹의 선택은 상기 다수의 집계 그룹 중 한 그룹에 액세스하기 위한 제1 프로그램 스레드(thread)의 요구에 응답하여 개시되며,상기 후속 선택의 금지는 상기 제1 프로그램 스레드가 상기 제1 집계 그룹에 대한 액세스를 더 이상 요구하지 않을 때까지 상기 제1 집계 그룹에 대한 다른 프로그램 스레드의 액세스를 거부하는 것을 포함하는 데이타 처리 장치.
- 제37항에 있어서,상기 명령 세트는 실행시 상기 프로세서를집계 그룹에 대한 액세스를 위한 프로그램 스레드의 요구 수신시 상기 요구 프로그램 스레드에 대한 시스템 식별자를 결정하고;상기 결정된 시스템 식별자에 기초하여 상기 요구 프로그램 스레드에 집계 그룹 식별자를 할당하도록구성하는 추가 명령을 더 포함하는 데이타 처리 장치.
- 다수의 처리 상태 중 한 상태를 각각 갖는 다수의 조직 액티비티의 인스턴스에 관한 집계 데이타를 유지하기 위한 데이타 처리 장치에 있어서,적어도 하나의 데이타 저장 장치;적어도 하나의 사용자 입력 장치; 및상기 저장 장치 및 상기 사용자 입력 장치에 동작 접속된 프로세서를 포함하고,상기 적어도 하나의 기억 장치는 실행시 상기 프로세서를집계 데이타 표에 다수의 레코드를 생성하고 -각각의 레코드는 동일 기간 동안 동일 처리 상태에 있는 상기 다수의 인스턴스의 서브세트에 대한 집계 값을 가짐-;미리 선택된 시간 윈도우의 외측에서 상기 처리 상태들 중 한 상태에 있는 인스턴스에 대응하는 데이타의 삭제를 반영하여 상기 집계 데이타 표를 갱신하도록구성하는 명령 세트를 저장하고 있는 데이타 처리 장치.
- 제39항에 있어서, 상기 명령 세트는 실행시 상기 프로세서를 상기 집계 데이타 표로부터 레코드를 삭제하도록 구성하는 추가 명령을 포함하되, 상기 삭제되는 레코드는 그에 대응하는 기간 동안 상기 다수의 인스턴스 중 어느 인스턴스도 상기 처리 상태들 중 한 상태에 있지 않다는 것을 나타내는 레코드인 데이타 처리 장치.
- 제39항에 있어서, 상기 집계 데이타 표의 갱신은 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드를 삭제하는 것을 포함하는 데이타 처리 장치.
- 제39항에 있어서, 상기 처리 상태들 중 한 상태는 완료된 인스턴스에 대응하고, 상기 다수의 레코드 각각은 완료 시간 필드를 포함하며, 상기 명령 세트는 실행시 상기 프로세서를완료되지 않은 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 공백 값을 할당하고;상기 완료된 처리 상태에 있는 인스턴스들에 대응하는 레코드들의 상기 완료 시간 필드에 비공백 값을 할당하도록구성하는 추가 명령을 포함하는 데이타 처리 장치.
- 제42항에 있어서, 각각의 인스턴스에 대한 데이타는 인스턴스 데이타 표의 관련 레코드에 유지되고, 상기 명령 세트는 실행시 상기 프로세서를상기 인스턴스 데이타 표의 레코드가 갱신되었는지를 결정하고;상기 인스턴스 데이타 표의 레코드가 갱신된 것으로 결정된 때 상기 갱신에 기초하여 상기 다수의 레코드 중 한 레코드의 집계 값을 변경하고;상기 갱신된 인스턴스 데이타 표의 레코드가 상기 관련 인스턴스가 상기 완료된 처리 상태에 있다는 것을 나타내는 값을 갖는지를 결정하고;상기 관련 인스턴스가 상기 완료된 처리 상태에 있는 것으로 결정한 때 상기 인스턴스에 대한 완료 값의 시간을 생성하며;상기 인스턴스에 대한 완료 값의 시간에 기초하여 상기 집계 데이타 표의 레코드를 갱신하도록구성하는 추가 명령을 포함하는 데이타 처리 장치.
- 제43항에 있어서, 상기 명령 세트는 실행시 상기 프로세서를 상기 미리 선택된 시간 윈도우의 외측에서 완료된 상기 다수의 인스턴스 중의 인스턴스들에 대한 집계 데이타를 가진 레코드들을 삭제하도록 구성하는 추가 명령을 포함하는 데이타 처리 장치.
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)
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)
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 |
-
2003
- 2003-09-26 US US10/670,561 patent/US7149736B2/en not_active Expired - Fee Related
-
2004
- 2004-07-13 JP JP2004206471A patent/JP4828102B2/ja not_active Expired - Fee Related
- 2004-07-14 EP EP10011649A patent/EP2306381A1/en not_active Withdrawn
- 2004-07-14 CN CN2004100552395A patent/CN1601541B/zh not_active Expired - Fee Related
- 2004-07-14 AT AT04103359T patent/ATE521944T1/de not_active IP Right Cessation
- 2004-07-14 EP EP04103359A patent/EP1519283B1/en not_active Not-in-force
- 2004-07-16 KR KR1020040055474A patent/KR20050030531A/ko not_active Application Discontinuation
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 |