트랜잭션 / 읽기-쓰기 잠금 해결에 어떤 알고리즘 / 읽기 문제를 권장하십니까?


10

단순화 된 클래식 데이터베이스 트랜잭션은 다음과 같이 볼 수 있습니다.

  • M 항목 읽기
  • 해당 읽기를 기반으로 일부 계산 수행
  • 이러한 계산에 기초하여 일부 N 개의 결과를 작성하는 데, 여기에는 원래 읽은 요소가 포함될 수 있습니다.

이러한 트랜잭션을 동시에 수행 할 때는 ACID 속성을 유지해야합니다.

다른 비 DBMS 동시 시스템에는 정확히 동일한 요구 사항 (M을 기반으로하는 N 업데이트)이 존재합니다.

이러한 트랜잭션을 수행 / 해결하기위한 알고리즘과 이러한 알고리즘의 상대적인 강점과 약점을 찾는 데 관심이 있습니다. 독서를 권해 주시겠습니까? 이것은 서적 또는 온라인 참조 / 자습서 일 수 있습니다.

설명:

예를 들어, 순진 알고리즘은 단일 스레딩을 강제하고 동시성을 제거하는 효과로 단일 글로벌 잠금을 취하는 각 트랜잭션 일 수 있습니다. 약간 더 복잡한 알고리즘은 교착 상태를 피하기위한 순서로 개별 항목 읽기 / 쓰기 잠금입니다. 기타 등등.이 문제를 해결하기위한 다양한 알고리즘을 문서화 한 좋은 소스가 있습니까? 그것의 강점과 약점을 가진 단일 알고리즘만을 지적한 대답조차도 유용 할 것입니다.


3
이 질문은 확실히이 사이트의 범위 내에 있습니다. 나는 당신이 일하고있는 상황에 대해 조금 더 쓰는 것이 좋습니다. 현재는 다소 일반적이며 개방적입니다.
Dave Clarke

그것이 가치있는 것이라고 생각합니까? 그래서 그것은 데이터베이스 문제입니다. "읽고 쓸 수있는 데이터베이스가 있고 ACID 속성으로 트랜잭션을 읽고 쓸 수 있기를 원합니다. 이러한 속성을 보장하기 위해 어떤 알고리즘이 존재합니까?"
Nick Fortescue

질문을 표현하면 해결하려는 문제에 대한 자세한 정보를 제공하는 등 원하는 결과에 더 가까운 답변을 얻을 수 있습니다. 현재는 힌트 만 제공합니다. 어쨌든 고전적인 데이터베이스 트랜잭션 알고리즘을 요구하는 것처럼 들립니다.
Dave Clarke

@ 데이브-감사합니다. 편집했습니다. 보다 나은?
Nick Fortescue

1
Ramakrishnan 및 Gehrke의 DBMS 교과서에 이미 익숙하십니까? 또한 DBMS 내부에 대해 질문하지 않는 경우 DBMS와 관심있는 항목의 차이점을 알려주기 위해 질문을 명확히 할 수 있습니까?
Maverick Woo

답변:


10

Weikum과 Vossen의 Transactional Information Systems (책임 정보 시스템) 책은 거래 뿐만 아니라 다른 관점에서 이론적 인 측면과 실제적인 측면에서 상당히 많은 영역을 다루고 있습니다. 길이는 약 1000 페이지이므로 주말 1-2 주 동안 바쁘게 지낼 것입니다. 반면에, 그것은 거의 10 년이되었으므로, 더 최신의 것이있을 수 있습니다. 그 밖의 다른 책으로는 Bernstein, P., Hadzilacos, V. 및 Goodman, N, Addison-Wesley, 1987, 트랜잭션 처리 : Jim Gray와 Andreas Reuter의 개념 및 기법 , 그리고 원칙에 의한 데이터베이스 시스템의 동시성 제어 및 복구 등이 있습니다. 거래 처리필자는 A. Bernstein과 Eric Newcomer (2009)를 보았습니다. 나는 후자를 보지 못했지만 가장 최근의 해결책은 오래된 텍스트에서 찾을 수 있지만 시작하기에 좋은 장소가 될 수 있습니다. 도서관 여행은 가치가 있습니다.

이 영역에서 기념비적 인 텍스트는 Nancy Lynch 등의 Atomic Transactions 입니다. 공식적인 설명과 관심있는 여러 종류의 알고리즘에 대한 증거를 제시합니다. 다소 형식적이고 지루하므로 취향에 맞지 않을 수 있습니다.

최근 많은 작업이 Software Transactional Memory에 집중되어 있으며, 이는 트랜잭션 아이디어를 멀티 스레드 응용 프로그램에 적용하고 있습니다. 매년이 주제에 관한 수십 권의 출판물이 있습니다. wikipedia 페이지는 많은 참고 자료를 제공합니다.


1
감사 데이브, 특히 문구 "소프트웨어 트랜잭션 메모리"를,이 이름을 건너하지 않았다
닉 Fortescue의에게

1
STM은 요즘 프로그래밍 언어 연구에서 매우 뜨거운 주제입니다. STM 또는 Actor 기반 프로그래밍 모델이 미래의 동시 (= 모두) 프로그래밍 언어의 기초가 될지 여부에 대한 경쟁이 있습니다.
Dave Clarke

1
STM 외에도 이러한 참조 내에서 찾아 볼 특정 키워드는 MVCC입니다. 대부분의 최신 DBMS에서 사용됩니다 : en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo

@supercooldave 나는 그것이 인종이라는 것을 확신하지 못한다 : 나는 미래의 언어가 어느 정도 어느 정도를 지원해야한다고 생각한다.
Marc Hamann

@Marc Harmann : 은유 적으로 말하기.
Dave Clarke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.