2009-02-05 2 views
0

우연히 필자가 작성한 코드는 천천히 자체적으로 점진적으로 인덱싱하고 임의의 속성을 가질 수있는 자유형 "문서"(일명 CouchDB 종류)로 DB 시스템으로 변하고 있습니다 ... annyyywaay ... 주로 교육적인 목적으로 진화를 유지하기로 결정했고 내 요구에 맞게 그것을 단단히 사용자 정의하고 내 자신의 필요 (얼마나 관대 한 :)가 아닌 다른 누구에게도 유용하게 만들려고 노력하지 않으므로 기댈 수 있도록하기로 결정했습니다.Mnesia 트랜잭션

어쨌든 누군가가 Mnesia가 "두포 (Under the Hood)"거래를 구현하는 방법에 대한 자세한 정보가 있는지 궁금합니다.

Ulf W., 항상 인터넷에 게시 해 주셔서 감사합니다. 이에 대한 자세한 정보가 있으십니까?

답변

-1

그래서 나는 모든 것에 대해 조금 더 생각해 왔습니다 ... 트랜잭션 잠금은 테이블의 행을 나타내는 "튜토리얼"요소를 사용하여 해킹 당할 수 있습니다. (또는 트랜잭션 관리자에 의해 생성 된) 현재 트랜잭션을 실행하는 잠금을 보유하고있는 프로세스의 Pid를 포함합니다 (또는 Pid는 효율성상의 이유로 다른 곳에 저장됩니다. 요점은 행당 PID가 있음). 다른 트랜잭션이 잠긴 행에서 쓰기/읽기를 원할 경우 트랜잭션 관리자는이를 실행하지 않고 나중에 시도하기 위해 큐에 남겨 둡니다 (다음에 꼬리가 재귀 함). 체크 포인트가 어떻게 작동하는지에 대해 더 많이 생각해야 할 것입니다. 그러나 전반적인 Im은 사물이 어떻게 구조화되는지를 이해하기 시작합니다. 적어도 개념적으로 ... 추한 것 같습니다.)) 그리고 아마도 Mnesia가 끌어 당기는 것보다 훨씬 느린 명령을 내릴 것입니다. 하지만 최소한 나는 충분히 배우게 될 것입니다 ...

분산 트랜잭션에 대해 ... 저는 바이너리로 변환 한 후 다른 노드로 트랜잭션 재밌는 것을 다른 노드로 보내고 다른 끝 ... 이제, 그것에 관한 질문. 재미는 클로저이기 때문에 재미있는 바깥에서 재미있는 변수를 사용하고 10 요소의 목록을 말한 다음 다른 노드에서 실행될 트랜잭션으로 전달됩니다 (트랜잭션 관리자가 투명하게) - 10 개의 요소가있는 목록과 클로저가 "닫히는"어휘 환경의 일부가 전송된다는 클로저 의미에 대해 가정합니다. 여기에 뭔가 빠졌습니까? 단지 Mnesia는 오픈 소스이기 때문에, 당신은 코드 자체를 살펴 가질 수

감사

-1

... 어떻게 분산 구현 된 것입니다 거래에 대해 생각. CouchDB와 유사합니다.

1

Mnesia는 분산 트랜잭션을 관리하기 위해 2 단계 커밋 프로토콜을 사용합니다.