KR20170132873A - 분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법 - Google Patents

분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법 Download PDF

Info

Publication number
KR20170132873A
KR20170132873A KR1020177031717A KR20177031717A KR20170132873A KR 20170132873 A KR20170132873 A KR 20170132873A KR 1020177031717 A KR1020177031717 A KR 1020177031717A KR 20177031717 A KR20177031717 A KR 20177031717A KR 20170132873 A KR20170132873 A KR 20170132873A
Authority
KR
South Korea
Prior art keywords
locks
data items
transaction
order
time interval
Prior art date
Application number
KR1020177031717A
Other languages
English (en)
Other versions
KR102103063B1 (ko
Inventor
크레이그 더블유. 스탠필
Original Assignee
아브 이니티오 테크놀로지 엘엘시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20170132873A publication Critical patent/KR20170132873A/ko
Application granted granted Critical
Publication of KR102103063B1 publication Critical patent/KR102103063B1/ko

Links

Images

Classifications

    • G06F17/30362
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • G06F17/30312
    • G06F17/30371
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템 (102)에서 트랜잭션들을 프로세싱하는 방법은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템 (112)에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및 복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함한다. 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트를 수신하는 단계 (여기서 상기 요청들은 제 1 순서에 있음), 각각의 잠금들이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 및 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함한다.

Description

분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법
본 출원은 2015년 4월 1일 출원된 미국 특허 출원 번호 제 62/141,388호에 우선권을 주장한다.
본 출원은 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 것에 관한 것이다. 특히, 본 출원은 또한 다중 데이터 프로세싱 모듈들 및 데이터베이스 - 상기 데이터베이스는 예를 들어, 여러 데이터베이스 노드들로 분산될 수 있음 - 의 분산 네트워크에서 데이터베이스 트랜잭션들을 프로세싱하는데 특히 적합한 분산 컴퓨팅 시스템들, 컴퓨터 구현 방법들 및 컴퓨터 판독 가능 저장 매체에 관한 것이다.
데이터베이스는 소프트웨어 프로그램을 사용하여 관리하고 질의할 수 있는 구조화된 영구 데이터 집합이다. 트랜잭션 데이터베이스 관리 시스템은 데이터베이스 "트랜잭션들"을 사용하여 데이터베이스에서 데이터를 오퍼레이션 (예를 들어, 저장 및 조작)하는 관계형 데이터베이스 시스템을 포함할 수 있다. 일반적으로 데이터베이스 트랜잭션은 상기 데이터베이스에서 상기 데이터베이스 관리 시스템에 의해 수행되는 단일 작업 단위 (하나 이상의 오퍼레이션들을 포함)를 상징한다. 데이터베이스 트랜잭션들이 안정적으로 프로세스되는 것을 보장하기 위해 데이터베이스 트랜잭션들은 원자적 (즉, 하나 이상의 모든 오퍼레이션들을 포함하는 트랜잭션이 전체로 완료되거나 아무런 영향을 주지 않아야 한다), 일관적 (즉, 트랜잭션이 상기 데이터베이스를 하나의 유효한 상태에서 다른 유효한 상태로 이동시켜야 한다), 고립적 (즉, 동시에 실행되는 트랜잭션들은 상기 트랜잭션들이 순차적으로 실행된 경우의 결과처럼 상기 데이터베이스에서 동일한 상태가 된다) 및 지속적 (즉, 완료된(committed) 트랜잭션은 시스템 충돌들, 오류들 및 기타 문제들에 상관없이 커밋이 유지된다) 이어야 한다. 이러한 데이터베이스 트랜잭션 속성들의 집합은 종종 "ACID"로 참조된다. 데이터베이스 트랜잭션들은 하나 이상의 서버 컴퓨터들에서 클라이언트 컴퓨터들의 요청들에 응답하는데 사용될 수 있는 OLTP (Online Transaction Processing) 시스템들과 같은 산업 시스템들에서 사용될 수 있으며, 또는 데이터 웨어하우스 시스템들을 포함한 OLAP(Online analytical processing) 시스템들과 같은 다른 시스템들이 구축되는 기초로 사용될 수 있다. 다양한 유형들의 산업들, 예를 들면 연구, 건강관리 또는 정보 서비스들과 관련된 산업들이 그러한 시스템들을 사용할 수 있다.
어떤 상황들에서는 하나 이상의 상기 ACID 속성들이 특정 조건들하에서, 특히 ACID 속성들에 대한 엄격한 준수가 어려운 시스템 (예 : 분산 시스템들)에서 완화될 수 있다. 다른 상황들에서는 데이터베이스가 여러 데이터베이스 노드들 사이에 분산되어있는 경우에도 트랜잭션들이 ACID 속성들을 유지하는 것이 중요하다. 분산 데이터베이스와 같은 분산 시스템에서 임의의 ACID 특성들을 지원하기 위해 사용되는 임의의 분산형 알고리즘은 이하에서 보다 상세하게 설명되는 바와 같이 상기 노드들 간의 교착(deadlock)을 피하는 방식으로 구현될 필요가 있다. 그러나 실제 교착 상황들을 감지하거나 항상 엄격한 교착 회피를 보장하는 특정 분산 알고리즘들(예: 원자적 커밋에 대한 2 단계 커밋 프로토콜 또는 동시성 제어를 위한 2 단계 잠금 프로토콜)의 경우 시스템 성능에 영향들을 미친다.
종래에는, 전술한 상기 교착과 같은 교착들의 검출, 방지 및/또는 회피를 위한 중앙 집중식 트랜잭션 데이터베이스 방법들이 잘 알려져 있다. 그러나, 분산 데이터베이스에서 교착들을 감지하고 피하는 해결책을 찾는 것이 점점 어려워지고 있는데, 그 이유는 다수의 동시적으로 실행되는 트랜잭션들의 경우 교착들의 가능성이 더 높기 때문이다. 일부 분산 데이터베이스 오퍼레이션들은 특히 내결함성(fault tolerant) 알고리즘들을 사용하여 해결되기 어려운 분산 컴퓨팅에서의 문제점들에 해당한다. 일부 유형들의 오류들의 경우 분산 컴퓨팅의 일부 문제들은 내결함성 분산 알고리즘으로 해결하는 것이 불가능한 것으로 입증되었다.
본 발명의 목적은 분산 데이터베이스 시스템의 다수의 상이한 노드들에 의해 저장된 데이터에 대해 각각 오퍼레이션하는 다수의 동시에 실행되는 트랜잭션들의 경우에 교착들을 검출하고 회피하기 위한 해결책을 찾는 것이다. 이를 통해 교착들의 수를 줄이거나 트랜잭션 데이터 프로세싱 속도를 높이고자 하는 것이다.
일 측면에서, 일반적으로, 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법은, 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로(totally) 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및 복수의 상기 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함한다. 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들 - 상기 요청들이 제 1 순서에 있음 - 의 세트를 수신하는 단계, 각각의 잠금들이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함함 - 를 포함한다.
측면들에는 다음 특징들 중 하나 이상을 포함할 수 있다.
프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 트랜잭션을 롤백(Rolling back)하는 단계, 상기 데이터 항목들에 대한 임의의 기존의 잠금들을 해제하는 단계를 포함한다.
상기 제 2 순서는 상기 제 1 시간 간격 내에서 잠금들이 획득된 적어도 데이터 항목들에 대한 상기 순서화 규칙과 일치한다.
상기 프로세싱 단계는 상기 제 1 시간 간격 내에서 잠금들이 획득된 데이터 항목들의 상기 순서화 규칙에 기초하여 위치들를 식별하는 정보를 저장하는 단계를 더 포함하며, 상기 제 2 순서를 결정하는 단계는 상기 위치들을 식별하는 상기 저장된 정보에 적어도 부분적으로 기초하여 상기 제 2 순서를 결정하는 단계를 포함한다.
상기 제 2 순서를 결정하는 단계는 상기 순서화 규칙에 따라 상기 잠금들을 획득하기 위한 오퍼레이션들의 목록을 분류(sorting)하는 단계를 포함한다.
상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 그리고 상기 제 1 순서가 상기 순서화 규칙에 일치하는 경우에 상기 제 1 시간 간격 내에서 잠금이 획득되지 않은 임의의 데이터 항목들에 대한 잠금들을 위해 상기 제 1 시간 간격보다 길게 대기하는 단계를 더 포함한다.
상기 프로세싱 단계는 상기 복수의 상기 다중 프로세스들 중 다른 프로세스들에 대한 요청들의 세트를 수신한 상기 프로세스의 우선 순위를 결정하는 단계를 더 포함한다.
프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 우선 순위를 결정하는 단계 이후에 수행된다.
프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 요청들의 세트에 의해 접근이 요청된 적어도 하나의 데이터 항목에 대한 잠금 상태가 변경된 것으로 결정하는 단계 이후에 수행된다.
상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계를 더 포함하고, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 제 1 순서가 상기 순서화 규칙과 일치하지 않는다는 결정 단계로부터 제 2 시간 간격 후에 수행된다.
상기 제 2 시간 간격은 상기 제 1 시간 간격보다 길다.
상기 제 1 시간 간격은 1초 미만이다.
상기 프로세싱 단계는 프로세스되고 있는 상기 트랜잭션이 커밋, 중단 또는 재시작될 때까지 상기 데이터 항목들에 대해 획득된 임의의 잠금들을 유지하는 단계 ; 및 프로세스되고 있는 상기 트랜잭션이 커밋, 중단, 재시작될 때 상기 데이터 항목들에 대한 상기 잠금들을 해제하는 단계를 더 포함한다.
상기 데이터 항목들에 대한 상기 잠금들은 단일 잠금 해제된 상태 및 하나 이상의 잠금된 상태들을 포함하는 적어도 두 개의 상태들을 포함한다.
데이터 항목에 대한 잠금을 획득하는 단계는 상기 데이터 항목과 관련된 상기 잠금 상태를 상기 잠금된 상태들 중 하나로 변경하는 단계를 포함한다.
데이터 항목에 대한 잠금을 해제하는 단계는 상기 데이터 항목과 관련된 상기 잠금 상태를 상기 잠금된 상태들 중 하나로부터 상기 잠금 해제된 상태로 변경하는 단계를 포함한다.
상기 데이터 항목들에 대한 상기 잠금들은 단일 프로세스만이 잠금된 데이터 항목에 완전한 접근를 허용하는 적어도 하나의 배타적인 잠금된 상태를 포함한다.
상기 데이터 항목들에 대한 상기 잠금들은 다중 프로세스들이 잠금된 데이터 항목에 읽기 전용 접근을 허용하는 적어도 하나의 공유된 잠금된 상태를 포함한다.
상기 다중 프로세스들 중 적어도 일부는 서로 비동기적으로 동작한다.
상기 트랜잭션들은 데이터베이스 트랜잭션들을 포함하고, 상기 데이터 항목들은 데이터베이스 내부의 레코드들이다.
상기 데이터베이스는 메모리 내(in-memory)의 데이터베이스이다.
상기 데이터 저장 시스템은 상기 데이터베이스의 다수의 노드들 사이에 분산된다.
상기 복수의 상기 다중 프로세스들 중 적어도 일부는 상기 프로세싱 모듈들 중 다른 모듈들에서 동작한다.
다른 측면에서, 일반적으로, 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서, 하나 이상의 컴퓨터들에 의해 실행될 때, 하나 이상의 컴퓨터들로 하여금 트랜잭션들을 프로세싱하기 위한 오퍼레이션들을 수행하게 하는 명령들을 저장하는 컴퓨터 판독 가능한 저장 매체로서, 상기 오퍼레이션들은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 -, 및 복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계, 상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함함 - 를 포함한다.
다른 측면에서, 일반적으로, 트랜잭션들을 프로세싱하는 분산 컴퓨팅 시스템은 복수의 프로세싱 모듈들; 및 데이터 항목들을 저장하기 위해 구성되는 데이터 저장 시스템 - 상기 데이터 저장 시스템은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능하며, 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - 을 포함한다. 복수의 상기 다중 프로세스들은 트랜잭션들을 프로세스한다. 상기 복수의 상기 다중 프로세스들의 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계, 상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함 - 를 포함한다.
다른 측면에서, 일반적으로, 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및 복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함한다. 상기 복수의 상기 다중 프로세스들의 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계, 제 1 시간 간격 내에서 각각의 상기 잠금들이 얻어지는 경우에 상기 데이터 항목들에 대한 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함한다.
측면들은 다음 기능들 중 하나 이상을 포함할 수 있다.
프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 트랜잭션을 롤백하는 단계, 상기 데이터 항목들에 대한 임의의 기존의 잠금들을 해제하는 단계 및 상기 제 1 순서와 다른 제 2 순서로 순차적으로 데이터 항목들에 대한 잠금들을 획득하는 단계를 포함를 포함한다.
상기 제 2 순서는 적어도 상기 제 1 시간 간격 내에서 잠금들이 획득된 적어도 상기 데이터 항목들에 대한 상기 순서화 규칙과 일치한다.
상기 프로세싱 단계는 상기 제 1 시간 간격 내에서 잠금들이 획득된 데이터 항목들의 상기 순서화 규칙에 기초하여 위치들을 식별하는 정보를 저장하는 단계, 및 상기 위치들을 식별하는 상기 저장된 정보에 적어도 부분적으로 기초하여 상기 제 2 순서를 결정하는 단계를 포함한다.
상기 제 2 순서는 상기 순서화 규칙에 따라 상기 잠금들을 획득하기 위한 오퍼레이션들의 목록 분류에 기초하여 결정된다.
상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는 경우 상기 제 1 시간 간격 내에서 잠금이 획득되지 않은 임의의 데이터 항목들에 대한 잠금들을 위한 상기 제 1 시간 간격보다 길게 대기하는 단계를 더 포함한다.
상기 프로세싱은 상기 복수의 상기 다중 프로세스들 중 다른 프로세스들에 대한 상기 요청들의 세트를 수신한 상기 프로세스의 우선 순위를 결정하는 단계를 더 포함한다.
상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 우선 순위를 결정하는 단계 이후에 수행된다.
상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 요청들의 세트에 의해 접근이 요청된 적어도 하나의 데이터 항목에 대한 잠금 상태가 변경된 것으로 결정하는 단계 이후에 수행된다.
상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는다고 결정하는 단계로부터 제 2 시간 간격 이후에 수행된다.
상기 제 2 시간 간격은 상기 제 1 시간 간격보다 길다.
상기 제 1 시간 간격은 1초 미만이다.
상기 프로세싱 단계는 프로세스되고 있는 상기 트랜잭션이 커밋, 중단, 또는 재시작될 때까지 상기 데이터 항목들에 대해 획득된 임의의 잠금들을 유지하는 단계; 및 프로세스되고 있는 상기 트랜잭션이 커밋, 중단 또는 재시작될 때 상기 데이터 항목들에 대한 상기 잠금들을 해제하는 단계를 더 포함한다.
상기 데이터 항목들에 대한 상기 잠금들은 단일 잠금 해제된 상태 및 하나 이상의 잠금된 상태들을 포함하는 적어도 두 개의 상태들을 포함한다.
데이터 항목에 대한 잠금을 획득하는 단계는 상기 데이터 항목과 관련된 상기 잠금의 상태를 상기 잠금된 상태들 중 하나로 변경시키는 단계를 포함한다.
데이터 항목에 대한 잠금을 해제하는 단계는 상기 데이터 항목과 관련된 상기 잠금의 상태를 상기 잠금된 상태들 중의 하나로부터 상기 잠금 해제된 상태로 변경하는 단계를 포함한다.
상기 데이터 항목들에 대한 상기 잠금들은 단일 프로세스만이 잠금된 데이터 항목에 완전한 접근을 허용하는 적어도 하나의 배타적인 잠금된 상태를 포함한다.
상기 데이터 항목에 대한 상기 잠금들은 다중 프로세스들이 잠금된 데이터 항목에 읽기 전용 접근을 허용하는 적어도 하나의 공유된 잠금된 상태를 포함한다.
상기 다중 프로세스들 중 적어도 일부는 서로 비동기적으로 동작한다.
상기 트랜잭션들은 데이터베이스 트랜잭션을 포함하고 상기 데이터 항목들은 데이터베이스 내부의 레코드들이다.
상기 데이터베이스는 메모리 내(in-memory)의 데이터베이스이다.
상기 데이터 저장 시스템은 상기 데이터베이스의 다수의 노드들 사이에 분산된다.
상기 복수의 상기 다중 프로세스들 중 적어도 일부는 상기 프로세싱 모듈들 중 다른 모듈들에서 동작한다.
다른 측면에서, 일반적으로, 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하기 위한 오퍼레이션들을, 하나 이상의 컴퓨터들에 의해 실행될 때, 하나 이상의 컴퓨터들이 수행하게 하는 명령들을 저장하는 컴퓨터 판독 가능한 저장 매체에서, 상기 오퍼레이션들은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 액세스 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및 복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들을 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계, 상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및 상기 제 1 순서가 상기 순서화 규칙에 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함한다.
다른 측면에서, 일반적으로, 트랜잭션들을 프로세싱하는 분산 컴퓨팅 시스템은 복수의 프로세싱 모듈들; 및 데이터 항목들을 저장하기 위해 구성되는 데이터 저장 시스템 - 상기 데이터 저장 시스템은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세들에 접근 가능하며, 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - 을 포함한다. 복수의 상기 다중 프로세스들은 트랜잭션들을 프로세스한다. 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는 상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계, 상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계, 상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함한다.
본 발명의 다른 특징들 및 이점들은 하기의 설명 및 청구 범위들로부터 명백해질 것이다.
측면들은 다음 장점들 중 하나 이상을 포함할 수 있다.
다른 장점들 중에서, 상기 측면들은 시스템 성능을 유지하면서 분산된 데이터베이스들에서의 교착을 방지한다.
측면들은 지속적으로 롤백되기 때문에 트랜잭션들이 고갈되지 않는 것을 보장한다.
측면들은 분산 데이터베이스에서 효율적인 트랜잭션 데이터 프로세싱에 의존하는 물류 또는 산업 프로세스들이 교착들의 수의 감소 또는 빠른 트랜잭션 데이터 프로세싱의 이점을 직접 얻을 수 있다.
측면들은 트랜잭션에 의해 특정된 순서에 따라 데이터 항목들에 대한 잠금들을 획득할 수 있게하며, 실패할 경우 알려진 교착이 없는 잠금 순서로 되돌린다.
도 1은 분산 데이터베이스 시스템을 포함하는 데이터 프로세싱 시스템의 블록도이다.
도 2는 두 개의 데이터베이스 트랜잭션들 간의 교착을 도시한다.
도 3은 우선적(pre-emptive) 교착 회피 알고리즘의 흐름도이다.
도 4는 도 3의 상기 알고리즘을 제 1 잠정적 교착 상황에 적용한 것을 도시한다.
도 5는 도 3의 상기 알고리즘을 제 2 잠정적 교착 상황에 적용한 것을 도시한다.
1 개요
도 1은 교착 회피 기술이 사용될 수 있는 데이터 프로세싱 시스템 (100)의 예를 도시한다. 상기 시스템 (100)은 통신 네트워크 (106) (예를 들어, WAN, LAN, 또는 멀티 프로세서 시스템상의 네트워크 또는 칩상의 네트워크)를 통해 M 개의 데이터베이스 클라이언트들 (104)과 통신하는 분산 데이터베이스 시스템 (102)을 포함한다.
상기 분산 데이터베이스 시스템 (102)은 데이터베이스 (D)의 프래그먼트 (Dn)가 할당되는 N 개의 노드들 (108)을 포함한다. 각각의 노드 (108)는 상기 데이터베이스 (D)의 프래그먼트가 저장되는 데이터 저장 장치 (112) 및 상기 데이터 저장 장치 (112) 상의 상기 데이터베이스의 상기 프래그먼트를 관리하는 프로세싱 모듈인 (예를 들어, 서버 컴퓨터, 프로세서 또는 프로세서 코어에 의해 제어되는) 데이터베이스 관리자(110)를 포함한다. 주어진 노드 (108)에 대한 상기 데이터베이스 관리자 (110)는 또한 상기 데이터 저장 장치 (112) 상의 상기 데이터베이스의 상기 프래그먼트와 상기 클라이언트들 (104) 및 다른 노드들 (108)과 같은 상기 노드 (108) 외부의 엔티티들 사이의 인터페이스로서 기능한다. 도 1에 명확히 도시되지는 않았지만, 일부 예들에서, 각각의 데이터베이스 관리자 (110)는 상기 데이터베이스 관리자 (110)에 의해 관리되는 상기 데이터 저장 장치 (112)에 저장된 상기 데이터베이스의 상기 프래그먼트의 관리를 담당하는 데이터 프로세서, 하나 이상의 노드 (108) 상의 데이터베이스 프래그먼트들에 대한 접근을 요청하는 요청들을 프로세싱하기 위한 응용 프로세서, 및 상기 클라이언트들 (104) 및 다른 노드들 (108)과 통신하기 위한 통신 소프트웨어를 포함한다.
동작 시에, 상기 클라이언트들 (104)은 상기 데이터베이스 (D) 상에서의 실행을 위해 하나 이상의 데이터베이스 트랜잭션들을 지정한다. 상기 클라이언트들 (104)에 의해 지정된 상기 트랜잭션들은 상기 통신 네트워크 (106)를 통해 상기 노드 (108)의 상기 데이터베이스 관리자들 (110) 중 하나 이상으로 전송된다. 트랜잭션이 N 개의 노드들 (108) 중 상기 n 번째 데이터베이스 관리자 (110)에 도착하면, 상기 n 번째 데이터베이스 관리자 (110)는 상기 트랜잭션을 평가하고 상기 n 번째 데이터베이스 관리자 (110)에 의해 관리되는 상기 n 번째 데이터 저장 장치 (112)에 저장된 상기 데이터베이스의 상기 프래그먼트상에서 상기 트랜잭션을 실행하기위한 접근 계획(예를 들어, 질의 계획)을 생성한다.
일부 예들에서, 트랜잭션이 다수의 노드들 (108)에 저장된 상기 데이터베이스의 다수의 프래그먼트들에 접근할 때, 상기 n 번째 데이터베이스 관리자 (110)는 상기 트랜잭션 및/또는 상기 접근 계획을 상기 다수의 노드들 (108)의 상기 데이터베이스 관리자 (110)에 전송한다. 다른 예들에서, 상기 트랜잭션이 발신된(originated) 상기 클라이언트 (104)는 상기 트랜잭션을 완료하기 위해 필요한 적절한 노드들 (108)로 상기 트랜잭션을 보낸다. 또 다른 예들에서, 상기 트랜잭션이 발신된 상기 클라이언트 (104)는 리더 노드로서 지정된 상기 노드들 (108) 중 하나에 상기 트랜잭션을 전송하고, 상기 리더 노드는 상기 트랜잭션을 완료하기 위해 필요한 상기 적절한 노드들 (108)에 적절한 접근 계획들을 전송한다.
상기 적절한 노드들 (108)에서의 상기 하나 이상의 데이터베이스 트랜잭션들에 대한 접근 계획들을 이용하여, 상기 하나 이상의 트랜잭션들이 상기 데이터베이스를 실행하고 접근할 수 있다. 기존의 중앙 집중식 트랜잭션 데이터베이스들의 상기 경우와 마찬가지로 상기 하나 이상의 트랜잭션들이 서로 충돌하여 일부 트랜잭션들이 성공적으로 완료되고 다른 트랜잭션들이 실패할 수 있으며, 이 시점에서 그것들은 강제로 그들의 변경들을 취소하고 재시작된다.
2 교착
트랜잭션들 간에 발생할 수 있는 잠재적 충돌 중 하나가 교착이다. 대개 교착은 둘 이상의 동시적으로 실행중인 트랜잭션 각각이 다른 트랜잭션이 독점적으로 접근할 수 있는 자원을 필요로 하며 완료 전에 상기 다른 트랜잭션이 상기 자원을 해제할 때까지 기다려야하는 상황이다. 체크되지 않은 상태에서는, 상기 두 개 이상의 동시에 실행되는 트랜잭션들은 그들의 필요한 리소스들에 절대 접근할 수 없기 때문에 절대 완료되지 않는다.
도 2를 참조하면 교착이 발생하는 상황의 전형적인 예가 도시된다. 이 예에서 두 개의 트랜잭션들 T1과 T2는 트랜잭션 데이터베이스에 저장된 데이터 요소 x와 y에 대해 동시에 오퍼레이션한다. T1은 데이터 요소 y의 값을 읽고 데이터 요소 x에 값을 쓰는 오퍼레이션들을 포함한다. T2는 데이터 요소 x의 값을 읽고 데이터 요소 y에 값을 쓰는 오퍼레이션들을 포함한다. 본 명세서에서 사용되는 "잠금"은 특정 데이터 요소에 대한 상기 잠금을 획득하는 엔티티가 아닌 임의의 엔티티에 의한 특정 데이터 요소에 대한 동시 접근을 방지하기 위한 임의의 메커니즘이다. 수행/방지되는 접근의 상기 유형에 따라 다수의 유형들의 잠금들이 있을 수 있다. 예를 들어, "읽기 잠금"은 다른 엔티티가 데이터 요소를 읽지 못하게 하는 잠금이고, "쓰기 잠금"은 다른 엔티티가 데이터 요소를 쓰지 못하게 하는 잠금이다.
제 1 시간 단계 (1)에서, T1은 데이터 요소 y에 대한 읽기 잠금 RT1 (113)을 획득하기 위해 read_lock (y) 명령을 내린다. 제 2 시간 단계 (2)에서, T1은 y 값을 읽기 위해 read (y) 명령을 내린다. 제 3 시간 단계 (3)에서, T2는 데이터 요소 x에 대한 읽기 잠금 RT2 (115)를 얻기 위해 read_lock (x) 명령을 내린다. 제 4 시간 단계 (4)에서, T2는 x의 값을 읽기 위해 read(x) 명령을 내린다.
제 5 시간 단계 (5)에서, T1은 write_lock (x) 명령을 내려 데이터 요소 x에 대한 쓰기 잠금 WT1 (117)을 획득하려고 시도한다. 그러나 T2는 이미 데이터 요소 x에 대한 읽기 잠금을 가지고 있으므로 T1은 T2가 쓰기 잠금 WT1 (117)을 얻기 전에 T2가 데이터 요소 x에 대한 읽기 잠금을 해제할 때까지 대기해야 한다. 유사하게, 제 6 시간 단계 (6)에서, T2는 데이터 요소 y에 대한 쓰기 잠금, WT2 (119)를 획득하기 위해 write_lock (y) 명령을 내린다. 그러나 T1에는 이미 데이터 요소 y에 대한 읽기 잠금이 있으므로 T2는 쓰기 잠금 WT2 (119)를 얻기 전에 T1이 데이터 요소 y에 대한 읽기 잠금을 해제할 때까지 대기해야 한다.
이 시점에서 트랜잭션을 완료할 때까지 T1 뿐만아니라 T2도 잠금을 해제하지 않기 때문에 교착이 발생하고, 두 트랜잭션 중 하나가 진행되기 위해서는 다른 트랜잭션은 읽기 잠금을 해제해야 한다. 도 2에 도시된 상기 교착과 같은 교착이 발생하면, 진행하기 위한 유일한 방법은 상기 트랜잭션들 중 하나를 롤백하고 다른 트랜잭션을 완료함으로써 상기 교착을 깨는 것이다.
3 교착 회피
전술한 바와 같이, 종래의 집중 트랜잭션 데이터베이스들에서, 전술한 상기 교착과 같은 교착들의 검출, 방지 및/또는 회피 방법이 잘 알려져있다. 그러나, 분산 데이터베이스에서, 상기 분산 데이터베이스 시스템 (102)의 다수의 상이한 노드들 (108)에 의해 저장된 데이터에 대해 각각 오퍼레이션하는 다수의 동시에 실행되는 트랜잭션들의 경우에 교착들의 가능성이 더 높기 때문에 교착들을 검출하고 회피하기 위한 해결책을 찾는 것이 점점 어려워진다. 일부 분산 데이터베이스 오퍼레이션들은 특히 내결함성(fault tolerant) 알고리즘을 사용하여 해결하기 어려운 분산 컴퓨팅의 문제들에 해당한다. 일부 오류들의 유형들의 경우 분산 컴퓨팅에서의 일부 문제들은 내결함성 분산 알고리즘으로 해결하는 것이 불가능한 것으로 입증되었다.
도 3을 참조하면, 일부 예들에서, 상기 분산 데이터베이스 시스템 (102)은 상기 트랜잭션이 교착되었거나 또는 교착될 가능성이 있는 경우, 교착이 아직 실제로 발생하지 않은 경우에도 트랜잭션을 취소 (또는 롤백)하는 "우선적 교착 회피" 알고리즘 (314)을 사용하여 교착을 회피한다. 부가적으로, 상기 알고리즘 (314)은 이하 상세히 기술되는 잠금들이 신속하게 획득되지 않는 특정한 상황들에 대해서만 순서화 규칙과의 일관성을 요구할 필요성을 제한함으로써 순서화된 잠금 체계에 다른 방식으로 부과될 수 있는 오버헤드의 일부를 감소시킬 수 있다. 이러한 방식으로 분산 데이터베이스에서 효율적인 트랜잭션 데이터 프로세싱에 의존하는 물류 또는 산업 프로세스들은 교착들의 수를 줄이거나 트랜잭션 데이터 프로세싱 속도를 높이는 효과를 직접 얻을 수 있다.
상기 우선적 교착 회피 알고리즘 (314)의 전제 조건은 상기 분산 데이터베이스에 저장된 데이터 항목들이 순서화 규칙에 따라 전체적으로 순서화된다는 것이다. "전체적으로 순서화된" (또는 "선형으로 순서화된") 세트의 항목들은 상기 순서화 규칙("비교가능성(comparability)" 또는 "전체성 (totality)" 라고 함)에 따라 상기 세트의 쌍의 항목들에 있는 모든 항목들이 상기 쌍의 다른 항목에 대해 정의된 순서를 갖는 항목이다. 반대로 "부분적으로 순서화된" 세트에서는 모든 쌍의 항목들이 서로에 대해 정의된 순서를 가져야 하는 것은 아니다. 완전하게 순서화된 세트는 또한 부분적으로 순서화된 세트에도 해당하는 다른 특성들 (예를 들어, 반대칭성(antisymmetry) 및 이행성(transitivity))을 갖는다.
전체적으로 순서화된 그러한 순서화 규칙의 간단한 하나의 예는 상기 데이터베이스의 각 데이터 항목에 다른 수의 일련의 번호들을 할당하는 것이다. 예를 들어, 상기 데이터베이스의 제 1 데이터 요소에는 숫자 1이, 제 2 데이터 요소에는 숫자 2 등등으로 할당된다. 물론, 다른 보다 복잡한 순서화 규칙들이 사용될 수 있다. 예를 들어, 상기 노드들 (108) 각각은 임의의 주어진 노드 상의 번호들이 상기 각각의 데이터베이스 프래그먼트 내에서 고유하도록 번호들을 그 데이터 항목에 독립적으로 할당할 수 있으며, 그리고 다른 노드들 사이에서 중복들에 대한 검사가 수행된다. 중복들이 발견되는 경우, 타이 브레이커(tie breaker) 규칙을 사용하여 모든 상기 노드들에 걸쳐 다른 데이터 항목들에 다른 숫자들 (또는 전체적으로 순서화된 문자열)이 지정되는 것이 보장되도록 상기 숫자들의 일부 또는 모두를 변경한다. 중복들이 발견되는 경우 사용될 수 있는 타이 브레이커 규칙의 예는 N개의 노드들 각각에 모든 숫자들을 재할당하기 위한 다음의 규칙 : (i + j) mod N 이며, 여기서, 'i'는 데이터 항목에 할당된 원래 로컬 번호이고 'j'는 노드 번호 (1에서 N까지)이다.
전체적으로 순서화된 데이터 항목들을 가지는 데이터베이스의 한 가지 특성은 상기 데이터 항목들에 대한 잠금들이 상기 데이터 항목들의 상기 순서화 규칙과 일치하는 순서로 획득되는 경우에만 교착이 발생하지 않을 수 있다는 것이다. 즉, 트랜잭션이 숫자 1을 가지는 데이터 항목에 대한 잠금을 획득한 다음 숫자 2를 가지는 데이터 항목에 대한 잠금을 획득하면 교착이 발생할 수 없다 (모든 다른 트랜잭션들이 상기 순서화 규칙과 일치하는 순서로 잠금을 획득한다고 가정함). 그러나 트랜잭션이 숫자 2를 가지는 데이터 항목에 대한 잠금을 획득하고 상기 데이터 항목 1에 대한 잠금을 획득하면, 상기 트랜잭션들의 상대적인 타이밍에 따라 교착이 발생할 수 있다 (단, 보장되지는 않음).
매우 일반적으로, 상기 우선적 교착 회피 알고리즘 (314)은 먼저 트랜잭션이 임의의 순서로 데이터 항목들에 대한 잠금들을 획득하려는 시도를 허용하고 상기 트랜잭션이 상기 순서화 규칙에 일치하는 순서로 잠금들을 획득하려는 시도를 강제하지 않는다. 상기 트랜잭션이 획득하려고 시도하는 임의의 상기 잠금들이 사전 정의된 시간 간격 또는 시간 지연 내에 획득되지 않으면 교착이 발생했거나 발생할 가능성에 의해 상기 트랜잭션이 롤백된다. 일부 예들에서, 상기 시간 간격 또는 시간 지연은 상기 순서화 규칙과 일치하는 순서로 잠금들을 획득하는 임의의 두 개의 트랜잭션들이 상기 시간 간격 또는 상기 시간 지연 내에서 그들의 잠금들을 획득할 가능성(예를 들어, 50 % 초과, 75 % 초과 또는 90 % 초과)이 충분히 높다.
롤백된 임의의 트랜잭션의 경우 상기 트랜잭션의 상기 잠금 오퍼레이션들이 상기 순서화 규칙과 일치하도록 제 2 순서로 분류된다. 그 다음 상기 트랜잭션은 재시작 (예를 들어, 재시도되거나 다시 프로세스됨)되고 상기 잠금 오퍼레이션들은 상기 분류된 제 2 순서로 수행된다. 상기 재시작된 트랜잭션은 적어도 잠금들의 획득과 관련하여 상기 순서화 규칙과 일치하는 순서로 잠금들을 획득하고 제 1 시도를 하는 상기 트랜잭션들보다 높은 우선 순위를 가지므로 교착이 없이 진행될 것이다. 즉, 아래에서 설명된 상기 예시 알고리즘 (314)은 상기 재시작된 트랜잭션이 그들의 제 1 시도에 있는 상기 트랜잭션들보다 높은 우선 순위를 가지기 때문에 그들의 제 1 시도에 있는 임의의 트랜잭션들을 롤백할 것이다. 결과적으로, 상기 재시작된 트랜잭션은 이전에 롤백된 트랜잭션들과 잠금을 위해서만 경쟁하고 상기 잠금 순서와 일치하는 순서로 잠금들의 적어도 일부를 획득한다. 상기 알고리즘의 다른 예들에서, 시간 간격 이후의 상기 순서화 결정은 여전히 사용되지만 트랜잭션들 간의 상대적 우선 순위들은 반드시 사용되지는 않으므로 데드라인은 여전히 방지되지만 진행을 위한 요구 사항은 반드시 엄격하지는 않다.
보다 구체적으로, 상기 알고리즘 (314)의 제 1 단계 (316)에서, 루프 조건은 트랜잭션 (T)에 의해 실행되는 상기 루프가 잠금 오퍼레이션들(즉, 상기 목록에 표시된 상기 순서대로 한 번에 하나의 잠금 오퍼레이션)의 목록을 통해 순차적으로 진행함에 따라 수행될 다음의 잠금 오퍼레이션이 존재하는지를 알기 위해 체크되고, 각각의 잠금 오퍼레이션에 대해, 상기 알고리즘 (314)은 그 잠금 오퍼레이션에 의해 식별된 데이터 항목에 잠금 (L)을 획득하려는 시도를 시작한다. 제 2 단계 (318)에서, 상기 잠금 오퍼레이션은 자신의 값이 NULL과 일치하는지 여부를 결정하기 위해 L.owner(즉, 잠금이 있는 경우 트랜잭션들이 이미 상기 잠금 (L)을 소유하고 있음을 나타내는 상기 잠금 (L)의 속성)를 체크한다. 만일 그렇다면, 현재 어떤 트랜잭션도 상기 잠금 (L)을 소유하고 있지 않으며, 상기 알고리즘은 상기 트랜잭션 (T)이 상기 잠금 (L)을 가지는 제 3 단계 (320)로 진행한다. 상기 제 3 단계 (320)에서, L.owner는 T로 설정되고, 상기 루프는 단계 (316)로 복귀한다.
L.owner가 NULL이 아니면, 다른 트랜잭션은 이미 상기 잠금 (L)을 소유하고 있으며 알고리즘은 T.priority(즉, 상기 트랜잭션 (T)의 프로세싱 우선 순위를 나타내는 속성)가 L.owner(현재 상기 잠금 (L)을 소유하고 있는 상기 트랜잭션의 프로세싱 우선 순위를 나타내는 속성)의 우선 순위와 비교되는 제 4 단계 (322)로 진행한다. T.priority가 L.owner.priority보다 크다면, 상기 알고리즘 (314)은 현재 잠금 (L)을 소유하고있는(즉, L.owner) 상기 트랜잭션이 롤백되는 제 5 단계 (324)로 진행한다. 상기 트랜잭션 (T)는 그 다음에 L.owner가 T로 설정되는 시간에 상기 잠금 (L)을 소유하고 상기 루프는 단계 (316)로 복귀한다. T.priority가 L.owner.priority보다 작거나 같으면, 상기 알고리즘 (314)은 상기 트랜잭션에게 상기 잠금 (L)을 획득하려고 시도하는 간격 시간 (또는 "시간 간격" 또는 "시간 지연)(tw)이 허용되는 제 6 단계 (326)로 진행한다.
L.owner가 NULL과 동일해지도록 하는 상기 시간 간격 (tw) 내에 상기 잠금 (L)이 해제되면, 상기 알고리즘 (314)은 상기 트랜잭션 (T)이 상기 잠금 (L)을 소유하는 제 7 단계 (330)로 진행하고, 상기 루프는 단계 (316)로 복귀한다. 제 7 단계 (330)에서, L.owner는 T로 설정된다. 대안적으로, 상기 시간 간격 또는 상기 시간 지연 (tw) 동안, 다른 트랜잭션이 결코 상기 잠금 (L)을 해제하지 않는다면, 상기 알고리즘은 제 8 단계 (332)로 진행한다. 상기 제 8 단계 (332)에서, 상기 알고리즘 (314)은 상기 트랜잭션 (T)에 의해 발행된 모든 오퍼레이션들을 롤백한다. 상기 제 8 단계 (332)는 T에 의해 실행된 잠금 오퍼레이션들의 상기 목록을 제 2 순서로 분류하여 상기 데이터 항목들의 순서화 규칙과 일치하도록 하고 T.priority를 증가시킨다. 다음으로 상기 알고리즘 (314)은 상기 루프 조건을 분류된 잠금 오퍼레이션들의 상기 목록의 시작점으로 다시 초기화하여 단계 (316)로 복귀를 함으로써 상기 트랜잭션 (T)을 재시작하므로, 상기 잠금 오퍼레이션들의 상기 잠금들은 이제 상기 분류된 (제 2) 순서로 순차적으로 획득될 것이다.
상기 예시적 알고리즘 (314)과 다른 해결책을 적용하는 우선적 교착 회피 알고리즘들의 다양한 다른 예가 대안적으로 사용될 수 있지만, 상기 알고리즘 (314)에서와 같이 오버 헤드를 감소시키는 방식으로 여전히 교착을 피한다. 예를 들어, 특정 시간 간격 또는 시간 지연 후에 모든 트랜잭션에 대해 제 2 순서로 상기 잠금 오퍼레이션을 롤백하고 분류(단계 332에서)하는 대신에, 상기 알고리즘은 대신 임의의 초기 잠금들이 획득된 상기 순서가 상기 순서화 규칙과 일치하는지 여부를 먼저 결정할 수 있다. 상기 순서화 규칙과 일치하는 순서로 상기 초기 잠금이 획득되는 경우에, 상기 지연은 교착으로 인한 것이 아니며 상기 트랜잭션은 상기 트랜잭션을 롤백하기 전에 더 긴 시간 간격 또는 시간 지연 동안 상기 잠금을 계속 대기할 수 있다. 그러나 상기 순서화 규칙과 일치하는 순서로 상기 초기 잠금이 획득되지 못하면, 교착이 발생했을 가능성이 있으므로 예를 들어, 분류된 목록과 같이 상기 트랜잭션이 롤백되고 재시작 (예를 들어, 재시도 또는 다시 프로세스됨) 된다. 따라서, 일부 알고리즘들은 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계를 포함하고, 다른 알고리즘들 (알고리즘 (314)와 같은)은 그러한 단계를 포함하지 않는다.
3.1 예시들
도 4를 참조하면 상기 우선적 교착 회피 알고리즘 (314)의 예시적인 응용에서, 두 개의 트랜잭션들 T1 및 T2가 분산 데이터베이스의 데이터 항목들 (데이터 항목들 x 및 y 포함)에 대해 동시에 동작한다. 상기 데이터 항목들은 x가 숫자 1로 지정되고 y가 숫자 2로 지정되는 순서화 규칙에 따라 순서대로 숫자가 매겨진다. 다음 설명을 단순화하기 위해 상기 데이터 항목들을 x1 및 y2라고 한다.
초기 시간 단계 (0)에서 트랜잭션은 x1 또는 y2에 대한 잠금을 보유하지 않는다. 제 1 시간 단계 (1)에서 T1은 read_lock (y2) 명령을 발행하여 y2에 대한 잠금을 획득하려고 시도한다. 그렇게하기 위해, T1은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 y2를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 1 시간 단계 (1)에서 y2에 대한 쓰기 잠금을 갖지 않기 때문에, T1은 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하고 y2에 대한 읽기 잠금 RT1 (434)을 성공적으로 획득한다. y2에 대한 상기 읽기 잠금 RT1 (434)을 획득하면, y2를 위한 L.owner는 T1으로 설정된다.
제 2 시간 단계 (2)에서, T1은 read (y2) 명령을 발행하여 상기 y2 값을 읽으려고 시도한다. T1은 y2에 대한 읽기 잠금을 보유하고 있기 때문에 T1은 상기 y2 값을 성공적으로 읽는다.
제 3 시간 단계 (3)에서 T2는 read_lock (x1) 명령을 발행하여 x1에 대한 잠금을 획득하려고 시도한다. 그렇게하기 위해, T2는 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 3 시간 단계 (3)에서 x1에 대한 쓰기 잠금을 소유하지 않기 때문에, T2는 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 x1에 대한 읽기 잠금 RT2 (436)를 성공적으로 획득한다. x1에 대한 상기 읽기 잠금 RT2 (436)를 획득하면, x1을 위한 L.owner는 T2로 설정된다.
제 4 시간 단계 (4)에서, T2는 read (x1) 명령을 발행하여 x1의 값을 읽으려고 시도한다. T2는 x1에 대한 읽기 잠금을 보유하고 있기 때문에 T2는 x1의 값을 성공적으로 읽는다.
제 5 시간 단계 (5)에서, T1은 write_lock (x1) 명령을 발행하여 x1에 대한 쓰기 잠금을 획득하기 위해 시도한다. 그렇게하기 위해, T1은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1을 위한 L.owner가 NULL과 동일한지 여부를 결정한다. T2는 여전히 x1에 대한 읽기 잠금을 소유하고 있기 때문에 (즉, x1을 위한 L.owner는 T2와 동일함), T1은 상기 알고리즘 (314)의 상기 제 4 단계 (322)로 진행하고, T1이 T2보다 더 높은 우선 순위를 갖는지 여부를 결정한다. 상기 제 5 시간 단계 (5)에서, T1.priority 및 T2.priority는 모두 0과 같기 때문에, T1은 상기 알고리즘 (314)의 상기 제 6 단계 (326)로 진행하여 시간 간격 또는 시간 지연 (tw)을 위한 x1에 대한 상기 쓰기 잠금을 획득하려고 시도한다.
제 6 시간 단계 (6)에서 T1은 여전히 x1에 대한 상기 쓰기 잠금을 획득하기 위해 대기하고 있지만 T2는 write_lock (y2) 명령을 발행하여 y2에 대한 쓰기 잠금을 획들하려고 시도한다. 그렇게하기 위해, 트랜잭션 (T2)은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 y2를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. T1은 여전히 y2에 대한 읽기 잠금을 소유하고 있으므로 (즉, y2를 위한 L.owner가 T1과 동일한 경우), T2는 상기 알고리즘 (314)의 상기 제 4 단계 (322)로 진행하여 T2가 T1보다 더 높은 우선 순위를 갖는지 여부를 결정한다. 상기 제 5 시간 단계 (5)에서, T1.Priority 및 T2.priority는 모두 0과 같기 때문에, T2는 상기 알고리즘 (314)의 상기 제 6 단계 (326)로 진행하고, 시간 간격 또는 시간 지연 (tw) 동안 y2에 대한 상기 쓰기 잠금을 획득하기 위해 시도한다.
제 7 시간 단계 (7)에서, T1이 x1에 대한 상기 쓰기 잠금을 획득하지 못한 채 트랜잭션 (T1)이 x1에 대한 상기 쓰기 잠금을 획득하기 위해 노력하는 상기 시간 간격 (tw)이 경과한다. 상기 알고리즘 (314)은 상기 제 8 단계 (332)로 진행하고, 상기 제 7 시간 단계 (7)에서 x1에 대한 쓰기 잠금을 획득하고 제 8 시간 단계 (8)에서 y2에 읽기 잠금을 해제하는 시도를 중단하는 것을 포함하는 상기 트랜잭션 (T1)을 롤백한다. T1을 롤백함으로써 T1과 T2 사이의 교착이 회피된다. T1이 롤백 되었기 때문에, T1.priority는 상기 알고리즘 (314)의 상기 제 8 단계 (332)에 의해 0에서 1로 증가된다 (도 5 참조). T1의 상기 우선 순위를 증가시킴으로써, 상기 알고리즘 (314)은 반복적으로 롤백되는 것에 의한 T1이 고갈되지 않도록 보장한다. 마지막으로, 상기 알고리즘 (314)의 상기 제 8 단계 (332)는 롤백되기 전에 T1이 발행한 잠금 오퍼레이션들을 검사하고, 이들을 상기 데이터 항목들의 상기 순서화 규칙과 일치하도록 분류한다. T1의 경우 상기 잠금 오퍼레이션들은 다음과 같이 분류된다.
(1) write_lock (x1)
(2) read_lock (y2)
y2에 대한 T1의 읽기 잠금이 해제되면 트랜잭션 (T2)는 y2에 대한 상기 쓰기 잠금 WT2 (440)를 성공적으로 얻을 수 있다. 제 9 시간 단계 (9)에서 트랜잭션 (T2)은 쓰기 (y2) 명령을 발행하고 y2를 새로운 값 y2 '로 덮어 쓴다. 제 10 시간 단계 (10)에서 트랜잭션 (T2)은 commit (T2) 명령을 발행하여 상기 데이터베이스에 변경 사항들을 커밋한다. T2의 변경들이 커밋된 후, x1에 대한 상기 읽기 잠금 RT2 (436)와 y2 '에 대한 상기 쓰기 잠금 WT2 (440)가 해제되고 트랜잭션 (T2)이 완료된다.
제 11 시간 단계 (11)에서, T1은 제 2 시도를 시작한다. 상기 제 2 시도에서 T1은 상기 트랜잭션의 맨 처음에서 상기 분류된 순서로 제 1 시도에서 발행되었던 상기 잠금 오퍼레이션들을 재발행한다(즉, 상기 데이터 항목들의 상기 순서화 규칙과 일치하는 상기 순서로). 즉, 상기 11 시간 단계 (11)에서 T1은 write_lock (x1) 명령을 발행하여 x1에 대한 쓰기 잠금을 얻으려고 시도한다. 그렇게하기 위해, T1은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1을 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 11 시간 단계 (11)에서 x1에 대한 쓰기 잠금을 소유하지 않기 때문에, T1은 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 x1에 대한 쓰기 잠금 WT1 (442)을 성공적으로 획득한다. x1에 대한 상기 쓰기 잠금 WT1 (442)을 획득하면, x1을 위한 L.owner는 T1으로 설정된다.
제 12 시간 단계 (12)에서, T1은 read_lock (y2 ') 명령을 발행하여 y2'에 대한 읽기 잠금을 획득하려고 시도한다. 그렇게하기 위해, 상기 제 1 트랜잭션 (T1)은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 y2 '를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 12 시간 단계 (12)에서 y2 '에 대한 쓰기 잠금을 소유하지 때문에, T1은 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 y2'에 대한 읽기 잠금 RT1 (444)을 성공적으로 획득한다. y2 '에 대한 상기 읽기 잠금 RT1 (444)을 획득하면, y2'를 위한 L.owner는 T1으로 설정된다.
제 13 시간 단계 (13)에서 트랜잭션 T1은 write (x1) 명령을 발행하고 x1을 새로운 값 x1 '으로 덮어쓴다. 제 14 시간 단계 (14)에서 트랜잭션 (T1)은 commit (T1) 명령을 발행하여 변경 사항들을 상기 데이터베이스에 커밋한다. T1의 변경들이 커밋된 후, y2에 대한 상기 읽기 잠금 RT1 (444) 및 쓰기 잠금 WT1 (442)이 해제되고 트랜잭션 (T1)이 완료된다.
도 5를 참조하면, 상기 우선적 교착 회피 알고리즘 (314)의 또 다른 예시적인 응용에서, 상기 분산된 데이터베이스의 데이터 아이템들 (데이터 아이템들 x1 및 y2를 포함)에 대한 두 개의 트랜잭션 T1 및 T2가 동시에 오퍼레이팅한다. 이 예에서 상기 제 1 트랜잭션 (T1)은 이전에 롤백되었으며 T1.priority는 1과 같다.
초기 시간 단계 (0)에서 트랜잭션은 x1 또는 y2에 대한 잠금을 소유하지 않는다. 제 1 시간 단계 (1)에서 T1은 read_lock (y2) 명령을 발행하여 y2에 대한 잠금을 획득하려고 시도한다. 그렇게하기 위해, T1은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 y2를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 1 시간 단계 (1)에서 y2에 대한 읽기 잠금을 소유하지 않기 때문에, T1은 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하고 y2에 대한 읽기 잠금 RT1 (646)을 성공적으로 획득한다. y2에 대한 상기 읽기 잠금 RT1 (646)을 획득하면, y2를 위한 L.owner는 T1으로 설정된다.
제 2 시간 단계 (2)에서, T1은 read (y2) 명령을 발하여 y2 값을 읽으려고 시도한다. T1은 y2에 대한 읽기 잠금을 소유하고 있기 때문에 T1은 y2 값을 성공적으로 읽는다.
제 3 시간 단계 (3)에서, T2는 read_lock (x1) 명령을 발행하여 x1에 대한 잠금을 획득하려고 시도한다. 그렇게하기 위해, T2는 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1을 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 3 시간 단계 (3)에서 x1에 대한 쓰기 잠금을 소유하지 않기 때문에, T2는 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 x1에 대한 읽기 잠금 RT2 (648)를 성공적으로 획득한다. x1에 대한 상기 읽기 잠금 RT2 (648)를 획득하면, x1을 위한 L.owner는 T2로 설정된다.
제 4 시간 단계 (4)에서, T2는 read (x1) 명령을 발행함으로써 x1의 값을 읽으려고 시도한다. T2는 x1에 대한 읽기 잠금을 보유하고 있기 때문에 T2는 x1의 값을 성공적으로 읽는다.
제 5 시간 단계 (5)에서 T1은 write_lock (x1) 명령을 발행하여 x1에 대한 쓰기 잠금을 획득하려고 시도한다. 그렇게하기 위해, T1은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1을 위한 L.owner가 NULL과 동일한지 여부를 결정한다. T2는 여전히 x1에 대한 읽기 잠금을 소유하고 있기 때문에 (즉, x1을 위한 L.owner는 T2와 동일함), T1은 상기 알고리즘 (314)의 상기 제 4 단계 (322)로 진행하고, T1이 T2보다 높은 우선 순위를 갖는지 여부를 결정한다. 제 5 시간 단계 (5)에서, T1.priority는 1이고 T2.priority는 0이다. 이와 같이, T1은 상기 알고리즘 (314)의 상기 제 5 단계 (324)로 진행하고, 제 6 시간 단계 (6)에서 x1에 대한 T2의 읽기 잠금 RT1 (646)을 해제하기 위해 unlock (x1) 명령을 발행하는 것을 포함하는 T2를 롤백한다. T2가 롤백 되었기 때문에, T2.priority는 상기 알고리즘 (314)의 상기 제 5 단계 (324)에 의해 0에서 1로 증가된다. x1에 대한 T2의 읽기 잠금 RT2 (648)가 해제되면, T1은 x1에 대한 쓰기 잠금 WT1 (650)을 성공적으로 획득할 수 있다. 제 7 시간 단계 (7)에서 T1은 write (x1) 명령을 발행하고 x1을 새로운 값 x1 '으로 덮어쓴다. 제 8 시간 단계 (8)에서 T1은 상기 데이터베이스에 변경들을 커밋하기 위해 commit (T1) 명령을 발행한다. T1의 변경들이 커밋된 후, y2에 대한 상기 읽기 잠금 RT1 (646)과 x1 '에 대한 상기 쓰기 잠금 WT1 (650)이 해제되고 트랜잭션 (T1)이 완료된다.
제 9 시간 단계 (9)에서, T2는 제 2 시도를 시작한다. 상기 제 2 시도에서, T2는 read_lock (x1) 명령을 발행하여 x1 '에 대한 읽기 잠금을 획득하려고 시도한다. 그렇게하기 위해, T2는 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 x1을 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 9 시간 단계 (9)에서 x1 '에 대한 쓰기 잠금을 보유하지 않기 때문에, T2는 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 x1'에 대한의 읽기 잠금 RT2 (652)를 성공적으로 획득한다. x1'에 대한 상기 읽기 잠금 RT2 (652)를 획득하면, x1'을 위한 L.owner는 T2로 설정된다.
제 10 시간 단계 (10)에서 T2는 write_lock (y2) 명령을 발행하여 y2에 대한 쓰기 잠금을 획득하려고 시도한다. 그렇게하기 위해, 상기 제 2 트랜잭션 (T2)은 상기 우선적 교착 회피 알고리즘 (314)의 상기 제 2 단계 (318)를 적용하고 y2를 위한 L.owner가 NULL과 동일한지 여부를 결정한다. 다른 트랜잭션이 상기 제 10 시간 단계 (10)에서 y2에 대한 쓰기 잠금을 보유하지 않기 때문에, T2는 상기 알고리즘 (314)의 상기 제 3 단계 (320)로 진행하여 y2에 대한 쓰기 잠금 WT2 (654)를 성공적으로 획득한다. y2에 대한 상기 쓰기 잠금 WT2 (654)를 획득하면, y2를 위한 L.owner는 T2로 설정된다.
제 11 시간 단계 (11)에서, T2는 x1 '의 값을 읽기 위해 read (x1') 명령을 발행한다. 제 12 시간 단계 (12)에서 T2는 write (y2) 명령을 발행하고 y2의 값을 새로운 값 y2 '로 덮어쓴다. 제 13 시간 단계 (13)에서, T2는 commit (T2) 명령을 발행하여 변경들을 상기 데이터베이스에 커밋한다. T2의 변경들이 커밋된 후 x1에 대한 상기 읽기 잠금 RT2 (652)와 x1 '에 대한 상기 쓰기 잠금 WT2 (654)가 해제되고 트랜잭션 (T2)이 완료된다.
4 대안들
일부 예들에서, 잠금 오퍼레이션들은 트랜잭션의 상기 제 1 시도에서 데이터 항목들에 대해 수행되므로, 상기 순서화 규칙에 기초한 상기 데이터 항목들의 위치들은 상기 잠금 오퍼레이션들을 분류하는데 나중에 사용하기 위해 저장된다. 예를 들어, 제 1 지연 시간 내에 잠금들을 획득한 데이터 항목들의 위치들은 저장될 수 있다. 상기 트랜잭션의 모든 잠금들이 분류되도록 요구하는 대신, 상기 제 1 지연 시간 내에 처음 획득된 잠금들만을 단순히 분류하기 위해 순방향 진행을 보장하는 것으로 충분할 수 있으며, 이는 많은 수의 잠금 오퍼레이션들을 가지는 트랜잭션들처럼 많은 작업이 필요하지 않을 수 있다.
일부 예들에서, 잠금 오퍼레이션이 완료되기를 기다리는 상기 시간 간격 또는 시간 지연은 잠금 오퍼레이션이 상기 순서화 규칙과 일치하는 경우 더 길다.
일부 예들에서, 트랜잭션은 제 2 시간 간격 또는 제 2 시간 지연 이후에만 재시작된다. 일부 예들에서, 제 2 시간 간격 또는 시간 지연은 잠금 오퍼레이션이 잠금을 획득하려고 시도하는 상기 시간 간격 또는 시간 지연보다 길다.
일부 예들에서, 잠금 오퍼레이션이 잠금을 획득하려고 시도하는 상기 시간 간격 또는 시간 지연은 1 초 미만 (예를 들어, 100 ms, 1 ms, 100 마이크로초, 1 마이크로초 또는 0.1 마이크로초)이다. 일부 예들에서, 잠금이 잠금을 획득하려고 시도하는데 허락된 상기 시간 간격은 약 0 초이다.
일부 예들에서, 주어진 데이터 항목에 대한 잠금은 단일 잠금 해제 상태 및 하나 이상의 잠금 상태들을 포함하는 복수의 상태들을 가질 수 있다. 일부 예들에서, 상기 하나 이상의 잠금된 상태들은 배타적인 쓰기 잠금 상태와 비 배타적인 다중 쓰기 잠금된 상태를 포함한다.
일부 예들에서 상기 분산 데이터베이스 시스템에서 실행되는 상기 트랜잭션들은 비동기적으로 트랜잭션들을 실행한다. 일부 예들에서 상기 데이터베이스는 메모리 내(in-memory) 데이터베이스이다.
상기 요약 부분에서 설명된 특징들을 포함하여 여기서 설명된 다양한 특징들을 포함하여 다양한 다른 대안 기술들이 사용될 수 있다.
5 구현들
전술한 상기 교착 회피 접근들은 예를 들어 적절한 소프트웨어 명령들을 실행하는 프로그램 가능한 컴퓨팅 시스템을 사용하여 구현될 수 있거나 또는 FPGA (field-programmable gate array)와 같은 적절한 하드웨어 또는 일부 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그램된 접근에서 상기 소프트웨어는 하나 이상의 프로그램된 또는 프로그램 가능한 컴퓨팅 시스템 (분산, 클라이언트/서버 또는 그리드와 같은 다양한 아키텍처일 수 있음)상에서 실행되는 하나 이상의 컴퓨터 프로그램 내의 절차들을 포함할 수 있으며 각각은 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템 (휘발성 및/또는 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 사용자 인터페이스 (적어도 하나의 입력 장치 또는 포트를 사용한 입력 수신을 위한, 적어도 하나의 출력 장치 또는 포트를 사용한 출력을 제공하기 위한)를 포함한다. 상기 소프트웨어는 예를 들어, 데이터 흐름 그래프들의 설계, 구성 및 실행과 관련된 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈들을 포함할 수 있다. 상기 프로그램의 상기 모듈들 (예를 들어, 데이터 흐름 그래프의 요소들)은 데이터 구조들 또는 데이터 저장소에 저장된 데이터 모델을 따르는 다른 조직화된 데이터로서 구현될 수 있다.
상기 소프트웨어는 휘발성 또는 비휘발성 저장 매체 또는 임의의 다른 비 일시적인 매체로 구현되는 것과 같이, 상기 매체(예를 들어, 표면의 홈들 및 평면들, 자장 영역들 또는 전하)의 물리적 특성을 일정 시간(동적 RAM과 같은 동적 메모리 장치의 리프레시 주기들 사이의 시간) 동안 사용하여 비 일시적 형태로 저장될 수 있다. 상기 명령들을 로딩하기 위한 준비에서, 상기 소프트웨어는 CD-ROM 또는 다른 컴퓨터 판독 가능 매체 (예를 들어, 범용 또는 특수 목적의 컴퓨팅 시스템 또는 장치에 의해 판독 가능)와 같은 유형의, 비 일시적인 매체상에 제공되거나, 네트워크의 통신 매체를 통해 실행되는 컴퓨팅 시스템의 유형의, 비 일시적인 매체로 전달 (예를 들어, 전파된 신호로 인코딩됨)될 수 있다. 상기 프로세싱의 일부 또는 전부는 특수 목적 컴퓨터에서 수행되거나 코프로세서들(coprocessors) 또는 FPGA (Field-Programmable Gate Array) 또는 전용 ASIC (Application-Specific Integrated Circuit)과 같은 특수 목적 하드웨어를 사용하여 수행될 수 있다. 상기 프로세싱은 상기 소프트웨어에 의해 특정된 계산의 다른 부분들이 다른 계산 요소들에 의해 수행되는 분산 방식으로 구현될 수 있다. 이러한 각각의 컴퓨터 프로그램은 바람직하게는 범용 또는 특수 목적의 프로그램 가능한 컴퓨터에 의해 접근 가능한 저장 장치의 컴퓨터 판독 가능 저장 매체 (예를 들어, 고체 상태 메모리 또는 매체, 또는 자기 또는 광학 매체)에 저장되거나 다운로드되며, 본 명세서에 설명된 상기 프로세싱을 수행하기 위해 상기 저장 장치 매체가 상기 컴퓨터에 의해 판독될 때 상기 컴퓨터를 구성하고 오퍼레이팅하기 위한 것이다. 본 발명의 시스템은 또한 컴퓨터 프로그램으로 구성된 유형적이고 비 일시적인 매체로서 구현되는 것으로 고려될 수 있으며, 그렇게 구성된 상기 매체는 컴퓨터로 하여금 하나 이상의 상기 프로세싱 단계들을 수행하도록 특정의 소정의 방식으로 동작하게 하며 본 명세서에 설명되어 있다.
본 발명의 많은 실시 예들이 설명되었다. 그럼에도 불구하고, 상기 전술한 설명은 예시하기 위한 것이지 다음의 청구 범위들의 범주에 의해 정의되는 본 발명의 범위를 제한하는 것은 아니다. 따라서, 다른 실시 예들 또한 다음의 청구 범위들의 범주 내에 있다. 예를 들어, 본 발명의 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있다. 또한, 전술한 상기 단계들의 일부는 순서에 독립적일 수 있으며, 따라서 설명된 것과 다른 순서로 수행될 수 있다.
도 1은 분산 데이터베이스 시스템을 포함하는 데이터 프로세싱의 블록도이다.
도 2는 두 개의 데이터베이스 트랜잭션들 간의 교착을 도시한다.
도 3은 우선적 교착 회피 알고리즘의 흐름도이다.
도 4는 도 3의 상기 알고리즘의 제 1 잠재적 교착 상황에 적용한 것을 도시한다.
도 5는 도 3의 상기 알고리즘의 제 2 잠재적 교착 상황에 적용한 것을 도시한다.

Claims (50)

  1. 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법에서, 상기 방법은
    상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로(totally) 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및
    복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들 - 상기 요청들이 제 1 순서에 있음 - 의 세트를 수신하는 단계,
    각각의 잠금들이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및
    프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함함 - 를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  2. 제 1 항에 있어서, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 트랜잭션을 롤백 (rolling back)하는 단계, 상기 데이터 항목들에 대한 임의의 기존의 잠금들을 해제하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  3. 제 1 항 내지 제 2 항 중 어느 한 항에 있어서, 상기 제 2 순서는 상기 제 1 시간 간격 내에서 잠금들이 획득된 적어도 데이터 항목들에 대한 상기 순서화 규칙과 일치하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 제 1 시간 간격 내에서 잠금들이 획득된 데이터 항목들의 상기 순서화 규칙에 기초하여 위치들을 식별하는 정보를 저장하는 단계를 더 포함하며, 상기 제 2 순서를 결정하는 단계는 상기 위치들을 식별하는 상기 저장된 정보에 적어도 부분적으로 기초하여 상기 제 2 순서를 결정하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서, 상기 제 2 순서를 결정하는 단계는 상기 순서화 규칙에 따라 상기 잠금들을 획득하기 위한 오퍼레이션들의 목록을 분류(sorting)하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 그리고 상기 제 1 순서가 상기 순서화 규칙에 일치하는 경우에 상기 제 1 시간 간격 내에서 잠금이 획득되지 않은 임의의 데이터 항목들에 대한 잠금들을 위해 상기 제 1 시간 간격보다 길게 대기하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 복수의 상기 다중 프로세스들 중 다른 프로세스들에 대한 요청들의 세트를 수신한 상기 프로세스의 우선 순위를 결정하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  8. 제 7 항에 있어서, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 우선 순위를 결정하는 단계 이후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 요청들의 세트에 의해 접근이 요청된 적어도 하나의 데이터 항목에 대한 잠금 상태가 변경된 것으로 결정하는 단계 이후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  10. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계를 더 포함하고, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 제 1 순서가 상기 순서화 규칙과 일치하지 않는다는 결정 단계로부터 제 2 시간 간격 후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  11. 제 10 항에 있어서, 상기 제 2 시간 간격은 상기 제 1 시간 간격보다 긴 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서, 상기 제 1 시간 간격은 1 초 미만인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 프로세스되고 있는 상기 트랜잭션이 커밋, 중단 또는 재시작될 때까지 상기 데이터 항목들에 대해 획득된 임의의 잠금들을 유지하는 단계 ; 및 프로세스되고 있는 상기 트랜잭션이 커밋, 중단, 재시작될 때 상기 데이터 항목들에 대한 상기 잠금들을 해제하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  14. 상기 제 1 항 내지 제 13 항 중 어느 한 항에 있어서, 상기 데이터 항목들에 대한 상기 잠금들은 단일 잠금 해제된 상태 및 하나 이상의 잠금된 상태들을 포함하는 적어도 두 개의 상태들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  15. 제 14 항에 있어서, 데이터 항목에 대한 잠금을 획득하는 단계는 상기 데이터 항목과 관련된 상기 잠금 상태를 상기 잠금된 상태들 중 하나로 변경하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  16. 제 14 항 내지 제 15 항 중 어느 한 항에 있어서, 데이터 항목에 대한 잠금을 해제하는 단계는 상기 데이터 항목과 관련된 상기 잠금 상태를 상기 잠금된 상태들 중 하나로부터 상기 잠금 해제된 상태로 변경하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  17. 제 14 항 내지 제 16 항 중 어느 한 항에 있어서, 상기 데이터 항목들에 대한 상기 잠금들은 단일 프로세스만이 잠금된 데이터 항목에 완전한 접근를 허용하는 적어도 하나의 배타적인 잠금된 상태를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  18. 제 14 항 내지 제 17 항 중 어느 한 항에 있어서, 상기 데이터 항목들에 대한 상기 잠금들은 다중 프로세스들이 잠금된 데이터 항목에 읽기 전용 접근을 허용하는 적어도 하나의 공유된 잠금된 상태를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  19. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서, 상기 다중 프로세스들 중 적어도 일부는 서로 비동기적으로 동작하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  20. 제 1 항 내지 제 19 항 중 어느 한 항에 있어서, 상기 트랜잭션들은 데이터베이스 트랜잭션들을 포함하고, 상기 데이터 항목들은 데이터베이스 내부의 레코드들인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  21. 제 20항에 있어서, 상기 데이터베이스는 메모리 내 (in-memory) 데이터베이스인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  22. 제 20 항 내지 제 21 항 중 어느 한 항에 있어서, 상기 데이터 저장 시스템은 상기 데이터베이스의 다수의 노드들 사이에 분산되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  23. 제 1 항 내지 제 22 항 중 어느 한 항에 있어서, 상기 복수의 상기 다중 프로세스들 중 적어도 일부는 상기 프로세싱 모듈들 중 다른 모듈들에서 동작하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  24. 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서, 하나 이상의 컴퓨터들에 의해 실행될 때, 하나 이상의 컴퓨터들로 하여금 트랜잭션들을 프로세싱하기 위한 오퍼레이션들을 수행하게 하는 명령들을 저장하는 컴퓨터 판독 가능한 저장 매체에서, 상기 오퍼레이션들은
    상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및
    복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계,
    상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및
    프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함함 - 를 포함하는 컴퓨터 판독 가능한 저장 매체.
  25. 트랜잭션들을 프로세싱하는 분산 컴퓨팅 시스템에서, 상기 분산 컴퓨팅 시스템은
    복수의 프로세싱 모듈들; 및
    데이터 항목들을 저장하기 위해 구성되는 데이터 저장 시스템 - 상기 데이터 저장 시스템은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능하며, 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - 을 포함하며,
    복수의 상기 다중 프로세스들은 트랜잭션들을 프로세스하기 위해 구성되며, 상기 복수의 상기 다중 프로세스들의 하나를 사용하여 트랜잭션을 프로세싱하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계,
    상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 적어도 두 개의 상기 잠금들에 대한 상기 순서화 규칙과 일치하는 제 2 순서를 결정하는 단계, 및
    프로세스되고 있는 상기 트랜잭션을 재시작하는 단계 - 데이터 항목들에 대한 잠금들을 상기 제 2 순서로 순차적으로 획득하는 단계를 포함 - 를 포함하는 분산 컴퓨팅 시스템.
  26. 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법에서, 상기 방법은
    상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 접근 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들의 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및
    복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들의 하나를 사용하여 트랜잭션을 프로세싱하는 하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계,
    제 1 시간 간격 내에서 각각의 상기 잠금들이 얻어지는 경우에 상기 데이터 항목들에 대한 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및
    상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  27. 제 26 항에 있어서, 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 트랜잭션을 롤백하는 단계, 상기 데이터 항목들에 대한 임의의 기존의 잠금들을 해제하는 단계 및 상기 제 1 순서와 다른 제 2 순서로 순차적으로 데이터 항목들에 대한 잠금들을 획득하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  28. 제 26 항 내지 제 27 항 중 어느 한 항에 있어서, 상기 제 2 순서는 적어도 상기 제 1 시간 간격 내에서 잠금들이 획득된 적어도 상기 데이터 항목들에 대한 상기 순서화 규칙과 일치하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  29. 제 26 항 내지 제 28 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 제 1 시간 간격 내에서 잠금들이 획득된 데이터 항목들의 상기 순서화 규칙에 기초하여 위치들을 식별하는 정보를 저장하는 단계, 및 상기 위치들을 식별하는 상기 저장된 정보에 적어도 부분적으로 기초하여 상기 제 2 순서를 결정하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  30. 제 26 항 내지 제 29 항 중 어느 한 항에 있어서, 상기 제 2 순서는 상기 순서화 규칙에 따라 상기 잠금들을 획득하기 위한 오퍼레이션들의 목록 분류에 기초하여 결정되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  31. 제 26 항 내지 제 30 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하는 경우 상기 제 1 시간 간격 내에서 잠금이 획득되지 않은 임의의 데이터 항목들에 대한 잠금들을 위한 상기 제 1 시간 간격보다 길게 대기하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  32. 제 26 항 내지 제 31 항 중 어느 한 항에 있어서, 상기 프로세싱은 상기 복수의 상기 다중 프로세스들 중 다른 프로세스들에 대한 상기 요청들의 세트를 수신한 상기 프로세스의 우선 순위를 결정하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  33. 제 32 항에 있어서, 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 우선 순위를 결정하는 단계 이후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  34. 제 26 항 내지 제 33 항 중 어느 한 항에 있어서, 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 요청들의 세트에 의해 접근이 요청된 적어도 하나의 데이터 항목에 대한 잠금 상태가 변경된 것으로 결정하는 단계 이후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  35. 제 26 항 내지 제 33 항 중 어느 한 항에 있어서, 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계는 상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는다고 결정하는 단계로부터 제 2 시간 간격 이후에 수행되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  36. 제 35 항에 있어서, 상기 제 2 시간 간격은 상기 제 1 시간 간격보다 긴 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  37. 제 26 항 내지 제 36 항 중 어느 한 항에 있어서, 상기 제 1 시간 간격은 1 초 미만인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  38. 제 26 항 내지 제 37 항 중 어느 한 항에 있어서, 상기 프로세싱 단계는 프로세스되고 있는 상기 트랜잭션이 커밋, 중단, 또는 재시작될 때까지 상기 데이터 항목들에 대해 획득된 임의의 잠금들을 유지하는 단계; 및 프로세스되고 있는 상기 트랜잭션이 커밋, 중단 또는 재시작될 때 상기 데이터 항목들에 대한 상기 잠금들을 해제하는 단계를 더 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  39. 제 26 항 내지 제 38 항 중 어느 한 항에 있어서, 상기 데이터 항목들에 대한 상기 잠금들은 단일 잠금 해제된 상태 및 하나 이상의 잠금된 상태들을 포함하는 적어도 두 개의 상태들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  40. 제 39 항에 있어서, 데이터 항목에 대한 잠금을 획득하는 단계는 상기 데이터 항목과 관련된 상기 잠금의 상태를 상기 잠금된 상태들 중 하나로 변경시키는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  41. 제 39 항 내지 제 40 항 중 어느 한 항에 있어서, 데이터 항목에 대한 잠금을 해제하는 단계는 상기 데이터 항목과 관련된 상기 잠금의 상태를 상기 잠금된 상태들 중의 하나로부터 상기 잠금 해제된 상태로 변경하는 단계를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  42. 39 항 내지 제 41 항 중 어느 한 항에 있어서, 상기 데이터 항목들에 대한 상기 잠금들은 단일 프로세스만이 잠금된 데이터 항목에 완전한 접근을 허용하는 적어도 하나의 배타적인 잠금된 상태를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  43. 제 39 항 내지 제 42 항 중 어느 한 항에 있어서, 상기 데이터 항목에 대한 상기 잠금들은 다중 프로세스들이 잠금된 데이터 항목에 읽기 전용 접근을 허용하는 적어도 하나의 공유된 잠금된 상태를 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  44. 제 26 항 내지 제 43 항 중 어느 한 항에 있어서, 상기 다중 프로세스들 중 적어도 일부는 서로 비동기적으로 동작하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  45. 제 26 항 내지 제 44 항 중 어느 한 항에 있어서, 상기 트랜잭션들은 데이터베이스 트랜잭션을 포함하고 상기 데이터 항목들은 데이터베이스 내부의 레코드들인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  46. 제 45 항에 있어서, 상기 데이터베이스는 메모리 내(in-memory) 데이터베이스인 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  47. 제 45 항 내지 제 46 항 중 어느 한 항에 있어서, 상기 데이터 저장 시스템은 상기 데이터베이스의 다수의 노드들 사이에 분산되는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  48. 제 26 항 내지 제 47 항 중 어느 한 항에 있어서, 상기 복수의 상기 다중 프로세스들 중 적어도 일부는 상기 프로세싱 모듈들 중 다른 모듈들에서 동작하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하는 방법.
  49. 다중 프로세싱 모듈들을 포함하는 분산 컴퓨팅 시스템에서 트랜잭션들을 프로세싱하기 위한 오퍼레이션들을, 하나 이상의 컴퓨터들에 의해 실행될 때, 하나 이상의 컴퓨터들이 수행하게 하는 명령들을 저장하는 컴퓨터 판독 가능한 저장 매체에서, 상기 오퍼레이션들은
    상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세스들에 액세스 가능한 데이터 저장 시스템에 데이터 항목들을 저장하는 단계 - 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - ; 및
    복수의 상기 다중 프로세스들을 사용하여 트랜잭션들을 프로세싱하는 단계를 포함하되, 상기 복수의 상기 다중 프로세스들을 사용하여 트랜잭션을 프로세싱하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계,
    상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및
    상기 제 1 순서가 상기 순서화 규칙에 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함하는 컴퓨터 판독 가능한 저장 매체.
  50. 트랜잭션들을 프로세싱하는 분산 컴퓨팅 시스템에서, 상기 분산 컴퓨팅 시스템은
    복수의 프로세싱 모듈들; 및
    데이터 항목들을 저장하기 위해 구성되는 데이터 저장 시스템 - 상기 데이터 저장 시스템은 상기 분산 컴퓨팅 시스템에서 동작하는 다중 프로세들에 접근 가능하며, 상기 데이터 항목들은 순서화 규칙에 따라 전체적으로 순서화되며, 상기 프로세스들 중 적어도 일부는 다른 프로세싱 모듈들에서 동작함 - 을 포함하며,
    복수의 상기 다중 프로세스들은 트랜잭션들을 프로세스하기 위해 구성되며, 상기 복수의 상기 다중 프로세스들 중 하나를 사용하여 트랜잭션을 프로세싱하는 단계는
    상기 데이터 저장 시스템에 저장된 데이터 항목들에 접근하기 위한 요청들의 세트 - 상기 요청들이 제 1 순서에 있음 - 를 수신하는 단계,
    상기 잠금들의 각각이 제 1 시간 간격 내에서 획득되는 경우에 상기 데이터 항목들에 대한 상기 잠금들을 상기 제 1 순서로 순차적으로 획득하는 단계,
    상기 제 1 시간 간격 내에서 상기 잠금들 중 어느 것도 획득되지 않는 경우에 상기 제 1 순서가 상기 순서화 규칙과 일치하는지 여부를 결정하는 단계, 및
    상기 제 1 순서가 상기 순서화 규칙과 일치하지 않는 경우에 프로세스되고 있는 상기 트랜잭션을 재시작하는 단계를 포함하는 트랜잭션들을 프로세싱하는 분산 컴퓨팅 시스템.
KR1020177031717A 2015-04-01 2016-03-22 분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법 KR102103063B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562141388P 2015-04-01 2015-04-01
US62/141,388 2015-04-01
PCT/US2016/023554 WO2016160416A1 (en) 2015-04-01 2016-03-22 Processing database transactions in a distributed computing system

Publications (2)

Publication Number Publication Date
KR20170132873A true KR20170132873A (ko) 2017-12-04
KR102103063B1 KR102103063B1 (ko) 2020-05-29

Family

ID=55750446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177031717A KR102103063B1 (ko) 2015-04-01 2016-03-22 분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법

Country Status (10)

Country Link
US (1) US10140329B2 (ko)
EP (1) EP3278239B1 (ko)
JP (1) JP6724039B2 (ko)
KR (1) KR102103063B1 (ko)
CN (1) CN108337911B (ko)
AU (1) AU2016244128B2 (ko)
CA (1) CA2981476C (ko)
HK (1) HK1257454A1 (ko)
SG (1) SG11201707983QA (ko)
WO (1) WO2016160416A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
PT3539026T (pt) 2016-11-10 2022-03-08 Swirlds Inc Métodos e aparelhos para uma base de dados distribuída que inclui entradas anónimas
CN106775974B (zh) * 2016-12-07 2019-12-10 国云科技股份有限公司 一种分布式优先级排队锁的实现方法
KR102454779B1 (ko) * 2016-12-19 2022-10-13 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
US10614039B2 (en) * 2017-04-04 2020-04-07 International Business Machines Corporation Testing of lock managers in computing environments
US11334678B2 (en) * 2017-07-06 2022-05-17 Chromaway Ab Method and system for a distributed computing system
KR102208336B1 (ko) 2017-07-11 2021-01-27 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
SG10202107812YA (en) 2017-11-01 2021-09-29 Swirlds Inc Methods and apparatus for efficiently implementing a fast-copyable database
US11182379B2 (en) * 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN109471735A (zh) * 2018-11-14 2019-03-15 常熟理工学院 分布式集中控制系统的现场数据信息安全控制方法及系统
AU2020279389A1 (en) 2019-05-22 2021-10-14 Hedera Hashgraph, Llc Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
CN110765143B (zh) * 2019-10-10 2022-08-02 腾讯科技(深圳)有限公司 数据处理方法、装置、服务器和存储介质
US11409559B2 (en) * 2019-10-24 2022-08-09 EMC IP Holding Company, LLC System and method for weak lock allowing force preemption by high priority thread
US11941611B2 (en) * 2019-12-11 2024-03-26 Intuit Inc. Shareable and nested transactions on hash chains
US11698898B2 (en) * 2020-11-04 2023-07-11 Salesforce, Inc. Lock wait tracing
US11822538B2 (en) 2020-11-05 2023-11-21 Oracle International Corporation Systems and methods of transaction identification generation for transaction-based environment
CN113111099B (zh) * 2021-06-15 2021-08-24 蚂蚁金服(杭州)网络技术有限公司 一种环路检测方法、装置、电子设备与存储介质
CN114546705B (zh) 2022-02-28 2023-02-07 北京百度网讯科技有限公司 操作响应方法、操作响应装置、电子设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199734A1 (en) * 2003-04-03 2004-10-07 Oracle International Corporation Deadlock resolution through lock requeuing
KR100611739B1 (ko) * 2003-12-24 2006-08-11 한국전자통신연구원 다중 프로세서 환경의 저널링 파일 시스템에서 병렬 자원할당 및 반납 방법
KR101296778B1 (ko) * 2012-09-18 2013-08-14 (주)카디날정보기술 NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법
US20130325827A1 (en) * 2012-05-31 2013-12-05 Red Hat Inc. Incremental optimistic locking of data distributed on multiple nodes to avoid transaction deadlock

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0679284B2 (ja) * 1986-04-02 1994-10-05 株式会社日立製作所 分散デ−タベ−スシステムのデツドロツク防止方式
JP2850863B2 (ja) * 1996-06-29 1999-01-27 日本電気株式会社 排他制御装置
CN101183377B (zh) * 2007-12-10 2010-09-08 华中科技大学 一种基于消息中间件的高可用性数据库集群系统
CN101425070B (zh) * 2008-08-11 2011-04-20 深圳市金蝶中间件有限公司 一种死锁定位的方法、死锁定位装置和数据系统
CN101727629A (zh) * 2008-10-10 2010-06-09 北京资和信担保有限公司 自组织分布式金融业务系统
CN101576830B (zh) 2009-06-04 2011-11-30 中兴通讯股份有限公司 数据库事务锁机制的死锁检测方法及装置
JP5352421B2 (ja) * 2009-10-30 2013-11-27 株式会社エヌ・ティ・ティ・データ データアクセス装置、データアクセス方法およびデータアクセスプログラム
CN103136308A (zh) * 2011-11-23 2013-06-05 英业达股份有限公司 应用系统数据库更新的方法和系统
US9208190B2 (en) 2012-05-03 2015-12-08 Red Hat, Inc. Lock reordering for optimistic locking of data on a single node to avoid transaction deadlock
CN102831156B (zh) * 2012-06-29 2014-12-31 浙江大学 一种云计算平台上的分布式事务处理方法
US20140136571A1 (en) * 2012-11-12 2014-05-15 Ecole Polytechnique Federale De Lausanne (Epfl) System and Method for Optimizing Data Storage in a Distributed Data Storage Environment
US9367346B2 (en) 2013-02-20 2016-06-14 Nec Corporation Accelerating distributed transactions on key-value stores through dynamic lock localization
US9652491B2 (en) * 2013-04-15 2017-05-16 International Business Machines Corporation Out-of-order execution of strictly-ordered transactional workloads
CN104252545B (zh) * 2014-10-11 2017-05-31 南京国电南自维美德自动化有限公司 一种实时内存数据库的对象类型属性类型锁的实现方法
CN104317944B (zh) * 2014-10-31 2018-07-06 上海实方软件有限公司 一种基于公式的时间戳动态调整并发控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199734A1 (en) * 2003-04-03 2004-10-07 Oracle International Corporation Deadlock resolution through lock requeuing
KR100611739B1 (ko) * 2003-12-24 2006-08-11 한국전자통신연구원 다중 프로세서 환경의 저널링 파일 시스템에서 병렬 자원할당 및 반납 방법
US20130325827A1 (en) * 2012-05-31 2013-12-05 Red Hat Inc. Incremental optimistic locking of data distributed on multiple nodes to avoid transaction deadlock
KR101296778B1 (ko) * 2012-09-18 2013-08-14 (주)카디날정보기술 NoSQL 데이터베이스를 위한 결과적 트랜잭션 처리 방법

Also Published As

Publication number Publication date
US10140329B2 (en) 2018-11-27
US20160292213A1 (en) 2016-10-06
WO2016160416A1 (en) 2016-10-06
KR102103063B1 (ko) 2020-05-29
JP6724039B2 (ja) 2020-07-15
SG11201707983QA (en) 2017-10-30
AU2016244128B2 (en) 2018-08-30
AU2016244128A1 (en) 2017-10-19
JP2018511886A (ja) 2018-04-26
EP3278239A1 (en) 2018-02-07
CA2981476C (en) 2020-03-24
CA2981476A1 (en) 2016-10-06
HK1257454A1 (zh) 2019-10-18
CN108337911A (zh) 2018-07-27
CN108337911B (zh) 2022-05-24
EP3278239B1 (en) 2019-08-14

Similar Documents

Publication Publication Date Title
KR102103063B1 (ko) 분산 컴퓨팅 시스템에서 데이터베이스 트랜잭션들을 프로세싱하는 방법
CN107977376B (zh) 分布式数据库系统及事务处理方法
Thomson et al. The case for determinism in database systems
EP3320452B1 (en) Method and architecture for providing database access control in a network with a distributed database system
US9501502B2 (en) Locking protocol for partitioned and distributed tables
US9208191B2 (en) Lock-free, scalable read access to shared data structures
WO2016180164A1 (zh) 一种分布式事务回滚方法及装置
US20180173745A1 (en) Systems and methods to achieve sequential consistency in replicated states without compromising performance in geo-distributed, replicated services
WO2016145909A1 (zh) 一种并发控制方法及装置
Padhye et al. Scalable transaction management with snapshot isolation for NoSQL data storage systems
CN111444002A (zh) 一种任务调度方法及装置
CN113168371A (zh) 多主共享存储数据库的写-写冲突检测
Padhye et al. Scalable transaction management with snapshot isolation on cloud data management systems
US11392576B2 (en) Distributed pessimistic lock based on HBase storage and the implementation method thereof
Haroon Challenges of concurrency control in object oriented distributed database systems
Eldeeb et al. Transactions for Distributed Actors in the Cloud
Srivastava et al. Transaction processing in replicated data in the DDBMS
CN117348977A (zh) 一种数据库中事务并发控制的方法、装置、设备及介质
Gahlyan et al. Waiting Algorithm for Concurrency Control in Distributed Databases
Lokegaonkar et al. INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET)
Eyal Fault tolerant transaction architectures
EP1831798A1 (en) Augmented database resource management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant