-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Page File 관리] 로키 미션 제출합니다. #2
base: HaiSeong
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
구현 잘해주셨네요! 특히 테스트 부분이 이상적이에요 :)
간단한 코멘트 남겼으니 확인 부탁드려요!
private final Map<String, PagedFile> openFiles; | ||
|
||
public PagedFileManager(Map<String, PagedFile> openFiles) { | ||
this.openFiles = openFiles; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[질문] open된 파일을 메모리에서 갖고 있는 것이 어떤 이점이 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
우선 RedBase Project
의 기본 인터페이스에서 open 된 파일들을 관리하는것을 보고 같은 설계 방향으로 고려해봤습니다.
open된 파일을 관리하게 되면 더이상 파일의 블럭을 사용하지 않아 파일을 close 되었을때 명시적으로 파일을 close 시켜줄 수 있습니다. 이를 통해 자원의 누수를 막을 수 있다고 생각했습니다. 이 점이 큰 장점이라 생각했습니다.
@@ -1,19 +1,34 @@ | |||
package database.page; | |||
|
|||
public class Page { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Serializable에 대해 학습해보면 좋을것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Serializable로 직렬화 할수도 있지만 단점도 명확히 존재한다 생각하여 byte 단위로 직접 파일에 접근하는 방식을 사용해 보겠습니다!
@@ -3,7 +3,8 @@ | |||
public class Application { | |||
|
|||
public static void main(String[] args) { | |||
DatabaseServer server = new DatabaseServer(3306); | |||
ParameterHandler parameterHandler = new ParameterHandler(args); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏻
|
||
public class ParameterHandler { | ||
|
||
private static final Map<String, String> DEFAULT_OPTIONS = Map.of( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 적용해봐야겠네요 👍🏻
public Page getPage(PageId pageId) { | ||
if (!pageBuffer.containsKey(pageId)) { | ||
return null; | ||
} | ||
return pageBuffer.get(pageId); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optional을 활용해보는 것은 어떠신가요?
} | ||
|
||
public long getPageNum() { | ||
public int getPageNum() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 고민했던 사항인데, 페이지 번호는 평균적으로 int 범위를 넘어갈 정도로 많나요?(궁금)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사실 int 로 해도 충분하다 생각했습니다. mysql의 경우도 int 타입을 사용한다고 알고 있습니다!
private static final String testFileName = "testfile.db"; | ||
private static final String oldFileName = "oldFile.db"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
파일 확장자가 db인 이유가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
딱히 확장자 이름을 모르겠어서 db 라는 확장자를 사용했습니다. innodb 와 동일하게 idb 확장자를 따를까 고민중입니다!
페이지는 어떻게 구성되나요?
페이지 교체 알고리즘은 어떤 것으로 결정하고, 왜 결정했나요?
PageReplacementPolicy
인터페이스로 추상화 하였습니다.스크레치 페이지