안녕하세요.
오라클의 경우 리두로그버퍼캐시에 변경된 사항이 적용되고
특정 이벤트가 발생할때(커밋, 체크포인트, 버퍼가 1/3을 넘거나, DBWR이 쓰기작업을 하기전)
LGWR이 리두로그 파일에 데이터를 쓰는 것으로 알고있습니다.
그리하여 비정상적인 종료나 복구시 이 리두로그 파일을 이용하여 데이터를 복구하는것으로 알고있는데,
리두로그버퍼캐시에 존재하는 자료들이 리두로그파일에 쓰여지기전에
시스템이 내려가거나 비정상적인 종료를 맞이한다면, 그사이 쌓인 자료들은 복구가 불가능한것인지 궁금합니다.
이러한 궁금증은, 몽고DB를 알아보던중 몽고DB가 메모리 기반이고
메모리에서 특정시점에 파일에 데이터를 쓰는데, 파일에 쓰기전에 비정상적인 종료를 맞이하면
작업 데이터가 날아가는것으로 알고있습니다. 이 점때문에 몽고DB사용하기가 불안하다고들 하는데
이러한점이 오라클과 다른것인지. 아니면 동일한것인지 또는 다른 개념인지 궁금하여 질문을 남기게 되었습니다.
요약하자면
1. 오라클 또한 리두로그파일에 쓰기전 날아간 리두로그버퍼의 데이터는 복구가 불가능한지
2. 이 점이 몽고DB의 데이터가 날아가는것과 차이가있는지. 개념이 다른것인지
에 대해 질문을 드립니다.
감사합니다.
직접적인 질문에 답은 아닌것 같은데요. 참고하시기 바랍니다.
언급하신 것 처럼 기본적으로 Oracle은 commit 이 완료된 data는 redo log file에 저장이 되기 때문에 작업이 완료된(Commit된) 자료가 날아갈 일을 없는거죠.
몽고DB는 아래 내용을 한번 참조해 보시기 바랍니다.
http://docs.mongodb.org/manual/core/write-concern/