Skip to content
s2quake edited this page Apr 27, 2018 · 2 revisions

Domain은?

도메인은 타입과 테이블의 편집을 위한 별도의 공간을 나타냅니다. 클라이언트에서 타입 생성 및 편집, 테이블 생성, 형태편집, 내용편집이 시작되면 서버에서는 별도의 공간이 생성되고 저장소의 working/domain 폴더에 모든 사용자 행위가 기록됩니다. 편집이 끝난후 저장 또는 취소 요청이 생기면 만들어진 공간은 삭제되며 working/domain 폴더에 기록된 내용도 삭제됩니다.

Domain 구조

working/domain의 구조는 다음과 같습니다.

* working
    * domain
        * database1 ID
            * domain1 ID
                * info.dat
                * posted.log
                * completed.log
            * domain2 ID
            * ...
        * database2 ID
        * ...

도메인이 생성되면 도메인이 속한 데이터베이스 아이디의 이름으로 폴더가 생성되고 그 밑에 도메인 아이디의 이름으로 폴더가 생성됩니다. 그리고 3개의 파일이 생성됩니다.

  • info.dat
    • 도메인의 기본 정보 및 편집할 초기 데이터가 바이너리 형태로 저장됩니다.
  • posted.log
    • 사용자가 요청한 모든 행위에 대한 내용이 xml 형태로 저장됩니다.
  • completed.log
    • 사용자가 요청한 행위 가운데 성공적으로 수행된 내용이 xml 형태로 저장됩니다.

Domain 복구

클라이언트에서 사용자가 편집 종료나 취소를 요청하기 전까진 도메인의 기록은 삭제되지 않습니다. 따라서 서버가 비정상적인 종료시에도 working/domain 폴더에는 모든 사용자 행위가 남아있기 때문에 이를 바탕으로 저장되지 않은 내용을 복구할 수 있습니다.

  • 서버는 구동시 working/domain 폴더를 검색해 복구할 도메인 정보를 수집합니다.
  • 각 도메인은 폴더내에 info.dat 를 읽어들여 서버에 도메인 공간을 생성합니다.
  • posted.log 와 completed.log 정보를 읽어들여서 초기 데이터를 가지고 성공한 행위만 순차적으로 다시 실행합니다.
Clone this wiki locally