Page

class pf.page.PfPageId[소스]

기반 클래스: int

page의 ID를 나타내는 클래스입니다.

class pf.page.PfPageHeader(page: PfPage, offset: int, limit: int)[소스]

기반 클래스: PfLayoutView

page의 header를 나타내는 클래스입니다.

page data의 첫 4바이트를 사용하는 layout view입니다. layout view의 property를 사용 할 때는 항상 해당 page가 pin 되어있어야 합니다.

변수:

next_free_pid (PfPageId) – 다음 free page의 ID.

NO_NEXT_FREE_PAGE = -1

다음 free page가 없다는 뜻을 나타내는 상수.

NOT_IN_FREE_PAGE_LIST = -2

page가 free page list에 없다는 뜻을 나타내는 상수.

property next_free_pid: PfPageId
SIZE: int = 4

layout view의 크기.

class pf.page.PfPageData[소스]

기반 클래스: bytearray

page의 data를 나타내는 클래스입니다.

class pf.page.PfPage(file: PfFile, pid: PfPageId, size: int, data: PfPageData, buffer_manager: PfBufferManager)[소스]

기반 클래스: object

page를 나타내는 클래스입니다.

변수:
  • file (PfFile) – page가 속한 file.

  • pid (PfPageId) – page의 ID.

  • size (int) – page의 크기.

  • data (PfPageData) – page의 data.

  • _buffer_manager (PfBufferManager) – page가 속한 file을 관리하는 buffer manager.

  • _dirty (bool) – page의 dirty 상태 여부.

  • _pin_count (int) – page가 pin 되어있는 횟수.

  • header (PfPageHeader) – page의 header.

__init__(file: PfFile, pid: PfPageId, size: int, data: PfPageData, buffer_manager: PfBufferManager) None[소스]

page를 초기화합니다.

매개변수:
  • file (PfFile) – page가 속한 file.

  • pid (PfPageId) – page의 ID.

  • size (int) – page의 크기.

  • data (PfPageData) – page의 data.

  • buffer_manager (PfBufferManager) – page가 속한 file을 관리하는 buffer manager.

pinned()[소스]

page를 pin 상태로 사용할 수 있는 context를 생성합니다.

page가 pin 될 때, 그리고 마지막으로 unpin 될 때, buffer manager 의 touch_page 메서드를 호출합니다.

예제

>>> with page.pinned():
...     ...
get_content(offset: int, size: int) PfPageData[소스]

page의 content의 일부를 가져옵니다.

page content는 page data 중 page header 이후의 부분을 의미합니다.

매개변수:
  • offset (int) – content 중 가져올 부분의 오프셋.

  • size (int) – content 중 가져올 부분의 크기.

반환:

page의 content.

반환 형식:

PfPageData

예외 발생:

PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.

set_content(offset: int, data: PfPageData) None[소스]

page의 content의 일부를 갱신하고, page를 dirty 상태로 만듭니다.

page content는 page data 중 page header 이후의 부분을 의미합니다.

매개변수:
  • offset (int) – content 중 갱신할 부분의 오프셋.

  • data (PfPageData) – 갱신할 데이터의 내용.

예외 발생:

PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.

clear_content() None[소스]

page의 content를 0으로 초기화하고, page를 dirty 상태로 만듭니다.

page content는 page data 중 page header 이후의 부분을 의미합니다.

예외 발생:

PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.

persist() bool[소스]

page를 file에 즉시 write합니다.

buffer manager의 persist_page 메서드를 사용합니다.

반환:

write가 발생했는지 여부.

반환 형식:

bool

mark_dirty() None[소스]

page를 dirty 상태로 만들고, page를 가장 최근에 접근한 것으로 표시합니다.

buffer manager 의 touch_page 메서드를 사용합니다.

clear_dirty() None[소스]

page의 dirty 상태를 해제합니다.

is_dirty() bool[소스]

page의 dirty 상태를 반환합니다.

is_pinned() bool[소스]

page가 pin 되어있는지 여부를 반환합니다.

is_free() bool[소스]

page가 free page인지 여부를 반환합니다.

예외 발생:

PfUnpinnedPageManipulationError – page가 pin 되어있지 않은 경우.