KR101946135B1 - 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 - Google Patents
비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 Download PDFInfo
- Publication number
- KR101946135B1 KR101946135B1 KR1020170004006A KR20170004006A KR101946135B1 KR 101946135 B1 KR101946135 B1 KR 101946135B1 KR 1020170004006 A KR1020170004006 A KR 1020170004006A KR 20170004006 A KR20170004006 A KR 20170004006A KR 101946135 B1 KR101946135 B1 KR 101946135B1
- Authority
- KR
- South Korea
- Prior art keywords
- record
- transaction
- slotted
- slot header
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
실행 중인 트랜잭션에 따라 프리 스페이스에 제1 레코드를 저장하고, 상기 트랜잭션이 커밋된 경우에 슬롯 헤더를 원자성 있게 업데이트하는 데이터베이스 관리 시스템이 제공된다. 상기 데이터베이스 관리 장치는 트랜잭션(transaction)을 실행하는 프로세서 및 상기 트랜잭션에 따라 제1 슬롯티드 페이지(slotted page)에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 상기 제1 슬롯티드 페이지의 프리 스페이스(free space)에 저장하는 하드웨어 트랜잭션 메모리를 포함할 수 있다. 또한, 상기 프로세서에 의해 상기 트랜잭션의 커밋(commit)이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트할 수 있다.
Description
데이터베이스 관리 시스템 및 방법에 연관되며, 보다 구체적으로는 비휘발성 메모리(non-volatile memory)를 이용하는 데이터베이스 관리 시스템에 연관된다.
비휘발성 메모리는 DRAM(Dynamic Random Access Memory)과 같이 바이트 단위로 데이터를 읽고 쓸 수 있으며(byte-addressability), 읽고 쓰는 속도 또한 DRAM과 같이 빠르면서, 시스템 전원이 꺼지는 경우에도 데이터를 잃어버리지 않는 비휘발성(non-volatility)을 갖는다는 점에서 차세대 메모리로서 큰 주목을 받고 있는 장치이다. 비휘발성 메모리가 메인 메모리로서 사용되는 경우에, 데이터의 복구와 무결성을 필요로 하는 데이터베이스(database)를 비롯한 많은 응용 프로그램들은 상대적으로 처리 속도가 빠른 비휘발성 메모리를 이용하여 기존의 HDD(Hard Disk Drive) 및 플래시 메모리 등을 대체할 수 있어 성능의 개선을 기대할 수 있다.
그러나 응용 프로그램이 실행되는 동안 특정 데이터는 영구적으로 저장될 필요성이 존재하지만 그렇지 않은 데이터가 존재할 수도 있다. 또한, 메인 메모리에 데이터를 쓰는 연산은 쓰기 순서가 보장되지 않는 특징이 존재한다. 오늘날 중앙처리장치(CPU: Central Processing Unit)는 성능 향상을 위해 데이터가 써지는 순서를 다르게 조절하는 경우도 존재한다. 따라서 데이터가 써진 경우라도, 중앙처리장치 내의 캐시에만 써진 데이터가 남고 메인 메모리에는 데이터가 업데이트되지 않는 경우가 존재할 수 있다.
종래에는 이러한 경우를 대비하여 비휘발성 메모리를 메인 메모리로 사용하는 경우에 쓰기 연산의 재배열을 막기 위해 mfence, sfence와 같은 메모리 베리어(memory barrier) 연산이 추가적으로 수행될 필요성이 존재하고, 중앙처리 장치의 캐시로부터 비휘발성 메인 메모리로 데이터를 내려주는 캐시라인 플러시(clflush) 같은 연산이 추가적으로 수행될 필요성이 존재한다. 이러한 연산들은 HDD 또는 플래시 메모리에 데이터를 쓰는 fsync() 연산에 비교하여서는 빠르지만 그 오버헤드가 무시할 정도는 아니기 때문에 많이 사용되는 경우에 전체 시스템 성능을 저하시킬 가능성이 존재한다.
일측에 따르면, 실행 중인 트랜잭션에 따라 프리 스페이스에 제1 레코드를 저장하고, 상기 트랜잭션이 커밋된 경우에 슬롯 헤더를 원자성 있게 업데이트하는 데이터베이스 관리 시스템이 제공된다. 상기 데이터베이스 관리 장치는 트랜잭션(transaction)을 실행하는 프로세서 및 상기 트랜잭션에 따라 제1 슬롯티드 페이지(slotted page)에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 상기 제1 슬롯티드 페이지의 프리 스페이스(free space)에 저장하는 하드웨어 트랜잭션 메모리를 포함할 수 있다. 또한, 상기 프로세서에 의해 상기 트랜잭션의 커밋(commit)이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트할 수 있다.
일실시예에 따르면, 상기 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 상기 제1 레코드를 포함하는 레코드 오프셋 어레이 중 적어도 하나를 상기 제1 레코드에 관한 정보로서 업데이트할 수 있다.
다른 일실시예에 따르면, 상기 하드웨어 트랜잭션 메모리는 RTM(Restricted Transactional Memory)로 구현되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되는 것을 특징으로 할 수 있다.
또 다른 일실시예에 따르면, 상기 프로세서는 상기 제1 레코드의 쓰기에 관한 공간이 부족하다고 판단된 경우, 단편화(fragmentation)된 프리 스페이스를 하나의 연속된 공간으로 만들고, 상기 하드웨어 트랜잭션 메모리는 단편화 제거된(defragmentation) 프리 스페이스에 상기 제1 레코드를 쓰기 시 복사(copy on write) 기법에 따라 저장할 수 있다.
또 다른 일실시예에 따르면, 상기 하드웨어 트랜잭션 메모리는 상기 트랜잭션에 따라 상기 제1 슬롯티드 페이지에 관한 삭제가 실행되는 경우, 상기 삭제에 연관되는 제2 레코드의 오프셋을 슬롯 헤더에서 삭제하여 로그에 저장하고, 상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제2 레코드에 관한 정보를 상기 슬롯 헤더에 업데이트할 수 있다.
또 다른 일실시예에 따르면, 상기 하드웨어 트랜잭션 메모리는 상기 제2 레코드에 연관되는 프리 스페이스를 연결된 리스트(linked list)로서 연결하고, 상기 제2 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 레코드 오프셋 어레이 중 적어도 하나를 상기 제2 레코드에 관한 정보로서 업데이트할 수 있다.
또 다른 일실시예에 따르면, 상기 하드웨어 트랜잭션 메모리는 상기 트랜잭션에 따라 상기 제1 슬롯티드 페이지에 관한 업데이트가 실행되는 경우, 상기 업데이트에 연관되는 제3 레코드를 추가하고, 상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제3 레코드에 관한 정보를 상기 슬롯 헤더에 업데이트할 수 있다.
다른 일측에 따르면, 실행되는 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 버퍼 캐시 내의 상기 제1 슬롯티드 페이지의 프리 스페이스에 저장하는 단계, 상기 트랜잭션에 대해 커밋(commit)을 판단하는 단계 및 상기 트랜잭션의 커밋이 판단된 경우에, 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트 하는 단계를 포함하는 버퍼 캐싱 방법이 제공된다.
일실시예에 따르면, 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트 하는 단계는, 상기 제1 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 상기 제1 레코드를 포함하는 레코드 오프셋 어레이 중 적어도 하나를 상기 제1 레코드에 관한 정보로서 업데이트 하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 트랜잭션을 실행하는 프로세서 및 상기 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 복수의 레코드들을 각각의 슬롯티드 페이지에 저장하는 버퍼 캐시(buffer cache)를 포함하고, 상기 복수의 레코드들의 관한 정보를 포함하는 오프셋들을 저장하는 먼저 쓰기 로그(write ahead log) 영역을 포함하는 비휘발성 메모리를 포함하는 데이터베이스 관리 시스템이 제공된다.
일실시예에 따르면, 상기 비휘발성 메모리는 상기 저장된 복수의 레코드들에 따라 상기 각각의 슬롯티드 페이지에 대응하는 각각의 슬롯 헤더를 상기 먼저 쓰기 로그 영역에 저장하고, 상기 각각의 슬롯 헤더는 상기 각각의 슬롯티드 페이지에 관한 오프셋을 포함할 수 있다.
다른 일실시예에 따르면, 상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 비휘발성 메모리는 상기 먼저 쓰기 로그 영역에 저장된 상기 각각의 슬롯 헤더들을 대응하는 상기 각각의 슬롯티드 페이지에 업데이트할 수 있다.
또 다른 일측에 따르면, 실행되는 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 복수의 레코드들을 버퍼 캐시에 저장된 각각의 슬롯티드 페이지에 업데이트하는 단계 및 상기 복수의 레코드들에 관한 정보를 포함하는 오프셋들을 슬롯 헤더로서 미리 지정된 먼저 쓰기 로그 영역에 저장하는 단계를 포함하는 로깅 방법이 제공될 수 있다.
일실시예에 따르면, 상기 오프셋들을 슬롯 헤더로서 미리 지정된 먼저 쓰기 로그 영역에 저장하는 단계는, 상기 저장된 복수의 레코드들에 따라 상기 각각의 슬롯티드 페이지에 대응하는 각각의 슬롯 헤더를 상기 먼저 쓰기 로그 영역에 저장하는 단계를 포함하고, 상기 각각의 슬롯 헤더는 상기 각각의 슬롯티드 페이지에 관한 오프셋을 포함할 수 있다.
도 1은 일실시예에 따른 데이터베이스 관리 시스템이 이용하는 슬롯티드 페이지의 구조를 나타내는 예시도이다.
도 2는 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 3a 및 도 3b는 도 2에서 설명된 버퍼 캐싱 방법에 따라 슬롯티드 페이지에 대해 쓰기 연산이 수행되는 과정을 설명하는 예시도이다.
도 4는 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 5는 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 6a는 다른 일실시예에 따른 데이터베이스 관리 시스템을 도시하는 블록도이다.
도 6b는 도 6a에서 설명된 데이터베이스 관리 시스템이 수행하는 로깅 방법을 도시하는 예시도이다.
도 7은 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 로깅 방법의 예시도이다.
도 8은 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 단편화 제거(defragmentation)의 예시도이다.
도 2는 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 3a 및 도 3b는 도 2에서 설명된 버퍼 캐싱 방법에 따라 슬롯티드 페이지에 대해 쓰기 연산이 수행되는 과정을 설명하는 예시도이다.
도 4는 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 5는 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다.
도 6a는 다른 일실시예에 따른 데이터베이스 관리 시스템을 도시하는 블록도이다.
도 6b는 도 6a에서 설명된 데이터베이스 관리 시스템이 수행하는 로깅 방법을 도시하는 예시도이다.
도 7은 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 로깅 방법의 예시도이다.
도 8은 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 단편화 제거(defragmentation)의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일실시예에 따른 데이터베이스 관리 시스템이 이용하는 슬롯티드 페이지의 구조를 나타내는 예시도이다. 도 1을 참조하면, 데이터베이스 관리 시스템이 버퍼 캐싱 또는 로깅(logging)을 수행하는데 이용하는 슬롯티드 페이지(slotted page)의 구조가 도시된다. 슬롯티드 페이지는 슬롯 헤더(slot header)(110), 프리 스페이스(free space)(120) 및 레코드 콘텐츠 영역(record content area)(130)을 포함할 수 있다. 슬롯 헤더(110)는 상기 슬롯티드 페이지에 연관되는 메타 데이터 및 저장된 레코드에 관한 정보를 포함할 수 있다. 또한, 레코드 콘텐츠 영역(130)은 각각의 레코드와 상기 각각의 레코드에 관한 키를 포함할 수 있다. 또한, 프리 스페이스(120)는 슬롯 헤더(110) 및 레코드 콘텐츠 영역(130) 사이에 배치된 빈 공간을 나타낼 수 있다. 예시적으로, 새로운 레코드가 페이지에 삽입(inserting)되는 경우, 데이터베이스 관리 시스템은 키 값의 크기와 관계없이 슬롯티드 페이지의 끝에서부터 순차적으로 레코드를 쓸(writing) 수 있다. 또한, 각각의 레코드들의 키에 따른 순서는 레코드 오프셋 어레이(116)로서 슬롯 헤더(110)에 저장될 수 있다. 보다 구체적으로, 레코드 오프셋 어레이(116)는 키 값의 크기에 따라 정렬된 상태로 유지될 수 있다. 본 실시예에서는 하나의 슬롯티드 페이지의 크기가 1k 바이트(byte)인 실시예가 도시되나, 이는 다른 실시예들의 범위를 제한하거나 한정하는 것으로 해석되어서는 안될 것이다.
슬롯티드 페이지는 슬롯 헤더(110) 내에 현재 페이지가 내부 노드(internal node)인지 리프 노드(leaf node)인지를 표시하는 플래그(110)를 1 바이트로서 포함할 수 있다. 또한, 슬롯티드 페이지는 슬롯 헤더(110) 내에 현재 사용되지 않고 있는 페이지 영역을 나타내는 프리 스페이스(120)의 시작 오프셋(112)을 저장할 수 있다. 도 1에서 설명되는 슬롯티드 페이지 내에서는 14 바이트부터 프리 스페이스(120)가 시작하기 때문에, 시작 오프셋(112)에 14가 저장될 수 있다. 또한, 슬롯티드 페이지는 시작 오프셋(112)에 이어지는 다음 2 바이트에서 현재 슬롯티드 페이지에 저장된 레코드의 개수(113)를 저장할 수 있다. 본 실시예에서는 3 개의 레코드가 저장되므로 3이 저장될 수 있다. 또한, 슬롯티드 페이지는 레코드의 개수(113)에 이어지는 다음 2 바이트에서 프리 스페이스(120)의 종료 오프셋(114)을 저장할 수 있다. 본 실시예에서는 프리 스페이스(120)의 마지막 영역이 972이므로, 종료 오프셋(114)에는 972이 저장되어 있다. 슬롯 헤더(110)의 마지막 1 바이트에는 프리 스페이스(120)가 분리되어 있는 경우에 프리 스페이스(120)를 연결하기 위한 단편화(fragmentation) 정보가 저장될 수 있다.
도 1에서 설명되는 실시예에서, 슬롯티드 페이지 내에는 세 개의 레코드(132, 134, 136)가 저장되어 있다. 각각의 레코드(132, 134, 136)들의 키 값은 20, 10, 30이고, 각각의 레코드(132, 134, 136)가 차지하는 바이트 수는 18, 14, 14 바이트이다. 이러한 레코드들은 슬롯티드 페이지의 레코드 콘텐츠 영역(130)에 저장될 수 있다. 도 1에서 도시된 것과 같이, 레코드 콘텐츠 영역(130)내에서 데이터들은 키 값에 따라 정렬되어 있지 않을 것이다. 이를 테면, 10보다 큰 20을 키 값으로 갖는 레코드(132)가 맨 앞에 위치할 수 있다.
따라서 데이터베이스 관리 시스템은 키 값에 따라 레코드들을 정렬할 필요성이 존재하는데, 슬롯티드 페이지 내에서는 각각의 레코드의 시작 바이트를 슬롯 헤더(110)의 레코드 오프셋 어레이(116)에 키 값에 따라 정렬하여 저장할 수 있다. 보다 구체적으로, 10이 가장 작은 키 값이므로 10을 키로 갖는 레코드의 시작 오프셋 992이 레코드 오프셋 어레이(116)의 첫 번째 엘리먼트(element)로 저장될 수 있다. 마찬가지로, 20을 키로 갖는 레코드의 시작 오프셋 972를 레코드 오프셋 어레이(116)의 두 번째 엘리먼트로 저장하고, 30을 키로 갖는 레코드의 시작 오프셋 1008을 세 번째 엘리먼트로 저장할 수 있다. 본 실시예에 따른 슬롯티드 페이지는 레코드 전체를 정렬하지 않고 2 바이트로서 작은 크기를 갖는 오프셋만을 별도의 레코드 오프셋 어레이(116)에 정렬하고 관리하여 레코드 전체의 순서를 바꾸는 경우에 복사해야 하는 데이터의 크기를 줄여 시스템 전체의 성능을 높이는 효과를 기대할 수 있다.
도 2는 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다. 도 2를 참조하면, 버퍼 캐싱 방법은 실행되는 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 버퍼 캐시 내의 상기 제1 슬롯티드 페이지의 프리 스페이스에 저장하는 단계(210), 상기 트랜잭션에 대해 커밋(commit)을 판단하는 단계(220) 및 상기 트랜잭션의 커밋이 판단된 경우에, 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트하는 단계(230)를 포함할 수 있다. 본 실시예에서 설명되는 데이터베이스 관리 시스템은 트랜잭션을 실행하는 프로세서 및 상기 트랜잭션에 연관되는 데이터를 저장하고 업데이트하는 하드웨어 트랜잭션 메모리(hardware transactional memory)를 통해 구현될 수 있다.
단계(210)에서 데이터베이스 관리 시스템의 프로세서는 미리 지정된 트랜잭션을 실행할 수 있다. 이하의 설명에서 트랜잭션은 하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산의 집합을 나타내고, 데이터베이스 내의 논리적인 작업의 단위로서 데이터의 복구, 저장, 업데이트 및 삭제 등을 나타낼 수 있다. 또한, 단계(210)에서 실행 중인 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 데이터베이스 관리 시스템은 상기 쓰기에 연관되는 제1 레코드를 상기 제1 슬롯티드 페이지의 프리 스페이스에 저장할 수 있다. 보다 구체적으로, 데이터베이스 관리 시스템의 하드웨어 트랜잭션 메모리는 상기 트랜잭션에 따라 쓰기가 실행되는 경우에, 슬롯 헤더를 참조하여 프리 스페이스를 찾아낼 수 있다. 또한, 하드웨어 트랜잭션 메모리는 상기 제1 레코드를 상기 제1 슬롯티드 페이지의 프리 스페이스의 마지막 바이트에서부터 순차적으로 저장할 수 있다. 본 실시예의 데이터베이스 관리 시스템을 통해 저장된 레코드는 슬롯 헤더가 업데이트될 때까지는 다른 트랜잭션에 의해 보이지 않는다. 데이터베이스에서 실행되는 프로세스들은 레코드를 읽기 전 슬롯 헤더를 통해 유효한 레코드를 찾기 때문에, 프리 스페이스에 새롭게 기록된 제1 레코드는 기존의 데이터에 오류를 불러일으키지(corrupting) 않는 효과를 제공할 수 있다.
다른 일실시예로서, 단계(210)에서 제1 레코드를 저장하기 위해 프리 스페이스에 존재하는 공간이 충분하지 않은 경우가 존재할 수 있다. 이 경우에, 데이터베이스 관리 시스템의 프로세서는 제1 레코드의 쓰기에 공간이 부족하다고 판단된 경우, 단편화(fragmentation)된 프리 스페이스를 하나의 연속된 공간으로 만들 수 있다. 또한, 하드웨어 트랜잭션 메모리는 단편화 제거된(defragmentation) 프리 스페이스에 상기 제1 레코드를 쓰기 시 복사(copy on write) 기법에 따라 저장할 수 있다.
단계(220)에서 상기 프로세서는 실행 중이었던 트랜잭션에 대해 커밋을 판단할 수 있다. 커밋은 트랜잭션에 포함되는 연산이 모두 실행되고, 그에 따른 데이터베이스의 갱신 내용이 작업 영역에 기록되어 트랜잭션의 적용이 완료되었다고 판단된 시점을 나타낼 수 있다. 커밋이 실행된 경우, 갱신 데이터는 데이터베이스에 기록되고, 관련된 잠금이 해제되어 갱신된 내용이 다른 트랜잭션으로부터 접근될 수 있다.
단계(220)에서 상기 트랜잭션의 커밋이 판단된 경우에, 단계(230)에서 데이터베이스 관리 시스템의 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트할 수 있다. 보다 구체적으로, 하드웨어 트랜잭션 메모리는 제1 레코드가 새롭게 저장됨에 따라 업데이트된 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 상기 제1 레코드를 포함하는 레코드 오프셋 어레이 중 적어도 하나를 상기 제1 레코드에 관한 정보로서 슬롯 헤더에 업데이트할 수 있다.
본 실시예의 데이터베이스 관리 시스템은 RTM(Restricted Transactional Memory)를 이용하여 하드웨어 트랜잭션 메모리가 구현될 수 있다. 그에 따라, 하드웨어 트랜잭션 메모리는 레코드 오프셋 어레이를 포함하는 슬롯헤더를 원자성 있게(atomic) 업데이트할 수 있다. RTM을 이용하는 경우에, 트랜잭션 내에서 발생하는 제1 레코드에 관한 메모리 연산은 상기 트랜잭션 바깥에서는 참조할 수 없을 것이다. 또한, 트랜잭션 내에서 수정된 캐시라인은 플러시 되지 않고 L1 캐시에 남아 있을 수 있고, 캐시라인 단위에 대해 원자성(atomicity)을 보장할 수 있다. 일실시예로서, 본 실시예에 따른 버퍼 캐싱 방법에 있어서 슬롯 헤더의 길이는 하나의 캐시라인 크기인 64 바이트로 고정될 수 있고, RTM을 통해 슬롯 헤더가 원자성 있게 업데이트될 수 있어 커밋 마크와 같은 기능을 할 수 있도록 구현될 수 있다. 따라서, 본 실시예의 버퍼 캐싱 방법에서는 슬롯 헤더가 업데이트되기 전 시스템의 크래시(crash)가 발생하더라도, 슬롯의 헤더에는 새로 추가한 레코드가 보이지 않기 때문에 상기 새로 추가된 레코드가 무시될 수 있어 원자성이 보장되는 효과가 제공될 수 있다.
도 3a 및 도 3b는 도 2에서 설명된 버퍼 캐싱 방법에 따라 슬롯티드 페이지에 대해 쓰기 연산이 수행되는 과정을 설명하는 예시도이다. 도 3a를 참조하면, 데이터베이스 관리 시스템이 관리하는 슬롯티드 페이지가 도시된다. 슬롯티드 페이지는 제1 슬롯 헤더(310), 제1 프리 스페이스(320) 및 제1 레코드 콘텐츠 영역(330)을 포함할 수 있다. 데이터베이스 관리 시스템은 실행 중인 트랜잭션에 따라 상기 슬롯티드 페이지에 대해 쓰기 작업을 실행할 수 있다. 데이터베이스 관리 시스템은 제1 슬롯 헤더(110)를 참조하여, 현재의 제1 프리 스페이스(320)의 마지막 바이트가 972 바이트라는 것을 확인할 수 있다. 예시적으로, 데이터베이스 관리 시스템은 키 값으로 40을 갖는 제4 레코드를 기록하고, 상기 제4 레코드에 대응하는 바이트 길이 44를 프리 스페이스의 926 바이트에 기록할 수 있다. 그에 따라 새롭게 업데이트된 제1 프리 스페이스(320)의 마지막 바이트(321)는 926 바이트일 수 있다. 본 실시예의 데이터베이스 관리 시스템은 트랜잭션이 실행되는 도중에는 제1 슬롯 헤더(310)에 대해서 업데이트를 수행하지 않을 수 있다. 그에 따라, 트랜잭션이 커밋 되기 전 시스템에 오류가 발생하는 경우라도 새롭게 기록된 레코드는 다른 트랜잭션에 영향을 주지 않게 되어 시스템 전체의 안정성이 향상되는 효과를 기대할 수 있다.
도 3b는 실행되는 트랜잭션의 완료가 판단되어, 데이터베이스 관리 시스템이 슬롯티드 페이지의 슬롯 헤더를 업데이트하는 과정을 도시하는 예시도이다. 업데이트된 슬롯티드 페이지는 제2 슬롯 헤더(340), 제2 프리 스페이스(350) 및 제2 레코드 콘텐츠 영역(360)을 포함할 수 있다.
새롭게 업데이트된 슬롯티드 페이지 내에서는 16 바이트에서부터 제2 프리 스페이스(350)가 시작하기 때문에, 데이터베이스 관리 시스템은 시작 오프셋(341)에 16을 저장할 수 있다. 또한, 트랜잭션에 따라 새로운 제4 레코드가 슬롯티드 페이지 내에 추가되었기 때문에, 데이터베이스 관리 시스템은 현재 슬롯티드 페이지에 저장된 레코드의 개수(342)를 4로 저장할 수 있다. 또한, 제2 프리 스페이스(350)의 마지막 영역이 926이므로, 데이터베이스 관리 시스템은 제2 프리 스페이스(350)의 종료 오프셋(343)을 926으로 저장할 수 있다. 또한, 데이터베이스 관리 시스템은 제4 레코드에 상응하는 레코드 오프셋 926을 레코드 오프셋 어레이 내에 마지막 영역(344)에 업데이트할 수 있다. 제4 레코드가 추가되어서, 제2 프리 스페이스(250)는 16 바이트로부터 926 바이트까지의 영역을 나타내도록 업데이트될 수 있다. 또한, 제2 레코드 콘텐츠 영역(360)은 제4 레코드에 관한 데이터를 새롭게 포함하고, 926 바이트로부터 1023 바이트까지의 영역을 나타내도록 업데이트될 수 있다.
도 4는 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다. 도 4를 참조하면, 버퍼 캐싱 방법은 실행되는 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 삭제가 실행되는 경우, 상기 삭제에 연관되는 제2 레코드의 오프셋을 슬롯 헤더에서 삭제하여 로그에 저장하는 단계(410), 상기 트랜잭션에 대해 커밋을 판단하는 단계(420) 및 상기 트랜잭션의 커밋이 판단된 경우에, 상기 제2 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트하는 단계(430)를 포함할 수 있다.
단계(410)에서 데이터베이스 관리 시스템은 상기 제1 슬롯티드 페이지에 포함되는 슬롯 헤더를 참조하여 삭제 요청에 대응하는 제2 레코드의 위치를 확인할 수 있다. 데이터베이스 관리 시스템은 실행 중인 트랜잭션에 따라 상기 제2 레코드를 레코드 콘텐츠 영역에서 삭제할 수 있다. 다만, 본 실시예에서도 데이터베이스 관리 시스템은 트랜잭션 도중에 슬롯 헤더를 업데이트하지 않을 것이다. 보다 구체적으로, 데이터베이스 관리 시스템은 상기 삭제에 연관되는 제2 레코드의 오프셋을 슬롯 헤더에서 삭제하여 로그에 저장할 수 있다.
단계(420)에서 데이터베이스 관리 시스템은 트랜잭션에 대해 커밋을 판단할 수 있다. 트랜잭션 커밋을 판단하는 과정에 관한 자세한 설명은 도 2와 함께 기재된 단계(220)의 설명이 그대로 적용될 수 있어, 중복되는 설명은 생략하기로 한다.
단계(420)에서 상기 트랜잭션의 커밋이 판단된 경우에, 데이터베이스 관리 장치는 제2 레코드에 관한 정보를 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트할 수 있다. 보다 구체적으로, 데이터베이스 관리 장치는 RTM을 이용하여 슬롯 헤더 내의 레코드 오프셋 어레이 내에서 상기 제2 레코드에 관한 오프셋을 원자성 있게 삭제할 수 있다. 삭제된 레코드가 기재되었던 영역은 프리 스페이스와 연결될 필요가 존재할 것이다. 이 경우에, 데이터베이스 관리 장치는 삭제된 제2 레코드에 연관되는 프리 스페이스를 연결된 리스트(linked list)로서 연결할 수 있다. 또한, 데이터베이스 관리 장치는 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 레코드 오프셋 어레이 중 적어도 하나를 상기 제2 레코드에 관한 정보로서 상기 슬롯 헤더에 업데이트할 수 있다.
도 5는 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 버퍼 캐싱 방법의 흐름도이다. 도 5를 참조하면, 버퍼 캐싱 방법은 실행되는 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 업데이트가 실행되는 경우, 상기 업데이트에 연관되는 제3 레코드를 추가하는 단계(510), 상기 트랜잭션에 대해 커밋을 판단하는 단계(520) 및 상기 트랜잭션의 커밋이 판단된 경우에, 상기 제3 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트하는 단계(530)를 포함할 수 있다.
단계(510)에서 데이터베이스 관리 시스템은 상기 제1 슬롯티드 페이지에 포함되는 슬롯 헤더를 참조하여 업데이트 요청에 대응하는 제3 레코드의 위치를 확인할 수 있다. 데이터베이스 관리 시스템은 실행 중인 트랜잭션에 따라 상기 제3 레코드를 업데이트 하는 경우에, 새로운 값을 가지는 새로운 제3 레코드를 프리 스페이스에 추가할 수 있다. 마찬가지로, 본 실시예에서도 데이터베이스 관리 시스템은 트랜잭션 도중에 슬롯 헤더를 업데이트하지 않을 것이다.
단계(520)에서 데이터베이스 관리 시스템은 트랜잭션에 대해 커밋을 판단할 수 있다. 트랜잭션 커밋을 판단하는 과정에 관한 자세한 설명은 도 2와 함께 기재된 단계(220)의 설명이 그대로 적용될 수 있어, 중복되는 설명은 생략하기로 한다.
단계(520)에서 상기 트랜잭션의 커밋이 판단된 경우에, 단계(530)에서 데이터베이스 관리 장치는 업데이트된 제3 레코드에 관한 정보를 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트할 수 있다. 보다 구체적으로, 데이터베이스 관리 시스템의 하드웨어 트랜잭션 메모리는 제3 레코드의 새로운 오프셋을 레코드 오프셋 어레이 내에서 새롭게 덮어쓸 수 있다. 또한, 데이터베이스 관리 시스템은 하드웨어 트랜잭션 메모리를 이용하여 64 바이트 캐시 라인의 크기를 가지는 슬롯 헤더를 원자성 있게 업데이트할 수 있다.
도 6a는 다른 일실시예에 따른 데이터베이스 관리 시스템을 도시하는 블록도이다. 도 6a를 참조하면, 데이터베이스 관리 시스템(600)은 비휘발성 메모리(610) 및 프로세서(620)를 포함할 수 있다. 프로세서(620)는 미리 지정된 트랜잭션을 수행할 수 있다. 프로세서(620)에 의해 실행되는 트랜잭션은 복수의 슬롯티드 페이지에 관한 쓰기 연산을 포함할 수 있다.
비휘발성 메모리(610)는 데이터베이스 관리 시스템 내에서 메인 메모리로서 동작할 수 있다. 비휘발성 메모리(610)는 쓰기에 연관되는 복수의 레코드들을 각각의 슬롯티드 페이지에 저장하는 버퍼 캐시를 포함할 수 있다. 또한, 비휘발성 메모리(610)는 복수의 레코드들의 관한 정보를 포함하는 오프셋들을 저장하는 먼저 쓰기 로그(write ahead log) 영역을 포함할 수 있다.
도 6b는 도 6a에서 설명된 데이터베이스 관리 시스템이 수행하는 로깅 방법을 도시하는 예시도이다. 도 6b를 참조하면, 데이터베이스 관리 시스템은 버퍼 캐시(611) 및 먼저 쓰기 로그 영역(612)을 포함하는 비휘발성 메모리(610) 및 프로세서(620)를 포함할 수 있다. 본 실시예에 따른 데이터베이스 관리 시스템은 실행 되는 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 수정이 발생하는 경우에, 상기 복수의 슬롯티드 페이지에 관한 슬롯 헤더만을 먼저 쓰기 로그 영역(612)에 복사하는 방식의 로깅을 수행할 수 있다. 그에 따라, 데이터베이스 관리 시스템은 업데이트할 페이지 전체를 복사하지 않고, 업데이트된 레코드를 가리키는 오프셋만을 로그 영역에 복사할 수 있어 작은 2 바이트 오프셋 만을 로깅하여 메모리 쓰기 연산을 최소로 하고, 시스템의 부하를 줄이는 효과를 기대할 수 있다. 본 실시예의 비휘발성 메모리(610)는 RTM 뿐만 아니고 다양한 형태의 비휘발성 메모리로 구현될 수 있고, 슬롯 헤더의 길이 또한 64 바이트로 한정되지 않을 것이다.
프로세서(620)는 실행 중인 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 쓰기 연산을 실행할 수 있다. 프로세서(620)는 비휘발성 메모리(610)를 통해 수정하려는 제1 슬롯티드 페이지 및 제2 슬롯티드 페이지의 새로운 데이터들을 직접 쓸 수 있다. 보다 구체적으로, 업데이트된 제1 슬롯티드 페이지 및 업데이트된 제2 슬롯티드 페이지는 비휘발성 메모리(610) 내의 버퍼 영역(611)에 포함될 수 있다. 다만, 프로세서(620)는 상기 제1 슬롯티드 페이지 및 상기 제2 슬롯티드 페이지에 포함되는 각각의 슬롯 헤더들은 업데이트하지 않을 것이다.
또한, 프로세서(620)는 비휘발성 메모리(610) 내의 먼저 쓰기 로그 영역(612)을 이용하여 새로 써진 레코드들의 위치를 가리키는 오프셋들을 먼저 쓸 수 있다. 보다 구체적으로, 프로세서(620)는 먼저 쓰기 로그 영역(612)을 이용하여 업데이트된 제1 슬롯티드 페이지에 대응하는 제1 슬롯 헤더 및 업데이트된 제2 슬롯티드 페이지에 대응하는 제2 슬롯 헤더 각각을 먼저 쓰기 로그 영역(612)에 저장할 수 있다.
프로세서(620)는 실행 중이었던 트랜잭션의 커밋을 판단할 수 있다. 상기 트랜잭션의 커밋이 판단된 경우에, 프로세서(620)는 먼저 쓰기 로그 영역(612)에 기록된 제1 슬롯 헤더 및 제2 슬롯 헤더 각각을 대응하는 슬롯티드 페이지에 복사하여 업데이트된 레코드들이 다른 트랜잭션에 보일 수 있도록 할 수 있다.
본 실시예에 따른 데이터베이스 관리 시스템은 트랜잭션 도중에 슬롯티드 페이지 전체에 관한 쓰기를 수행하지 않고, 레코드들의 오프셋을 포함하는 슬롯 헤더에 대해서만 로깅을 수행할 수 있어 쓰기 연산을 최소화하면서 데이터베이스의 무결성을 보장하는 효과를 기대할 수 있다.
도 2에서 설명된 버퍼 캐싱 방법은 RTM을 지원하는 프로세서에서 사용 가능하며, 또한 트랜잭션에 따라 하나의 슬롯티드 페이지에 관한 쓰기 수행되는 경우에 사용될 것이다. 반면에, 도 6b에서 설명된 로깅 방법은 복수의 슬롯티드 페이지를 업데이트하는 트랜잭션이나 오버플로우가 발생하여 B-tree 페이지가 분할되는 경우에 이용될 수 있다. 본 실시예의 데이터베이스 관리 장치는 트랜잭션을 수행하는 도중에 B-tree에서 오버플로우가 발생하는지 여부를 판단할 수 있다. 또한, 데이터베이스 관리 장치는 상기 오버플로우의 발생 여부에 따라 하나의 슬롯티드 페이지에 대해 버퍼 캐싱을 수행하는 방법 또는 복수의 슬롯티드 페이지에 대한 업데이트를 수행하고, 슬롯 헤더를 로깅하는 방법 중 어느 하나를 선택할 수 있다.
도 7은 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 로깅 방법의 예시도이다. 도 7을 참조하면, B-tree 페이지가 오버플로우 된 경우에, 데이터베이스 관리 시스템이 수행하는 로깅 방법을 도시하는 예시도이다. 단계(710)에서 키 값 14를 갖는 데이터의 삽입 요청에 따라 제3 페이지 내에 오버플로우가 발생한 경우가 존재할 수 있다. 단계(720)에서 데이터베이스 관리 장치는 상기 키 값 14보다 큰 키 값을 갖는 레코드들의 오프셋들을 포함하는 새로운 레코드 오프셋 어레이를 CPU 캐시로서 생성할 수 있다. 본 실시예에서는 키 값 15, 17 및 19를 각각 가지는 레코드들의 오프셋들인 700, 500, 800이 새로운 레코드 오프셋 어레이로서 생성될 수 있다. 또한, 단계(720)에서 데이터베이스 관리 시스템은 상기 생성된 새로운 레코드 오프셋 어레이를 포함하는 복수의 슬롯 헤더들을 별도의 슬롯 헤더 로그에 기록할 수 있다. 이 경우에, 기존 제3 페이지에는 어떠한 변화도 존재하지 않을 것이다.
단계(730)에서 데이터베이스 관리 시스템은 새로운 이웃(sibling) 페이지를 할당하고, 지정된 키 값 14보다 작거나 같은 키를 갖는 레코드들을 새로운 이웃 페이지에 복사할 수 있다. 마찬가지로, 기존 제3 페이지에는 어떠한 변화도 존재하지 않을 것이다.
단계(740)에서 데이터베이스 관리 시스템은 이웃 페이지에 관한 키 값 및 포인트를 새로운 레코드로서 저장할 수 있다. 보다 구체적으로, 상기 이웃 페이지는 오버플로우가 발생한 제3 페이지의 부모 페이지로부터 분할되어 새로 만들어진 페이지를 나타낼 수 있다. 데이터베이스 관리 시스템은 상기 이웃 페이지에 관한 레코드는 프리 스페이스에 기록하고, 상기 레코드의 오프셋을 추가한 새로운 슬롯 헤더를 슬롯 헤더 로그에 기록할 수 있다.
단계(750)에서 트랜잭션이 완료된 경우, 데이터베이스 관리 장치는 슬롯 헤더 로그에 커밋 마크를 기록할 수 있다. 또한, 데이터베이스 관리 장치는 로그에 기록된 트랜잭션들을 슬롯티드 페이지에 반영하기 위한 체크포인팅을 수행할 수 있다. 상기 체크포인팅이 수행되는 동안, 데이터베이스 관리 장치는 각각의 슬롯티드 페이지들의 슬롯 헤더들을 로그 영역에 기록된 슬롯 헤더들로 대체할 수 있다.
도 8은 또 다른 일실시예에 따른 데이터베이스 관리 시스템이 수행하는 단편화 제거(defragmentation)의 예시도이다. 슬롯티드 페이지 구조에서 데이터가 분할(splitting) 또는 삭제 연산으로 인해 슬롯티드 페이지로부터 없어져야 할 경우가 존재할 수 있다. 이 경우에, 데이터베이스 관리 시스템은 삭제할 레코드를 지우기 위해 레코드 오프셋 어레이에서 상기 레코드에 대응하는 오프셋을 삭제할 수 있다. 그러나, 오프셋 만을 삭제한 경우에, 레코드 콘텐츠 영역 내에 삭제된 레코드가 그대로 위치할 수 있다. 따라서, 해당 영역을 다른 레코드를 저장하는데 사용하기 위해 데이터베이스 관리 시스템은 해당 영역들을 프리 리스트(free list)로서 연결하여 프리 스페이스로서 생성할 수 있다.
도 8을 참조하면, 제3 페이지는 오버플로우가 발생하여, 키 값 11 및 키 값 13에 대응하는 레코드들이 새로운 이웃 페이지로 이동한 상태가 도시된다. 따라서, 도 8의 제3 페이지에서 600 이상 700 이하 바이트에 대응하는 영역 및 800 이상 900 이하 바이트에 대응하는 영역은 프리 리스트로 연결될 수 있다.
단계(810)에서 데이터베이스 관리 장치는 제3 페이지에 200 바이트를 초과하여 빈 공간 보다 큰 데이터가 들어 오는 경우, 두 개로 분할된 공간을 모아주는 단편화 제거 작업이 필요할 것이다. 본 실시예의 데이터베이스 관리 장치는, 쓰기 시 복사 방식에 따라 새로운 페이지에 데이터를 빈 공간이 없도록 복사하고, 부모 페이지의 부모 엔트리가 가지고 있는 페이지의 주소를 새로 만든 페이지의 주소로 덮어쓰는 방식으로 원자성 있게 업데이트를 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
Claims (14)
- 트랜잭션(transaction)을 실행하는 프로세서; 및
상기 트랜잭션에 따라 제1 슬롯티드 페이지(slotted page)에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 상기 제1 슬롯티드 페이지의 프리 스페이스(free space)에 저장하는 하드웨어 트랜잭션 메모리
를 포함하고,
상기 프로세서에 의해 상기 트랜잭션의 커밋(commit) - 상기 커밋은 상기 트랜잭션에 포함되는 모든 연산이 실행되고, 데이터베이스의 갱신 내용이 작업 영역에 기록되어 상기 트랜잭션의 적용이 완료된 것으로 판단된 시점임 - 이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트 하고,
상기 하드웨어 트랜잭션 메모리는 RTM(Restricted Transactional Memory)로 구현되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되어 레코드 오프셋 어레이를 포함하는 슬롯 헤더를 원자성(atomic) 있게 업데이트하는 데이터베이스 관리 시스템.
- 제1항에 있어서,
상기 하드웨어 트랜잭션 메모리는 상기 제1 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 상기 제1 레코드를 포함하는 레코드 오프셋 어레이 중 적어도 하나를 상기 제1 레코드에 관한 정보로서 업데이트 하는 데이터베이스 관리 시스템.
- 제1항에 있어서,
상기 하드웨어 트랜잭션 메모리는 RTM(Restricted Transactional Memory)로 구현되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되는 것을 특징으로 하는 데이터베이스 관리 시스템.
- 제1항에 있어서,
상기 프로세서는 상기 제1 레코드의 쓰기에 관한 공간이 부족하다고 판단된 경우, 단편화(fragmentation)된 프리 스페이스를 하나의 연속된 공간으로 만들고, 상기 하드웨어 트랜잭션 메모리는 단편화 제거된(defragmentation) 프리 스페이스에 상기 제1 레코드를 쓰기 시 복사(copy on write) 기법에 따라 저장하는 데이터베이스 관리 시스템.
- 제1항에 있어서,
상기 하드웨어 트랜잭션 메모리는 상기 트랜잭션에 따라 상기 제1 슬롯티드 페이지에 관한 삭제가 실행되는 경우, 상기 삭제에 연관되는 제2 레코드의 오프셋을 슬롯 헤더에서 삭제하여 로그에 저장하고,
상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제2 레코드에 관한 정보를 상기 슬롯 헤더에 업데이트 하는 데이터베이스 관리 시스템.
- 제5항에 있어서,
상기 하드웨어 트랜잭션 메모리는 상기 제2 레코드에 연관되는 프리 스페이스를 연결된 리스트(linked list)로서 연결하고, 상기 제2 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 레코드 오프셋 어레이 중 적어도 하나를 상기 제2 레코드에 관한 정보로서 업데이트하는 데이터베이스 관리 시스템.
- 제1항에 있어서,
상기 하드웨어 트랜잭션 메모리는 상기 트랜잭션에 따라 상기 제1 슬롯티드 페이지에 관한 업데이트가 실행되는 경우, 상기 업데이트에 연관되는 제3 레코드를 추가하고,
상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 하드웨어 트랜잭션 메모리는 상기 제3 레코드에 관한 정보를 상기 슬롯 헤더에 업데이트하는 데이터베이스 관리 시스템.
- 실행되는 트랜잭션에 따라 제1 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 제1 레코드를 버퍼 캐시 내의 상기 제1 슬롯티드 페이지의 프리 스페이스에 저장하는 단계;
상기 트랜잭션에 대해 커밋(commit) - 상기 커밋은 상기 트랜잭션에 포함되는 모든 연산이 실행되고, 데이터베이스의 갱신 내용이 작업 영역에 기록되어 상기 트랜잭션의 적용이 완료된 것으로 판단됨 시점임 - 을 판단하는 단계; 및
상기 트랜잭션의 커밋이 판단된 경우에, 상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트 하는 단계
를 포함하고,
상기 제1 슬롯티드 페이지의 프리 스페이스에 저장하는 단계는,
RTM(Restricted Transactional Memory)에 의해 실행되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되어 레코드 오프셋 어레이를 포함하는 슬롯 헤더를 원자성(atomic) 있게 업데이트하는 버퍼 캐싱 방법.
- 제8항에 있어서,
상기 제1 레코드에 관한 정보를 상기 제1 슬롯티드 페이지의 슬롯 헤더에 업데이트 하는 단계는,
상기 제1 레코드에 따라 업데이트된 상기 프리 스페이스의 시작 오프셋, 상기 제1 슬롯티드 페이지에 저장된 레코드의 개수, 상기 프리 스페이스의 종료 오프셋 및 상기 제1 레코드를 포함하는 레코드 오프셋 어레이 중 적어도 하나를 상기 제1 레코드에 관한 정보로서 업데이트 하는 단계를 포함하는 버퍼 캐싱 방법.
- 트랜잭션을 실행하는 프로세서; 및
상기 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 복수의 레코드들을 각각의 슬롯티드 페이지에 저장하는 버퍼 캐시(buffer cache)를 포함하고, 상기 복수의 레코드들의 관한 정보를 포함하는 오프셋들을 저장하는 먼저 쓰기 로그(write ahead log) 영역을 포함하는 비휘발성 메모리
를 포함하고,
상기 프로세서에 의해 상기 트랜잭션의 커밋 - 상기 커밋은 상기 트랜잭션에 포함되는 모든 연산이 실행되고, 데이터베이스의 갱신 내용이 작업 영역에 기록되어 상기 트랜잭션의 적용이 완료된 것으로 판단된 시점임 -이 판단된 경우에, 상기 비휘발성 메모리는 상기 먼저 쓰기 로그 영역에 저장된 상기 각각의 슬롯 헤더들을 대응하는 상기 각각의 슬롯티드 페이지에 업데이트하고, 상기 비휘발성 메모리는 RTM(Restricted Transactional Memory)로 구현되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되어 레코드 오프셋 어레이를 포함하는 슬롯 헤더를 원자성(atomic) 있게 업데이트하는 데이터베이스 관리 시스템.
- 제10항에 있어서,
상기 비휘발성 메모리는 상기 저장된 복수의 레코드들에 따라 상기 각각의 슬롯티드 페이지에 대응하는 각각의 슬롯 헤더를 상기 먼저 쓰기 로그 영역에 저장하고, 상기 각각의 슬롯 헤더는 상기 각각의 슬롯티드 페이지에 관한 오프셋을 포함하는 데이터베이스 관리 시스템.
- 제11항에 있어서,
상기 프로세서에 의해 상기 트랜잭션의 커밋이 판단된 경우에, 상기 비휘발성 메모리는 상기 먼저 쓰기 로그 영역에 저장된 상기 각각의 슬롯 헤더들을 대응하는 상기 각각의 슬롯티드 페이지에 업데이트하는 데이터베이스 관리 시스템.
- 실행되는 트랜잭션에 따라 복수의 슬롯티드 페이지에 관한 쓰기가 실행되는 경우, 상기 쓰기에 연관되는 복수의 레코드들을 버퍼 캐시에 저장된 각각의 슬롯티드 페이지에 업데이트하는 단계; 및
상기 복수의 레코드들에 관한 정보를 포함하는 오프셋들을 슬롯 헤더로서 미리 지정된 먼저 쓰기 로그 영역에 저장하는 단계
를 포함하고,
상기 트랜잭션의 커밋 - 상기 커밋은 상기 트랜잭션에 포함되는 모든 연산이 실행되고, 데이터베이스의 갱신 내용이 작업 영역에 기록되어 상기 트랜잭션의 적용이 완료된 것으로 판단된 시점임 -이 판단된 경우에, 상기 먼저 쓰기 로그 영역에 저장된 상기 각각의 슬롯 헤더들을 대응하는 상기 각각의 슬롯티드 페이지에 업데이트하는 단계
를 더 포함하고,
상기 각각의 슬롯티드 페이지에 업데이트하는 단계는 RTM(Restricted Transactional Memory)에 의해 실행되고, 상기 슬롯 헤더의 크기가 64 바이트로 고정되어 레코드 오프셋 어레이를 포함하는 슬롯 헤더를 원자성(atomic) 있게 업데이트하는 로깅 방법.
- 제13항에 있어서,
상기 오프셋들을 슬롯 헤더로서 미리 지정된 먼저 쓰기 로그 영역에 저장하는 단계는,
상기 저장된 복수의 레코드들에 따라 상기 각각의 슬롯티드 페이지에 대응하는 각각의 슬롯 헤더를 상기 먼저 쓰기 로그 영역에 저장하는 단계
를 포함하고, 상기 각각의 슬롯 헤더는 상기 각각의 슬롯티드 페이지에 관한 오프셋을 포함하는 로깅 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004006A KR101946135B1 (ko) | 2017-01-11 | 2017-01-11 | 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004006A KR101946135B1 (ko) | 2017-01-11 | 2017-01-11 | 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180082753A KR20180082753A (ko) | 2018-07-19 |
KR101946135B1 true KR101946135B1 (ko) | 2019-02-08 |
Family
ID=63058309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170004006A KR101946135B1 (ko) | 2017-01-11 | 2017-01-11 | 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101946135B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102165860B1 (ko) | 2018-12-31 | 2020-10-14 | 성균관대학교산학협력단 | 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치 |
CN116244041B (zh) * | 2022-12-02 | 2023-10-27 | 湖南亚信安慧科技有限公司 | 一种数据库子事务的性能优化方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104380269B (zh) * | 2012-10-22 | 2018-01-30 | 英特尔公司 | 高性能互连相干协议 |
KR101491626B1 (ko) * | 2013-07-01 | 2015-03-05 | 성균관대학교산학협력단 | 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템 |
US9817693B2 (en) * | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
-
2017
- 2017-01-11 KR KR1020170004006A patent/KR101946135B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20180082753A (ko) | 2018-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
CN111480149B (zh) | 持久存储器设备中的预写式日志记录 | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
JP4939610B2 (ja) | 書き戻しキャッシュ・ユニットを用いてデータを管理するためのシステム、方法、及びコンピュータ・プログラム | |
KR100689762B1 (ko) | 데이터베이스 시스템 및 그 데이터베이스 시스템의데이터베이스 컴포넌트를 메인 메모리에 저장하는 시스템및 방법 | |
CN103744961A (zh) | 用可重构的文件系统目录树提高非易失性存储寿命的方法 | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
US9990150B2 (en) | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory | |
JP2007012056A (ja) | データ保全の先送りされた認証を有するファイルシステム | |
US11449430B2 (en) | Key-value store architecture for key-value devices | |
US20180300083A1 (en) | Write-ahead logging through a plurality of logging buffers using nvm | |
US11537582B2 (en) | Data access method, a data access control device, and a data access system | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
KR20110046118A (ko) | 적응적 로깅 장치 및 방법 | |
KR101946135B1 (ko) | 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법 | |
Wei et al. | Extending SSD lifetime with persistent in-memory metadata management | |
KR101789933B1 (ko) | 데이터 일관성을 위한 컴퓨팅 시스템 및 방법 | |
US20230229346A1 (en) | Crash-safe tiered memory system | |
Seo | Persistent Database Buffer Caching and Logging with Slotted Page Structure | |
KR101375794B1 (ko) | 데이터베이스의 성능을 향상하기 위한 방법 및 장치 | |
Lee et al. | Minimizing consistency-control overhead with rollback-recovery for storage class memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |