KR101404129B1 - 데이터 저장 시스템 및 데이터 관리 방법 - Google Patents
데이터 저장 시스템 및 데이터 관리 방법 Download PDFInfo
- Publication number
- KR101404129B1 KR101404129B1 KR1020120068369A KR20120068369A KR101404129B1 KR 101404129 B1 KR101404129 B1 KR 101404129B1 KR 1020120068369 A KR1020120068369 A KR 1020120068369A KR 20120068369 A KR20120068369 A KR 20120068369A KR 101404129 B1 KR101404129 B1 KR 101404129B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- flash memory
- stored
- disk
- memory
- Prior art date
Links
Images
Classifications
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2221—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 데이터를 저장하는 디스크; 상기 디스크에서 로드한 데이터를 저장하고 있던 상위 메모리에서 방출하는 데이터를 방출 순서에 따라 순차적으로 저장하는 플래시 메모리;를 포함하되, 상기 플래시 메모리에 저장되어 있는 데이터는 상기 상위 메모리에서 추후 재참조되며, 상기 상위 메모리에서 방출되는 제 1 방출 데이터는 상기 플래시 메모리에 기록되고, 상기 플래시 메모리에서 방출되는 제 2 방출 데이터는 상기 디스크에 기록되되, 상기 제 1 방출 데이터의 상기 플래시 메모리에의 기록이 실패할 경우, 상기 플래시 메모리 또는 상기 디스크에 저장된 상기 제 1 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되고, 상기 제 2 방출 데이터의 상기 디스크에의 기록이 실패할 경우, 상기 플래시 메모리에 저장된 상기 제 2 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되는 데이터 저장 시스템을 제공한다.
Description
본 발명은 데이터베이스 시스템에 관한 것으로서, 보다 상세하게는 플래시 메모리 및 디스크를 사용한 메모리 시스템 및 데이터 관리 방법을 사용한 데이터베이스 시스템에 관한 것이다.
플래시 메모리 기반 저장 장치는 모바일, 노트북, 엔터프라이즈 저장 장치 시장에서 가격, 용량, 성능 측면에서 기존 디스크 저장 장치를 위협하고 있다. 예를 들어, 플래시 메모리와 디스크의 속도 차이를 비교하여 도시하고 있는 도 6의 표를 보면, 디스크인 경우 2KB의 데이터를 읽는 데 12.5 밀리초, 쓰는 데 13.5 밀리초의 시간이 걸리는 반면, 플래시 메모리인 경우 같은 데이터량에 대한 접근 시간이 읽기 75 마이크로초, 쓰기 250 마이크로초밖에 되지 않아, 훨씬 빠르다.
반면, 표에 도시되어 있는 바와 같이, 플래시 메모리는 디스크와는 달리 데이터를 저장하기 전에 먼저 데이터를 삭제해야 한다는 제약이 있다는 등의 몇가지 단점을 가지고 있다. 이 때문에 플래시 메모리는 기존의 하드 디스크를 대체하기보다는 디스크를 보완하는 보조적인 메모리 장치로 쓰이는 경우가 많다.
특히, 최근 데이터베이스 분야에서 SSD 등의 플래시 메모리 장치를 주메모리와 디스크 사이의 성능 향상을 위한 캐시 저장 장치로 사용하는 방식이 상용 DBMS 벤더들 사이에서 활발히 사용되고 있다(플래시 캐시: flash cache).
한편, 데이터베이스 쓰기 연산은 원자성이 보장되어야 한다(쓰기 원자성: atomic write). 쓰기 원자성은 데이터를 쓸때 데이터의 일부분만 기록되어서는 안되고 데이터의 최소 단위가 완전하게 기록되어야 함을 의미한다. 그러나 데이터베이스 등의 응용 프로그램에 필요한 쓰기 원자성 보장 단위는 디스크가 보장하는 쓰기 원자성 보장 단위보다 훨씬 크기 때문에, 상위 수준에서 쓰기 원자성을 보장해야 한다.
이와 관련하여 미국공개특허 US 2010/0106895호("Hardware and Operating System Support For Persistent Memory On A Memory Bus")에는 주기억 장치 계층에 속하는 비휘발성 메모리용의 쓰기 원자성을 보장하는 파일 시스템이 개시되어 있다.
또한, 미국등록특허 US 7,979,652호("System and method for M-synchronous replication")는 데이터 복제 시스템에 있어서, 복제 노드들을 쓰기 요청시 즉시 보조 기억 장치 계층에 기록하는 동기 방식과 쓰기 요청시 데이터를 주기억 장치내 버퍼에 임시 보관하는 비동기 방식으로 혼합한 구성이 개시되어 있다.
본 발명은 전술한 문제를 해결하기 위한 것으로서, 그 목적은 성능 향상과 쓰기 원자성 보장 효과를 동시에 제공하는 데이터베이스 시스템 및 데이터 관리 방법을 제공하는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 제 1 측면에 따른 데이터 저장 시스템은 데이터를 저장하는 디스크; 상기 디스크에서 로드한 데이터를 저장하고 있던 상위 메모리에서 방출하는 데이터를 방출 순서에 따라 순차적으로 저장하는 플래시 메모리;를 포함하되, 상기 플래시 메모리에 저장되어 있는 데이터는 상기 상위 메모리에서 추후 재참조되며, 상기 상위 메모리에서 방출되는 제 1 방출 데이터는 상기 플래시 메모리에 기록되고, 상기 플래시 메모리에서 방출되는 제 2 방출 데이터는 상기 디스크에 기록되되, 상기 제 1 방출 데이터의 상기 플래시 메모리에의 기록이 실패할 경우, 상기 플래시 메모리 또는 상기 디스크에 저장된 상기 제 1 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되고, 상기 제 2 방출 데이터의 상기 디스크에의 기록이 실패할 경우, 상기 플래시 메모리에 저장된 상기 제 2 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명의 제 2 측면에 따른 플래시 메모리와 디스크를 포함하는 데이터 저장 시스템을 사용한 데이터 관리 방법은 (a) 상기 디스크 또는 상기 플래시 메모리로부터 상위 메모리로 데이터를 로드하는 단계; (b) 상기 상위 메모리에서 방출되는 데이터를 상기 플래시 메모리에 기저장되어 있는 데이터에 덧붙여 방출 순서대로 순차적으로 저장하는 단계; 및 (c) 상기 (b) 단계에서 상기 플래시 메모리에 저장한 데이터를 상기 디스크에 저장하고 상기 플래시 메모리에서 방출하는 단계;를 포함하되, 상기 (b) 단계는 상기 플래시 메모리의 기록이 불완전하게 이루어질 경우, 상기 데이터의 상기 플래시 메모리에 저장되어 있는 이전 버전 또는 상기 디스크에 저장되어 있는 버전을 사용하여 복구하는 단계;를 포함하며, 상기 (c) 단계는 상기 디스크로의 기록이 불완전하게 이루어질 경우, 상기 플래시 메모리에 저장되어 있는 최신 버전을 사용하여 상기 디스크로의 기록을 재시도하는 단계;를 포함하는 것을 특징으로 한다.
본 발명은 데이터베이스 시스템 및 데이터 관리 방법에 있어, 성능 향상과 쓰기 원자성 보장이라는 두가지 효과를 동시에 얻는다.
구체적으로, 기존에 구비되어 있는 캐시를 복잡한 알고리즘이나 부가적인 구성 요소를 추가하지 않고도, 쓰기 원자성을 보장하는 데에 사용할 수 있다.
또한, 속도 향상을 위한 캐시와 데이터 쓰기에 대한 원자성을 보장하기 위한 임시 공간을 별도로 운영하지 않기 때문에, 캐시를 위한 공간 외에 원자성 쓰기를 위한 별도의 공간이 추가적으로 필요하지 않아, 공간 효율성이 좋다.
또한, 캐시용 쓰기 연산 외에 원자성 보장용 임시 데이터를 위한 별도 쓰기 연산이 필요없기 때문에 중복되는 I/O를 없앨 수 있어 성능이 향상된다.
또한, 쓰기 원자성 보장에 디스크보다 속도가 빠른 플래시 메모리를 사용하므로, 성능이 디스크의 성능에 종속되지 않는다.
도 1은 본 발명의 일실시예에 따른 데이터베이스 시스템의 구조를 도시함.
도 2는 본 발명에 따른 데이터 관리 방법의 흐름을 도시함.
도 3은 본 발명에 따른 데이터 관리 방법의 주메모리로의 데이터 로드 단계의 흐름을 도시함.
도 4는 본 발명에 따른 데이터 관리 방법의 플래시 메모리로의 데이터 기록 단계의 흐름을 도시함.
도 5는 본 발명에 따른 데이터 관리 방법의 디스크로의 데이터 기록 단계의 흐름을 도시함.
도 6은 플래시 메모리와 디스크의 속도 차이를 비교하여 도시함.
도 2는 본 발명에 따른 데이터 관리 방법의 흐름을 도시함.
도 3은 본 발명에 따른 데이터 관리 방법의 주메모리로의 데이터 로드 단계의 흐름을 도시함.
도 4는 본 발명에 따른 데이터 관리 방법의 플래시 메모리로의 데이터 기록 단계의 흐름을 도시함.
도 5는 본 발명에 따른 데이터 관리 방법의 디스크로의 데이터 기록 단계의 흐름을 도시함.
도 6은 플래시 메모리와 디스크의 속도 차이를 비교하여 도시함.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 일실시예에 따른 데이터베이스 시스템(10)을 나타낸 블록도이다.
본 발명에 따른 데이터베이스 시스템(10)은 플래시 메모리(200)와 디스크(300)를 포함한다.
본 발명에 따른 메모리 시스템의 구성 형태에는 제한이 없다. 예를 들어, 플래시 메모리(200)는 디스크(300)에 포함되어 있는 형태로 구성될 수도 있고, 디스크(300)로부터 분리된 독립적인 요소로 구성될 수도 있다. 또한 플래시 메모리(200), 디스크(300) 각각의 종류나 개수 등의 구성 형태에도 제한이 없다.
데이터베이스 데이터는 디스크(300)에 저장되며 상위 메모리로 로드되어 사용된다. 상위 메모리는 예를 들어, 주메모리(100)일 수 있다. 또한 도시된 바와 같이, 주메모리(100)는 디스크(300)에 저장되어 있는 데이터베이스 데이터를 로드하기 위한 전용 버퍼(110)를 포함할 수 있다.
일실시예에서 데이터베이스 데이터는 페이지 단위로 주메모리(100)의 버퍼(110)로 로드된다. 예를 들어, 페이지 크기는 2KB일 수 있다. 편의를 위해 i번째 페이지를 이하 Pi라고 한다면, 페이지(Pi)에는 여러 가지 버전이 존재하게 된다. 디스크(300)에는 주메모리(100)로 로드되어 갱신되기 전의 데이터인 원본이 저장되어 있으며(갱신된 데이터를 디스크(300)에 덮어썼을 경우 덮어쓴 데이터가 다시 원본이 됨), 플래시 메모리(200)에는 주메모리(100)의 버퍼(110)에서 갱신되어 디스크(300)에 재기록되지 않은 버전이 주메모리(100)의 버퍼(110)에서 방출될 때 저장된다.
플래시 메모리(200)에 저장되는 데이터는 나중에 주메모리(100)에서 해당 데이터를 재참조할 때 쓰인다. 즉, 본 발명에 따른 데이터베이스 시스템(10)은 자주 참조되는 데이터를 플래시 메모리(200)에 저장해놓고, 재참조시 디스크(300) 대신 상대적으로 속도가 빠른 플래시 메모리(200)에 접근하여 해당 데이터를 읽어오므로, 성능이 좋다. 다른 말로 하면, 본 발명에 따른 데이터베이스 시스템(10)은 플래시 메모리(200)를 주메모리(100)의 버퍼(110)를 위한 캐시(cache)로 사용하여 데이터베이스 성능을 높인다.
이때 주의할 것은 플래시 메모리(200)에는 페이지(Pi)의 여러 버전이 저장된다는 것이다. 즉, 본 발명에 따른 데이터베이스 시스템(10)은 주메모리(100)의 버퍼(110)에서 갱신된 데이터를 플래시 메모리(200)에 저장할 때 기존 버전을 덮어써 갱신하지 않는다. 플래시 메모리(200)는 주메모리(100)의 버퍼(110)에서 방출되는 페이지를 저장할 때, 단순히 발생 순서대로 기존에 저장되어 있는 데이터들의 끝에 덧붙여 저장한다(append).
예를 들어, 플래시 메모리(200)에 페이지 데이터 P1, P2, P3가 저장되어 있는 상태에서, 페이지 데이터 P2가 주메모리(100)에서 방출되어 플래시 메모리(200)에 저장되었다면, 이제 플래시 메모리(200)에 저장된 데이터는 P1, P2, P3, P2가 될 것이다. 이때, 기존 데이터들의 맨 끝에 저장된 P2(P3 뒤의 P2)가 P2 페이지의 최신 버전 데이터이며, 처음에서 두번째 위치에 있는 P2(P1 뒤의 P2)는 P2 페이지의 이전 버전임은 자명하다. 편의상 버전 정보를 _ 기호 뒤에 갱신된 횟수를 써서 넣어보면, 플래시 메모리(200)에는 현재 P1_1, P2_1, P3_1, P2_2가 순서대로 저장되어 있으며, 디스크(300)에는 각 페이지의 원본인 P1_0, P2_0, P3_0가 저장되어 있을 것이다.
플래시 메모리(200)에는 페이지(Pi)의 여러 버전이 존재하지만, 추후 주메모리(100)에 의해 재참조 되는 것은 최신 버전이다. 예를 들어, 추후 주메모리(100)에 P2 데이터를 다시 로드할 필요가 있을 때, 본 발명에 따른 데이터베이스 시스템(10)은 디스크(300)에 있는 P2_0, 플래시 메모리(200)에 있는 P2_1, P2_2 중에서 플래시 메모리(200)에 있는 최신 버전인 P2_2를 주메모리(100)에 로드한다. P1 데이터가 필요할 때는 디스크(300)에 있는 P1_0 대신 플래시 메모리(200)에 있는 P1_1을 로드하며, P4가 필요한 경우에는 플래시 메모리(200)에 저장되어 있는 버전이 없으므로, 디스크(300)에서 원본인 P4_0를 로드한다. 물론 갱신되지 않은 데이터 P5_0이 주메모리(100)에서 방출되어 플래시 메모리(200)에 저장되어 있는 데이터가 P1_1, P2_1, P3_1, P2_2, P5_0가 된 경우라도, P5에 대한 재참조 필요가 있을 때 디스크(300)에 있는 P5_0가 아닌 플래시 메모리(200)에 있는 P5_0가 주메모리(100)로 로드될 것임은 자명하다.
플래시 메모리(200)는 일종의 환형 큐(circular queue) 형태로 관리된다. 데이터 교체 정책으로 선입선출(FIFO: first in first out) 또는 라운드 로빈(round robin)이 사용된다. 이러한 교체 정책에 의해 플래시 메모리(200)에서 방출되는 데이터는 디스크(300)에 기록되어 원본을 덮어쓴다. 예를 들어, 5개의 페이지를 저장할 수 있고 선입선출 정책을 사용하고 있는 플래시 메모리(200)에 P1_1, P2_1, P3_1, P2_2, P5_0가 저장되어 있는 상태에서 새로운 데이터를 저장해야 한다면, 가장 먼저 저장된 P1_1은 디스크(300)에 기록된 후 방출된다. 즉, 디스크(300)에 저장된 P1 데이터는 플래시 메모리(200)에서 방출되는 시점에 P1_0에서 P1_1로 갱신된다.
최신 버전만이 추후 주메모리(100)에 의해 재참조됨에도 플래시 메모리(200)에 데이터를 저장할 때 이전 버전을 덮어쓰지 않는 것은 본 발명에 따른 데이터베이스 시스템(10)이 플래시 메모리(200)를 단순히 캐시로만 사용하는 것이 아니라, 쓰기 원자성(atomic write)을 보장하는 데에도 사용하기 때문이다.
전술한 바와 같이, 쓰기 원자성을 보장한다는 것은 데이터가 불완전하게 기록되는 것을 막는다는 것이다. 데이터 기록시 갑작스러운 정전이나 시스템 오류 등의 이유로 데이터가 완전하게 기록되지 않고 부분적으로만 기록되는 경우가 발생할 수 있는데, 데이터가 부분적으로만 기록되면 해당 데이터는 유효하지 않게 되므로, 데이터베이스 시스템은 이러한 데이터 손실을 막아야 한다.
데이터의 쓰기 원자성을 보장하는 원리는 다음과 같다. 디스크 원본을 덮어쓰는 대신, 임시 공간에 최신 데이터를 기록한 후, 임시 공간에의 기록이 성공적으로 이루어진 후에 비로소 원본을 덮어쓴다. 이렇게 하면, 원본 페이지를 갱신된 데이터로 덮어쓰는 도중에 오류가 발생하면, 임시 공간에 저장한 최신 버전을 사용하면 되고, 임시 공간에 최신 페이지를 쓰는 도중에 오류가 발생하여 기록이 실패하면 디스크의 원본을 사용하면 된다. 물론 임시 공간에 데이터를 쓸 때 오류가 발생하면 최신 버전의 데이터는 잃는다. 그러나 갱신된 데이터가 부분적으로 기록되는 것보다는 갱신된 내용을 포기하고 이전 버전을 사용하는 것이 더 바람직하다.
이를 위해 종래 기술들은 디스크에 별도의 공간을 마련하고 쓰기 원자성 보장을 위한 임시 저장소로 사용하고 있다. 즉, 종래 기술은 캐시를 위한 공간과 원자성 쓰기 보장을 위한 공간을 중복적으로 할당하고 있다. 또한, 캐시와 원자성 보장을 위한 임시 저장소가 전혀 별개의 것으로 관리되므로, I/O가 중복된다.
본 발명에 따른 데이터베이스 시스템(10)은 종래 기술과 달리 캐시를 통한 성능 향상과 쓰기 원자성 보장에 플래시 메모리(200) 하나만을 사용하므로, 공간 자원을 덜 사용한다. 게다가 원자성 보장을 위한 임시 데이터를 별도로 관리하지 않고 플래시 캐시에 저장되어 있는 데이터를 사용하므로, 중복되는 I/O를 없앨 수 있다. 또한, 쓰기 원자성 보장에 디스크보다 속도가 빠른 플래시 메모리를 사용하므로, 성능이 디스크의 성능에 종속되지 않는다.
즉, 본 발명에 따른 데이터베이스 시스템(10)에서 플래시 메모리(200)에 저장되어 있는 데이터는 두가지 목적으로 사용된다. 재참조를 위해 플래시 메모리(200)에 저장되어 있는 데이터를 쓰기 원자성 보장을 위한 임시 데이터로도 사용하므로, 메모리 공간이나 처리 시간 등 자원 사용이 훨씬 효율적이다.
구체적으로 살펴보면, 만일 디스크(300) 원본을 덮어써 갱신하려고 하는 도중에 시스템 오류 등의 이유로 기록이 부분적으로만 이루어지는 경우, 플래시 메모리(200)에 아직 덮어쓰여지지 않고 최신 상태로 남아있는 데이터가 있기 때문에 플래시 메모리(200)에 있는 최신 버전을 사용해서 디스크(300)에의 기록을 재시도하면 된다.
예를 들어, 상술한 실시예와 같이, 플래시 메모리(200)에 현재 P1_1, P2_1, P3_1, P2_2, P5_0이 저장되어 있는 상태에서, P2_3을 기록해야 하여 P1_1이 방출되어야 하는 경우를 살펴보자. 디스크(300)의 P1_0를 P1_1로 덮어쓰려고 했으나, 오류 발생 등에 의해 부분적으로만 기록된 경우, 플래시 메모리(200)에 P1_1이 아직 저장되어 있으므로, 이를 디스크(300)에 덮어씀으로써 해결할 수 있다.
플래시 메모리(200)에 저장한 데이터가 부분 기록된 상태인 경우에는, 이전 버전이 플래시 메모리(200)에 있으면 해당 버전을 최신 페이지로 사용하면 되고, 없는 경우에는 디스크(300)의 원본을 최신 버전으로 사용하면 된다. 어느 경우이든 기록이 실패한 최신 갱신 내용만을 잃게 되고, 데이터는 바로 직전 최신 버전으로 복구된다는 것을 의미한다.
예를 들어, 플래시 메모리(200)에 P2_1, P3_1, P2_2, P5_0, P2_3이 저장되어 있는 상태에서 P2_4를 저장하려 하였으나 기록이 실패한 경우, 플래시 메모리(200)에 P2_3라는 이전 버전이 있으므로, 이를 사용하면 된다. P6_1을 저장하려 하였으나 기록이 실패한 경우에는 플래시 메모리(200)에 데이터가 없으므로 디스크(300)에 있는 P6_0을 최신 버전으로 사용하면 된다.
이렇게 플래시 메모리(200)를 캐시와 원자성 보장용으로 동시에 사용할 수 있는 것은 본 발명에 따른 데이터베이스 시스템(10)이 플래시 메모리(200)에 데이터를 저장할 때 해당 데이터의 이전 버전을 덮어쓰지 않고, 발생 순서대로 기존에 저장되어 있는 데이터의 끝에 덧붙여 쓰기 때문에 가능한 일이다.
이러한 본 발명의 특징은 순차 쓰기에 적합하다는 플래시 메모리(200)의 특성과도 부합한다. 즉, 주메모리(100)의 버퍼에 데이터들을 모은 후 한꺼번에 플래시 메모리(200)에 저장하는 것이 가능하다. 이러한 실시예에서 I/O 성능은 한층 향상될 것이므로, 주메모리(100)의 버퍼(110) 교체 정책이나 체크 포인트 정책(check-pointing) 등을 주메모리(100)의 버퍼(110)에서 데이터가 방출될 때 플래시 메모리(200)에의 순차 쓰기가 가능하도록 설계하는 것이 바람직할 수 있다.
한편, 플래시 메모리(200)에서 데이터가 방출될 때 해당 데이터의 최신 버전이 플래시 메모리(200)에 있다면 해당 데이터는 디스크(300)에 저장될 필요가 없음은 명백하다. 예를 들어, P2_1, P3_1, P2_2, P5_0, P2_3이 저장되어 있는 상태에서 P2_1이 방출되는 경우, 더 최신 버전인 P2_2가 플래시 메모리에 있으므로 디스크(300)의 P2_0을 P2_1로 갱신하는 것은 무의미하다. 본 발명에 따른 데이터베이스 시스템(10)은 이러한 무의미한 연산을 생략함으로써, I/O를 줄여 성능을 높이는 효과를 얻는다.
플래시 메모리(200)에 부분 기록된 데이터가 있는지 확인하는 것은 시스템을 재시작할 때 수행할 수 있다.
도 2는 본 발명에 따른 데이터 관리 방법의 흐름을 도시하고 있다.
데이터베이스 데이터가 주메모리(100)로 로드된다(S210). 전술한 바와 같이 데이터는 페이지 단위로 주메모리(100)로 로드될 수 있으며, 로드된 페이지는 주메모리(100)에서 갱신될 수 있다(S220).
주메모리(100)에서 페이지가 방출되는 경우(S230), 쓰기 원자성을 보장하면서 플래시 메모리(200)에 해당 페이지를 기록한다(S240). 이때 주의할 점은 이전 버전을 덮어쓰지 않고 기존에 저장되어 있는 데이터의 끝에 덧붙여 기록된다. 따라서 플래시 메모리(200)에 기록하기에 적합한 순차 쓰기를 사용할 수 있다.
플래시 메모리(200)에서 페이지가 방출되는 경우(S250), 쓰기 원자성을 보장하면서 디스크(300)에 해당 페이지를 기록한다(S260). 원본을 갱신하는 것이므로, 이전 버전을 덮어쓰며, 디스크(300)에서 해당 페이지를 찾아 덮어쓰는 것이므로 임의 쓰기 방식으로 기록된다.
도면을 보면, 주메모리(100)에서 페이지가 방출될 때 방출 데이터가 플래시 메모리(200)에는 동기적으로(synchronously) 기록되고, 디스크(300)에는 비동기적으로(synchronously) 기록됨을 알 수 있다. 즉, 플래시 메모리(200)에는 방출 시점에 기록되지만 디스크(300)에는 추후의 어떤 시점에 기록된다.
도 3은 본 발명에 따른 데이터 관리 방법의 주메모리로의 데이터 로드 단계(도 2의 S210)의 흐름을 도시하고 있다.
데이터 페이지 요청시(S310), 주메모리(100)에 없으면(S320), 플래시 메모리(200)에 있는지 확인한다(S330). 있으면 플래시 메모리(200)에서 페이지의 최신 버전을 읽어오고(S340), 없으면 디스크(300)에서 페이지를 읽어온다(S350).
이는 전술한 바와 같이 플래시 메모리(200)를 디스크(300)보다 속도가 빠른 플래시 메모리(200)를 접근함으로써, 자주 참조되는 데이터에 대한 접근 속도를 높여 성능을 향상시키는 용도로 사용하는 것이다.
도 4는 본 발명에 따른 데이터 관리 방법의 플래시 메모리로의 데이터 기록 단계(도 2의 S240)의 흐름을 도시하고 있다.
플래시 메모리(200)에 페이지를 발생 순서대로 덧붙여 기록한다(S410).
시스템을 재시작할 때 플래시 메모리(200)를 검사하여 부분 기록된 데이터가 있는지 확인한다(S420).
부분 기록된, 즉 기록이 실패한 데이터가 있을 경우, 플래시 메모리(200)에 해당 페이지의 이전 버전이 존재하면(S430), 해당 버전을 페이지의 최신 버전으로 사용하고(S440), 없으면 디스크(300)에 저장되어 있는 버전을 페이지의 최신 버전으로 사용한다(S450).
이는 전술한 바와 같이 플래시 메모리(200)를 쓰기 원자성 보장용으로 사용하는 것이다.
도 5는 본 발명에 따른 데이터 관리 방법의 디스크로의 데이터 기록 단계(도 2의 S260) 단계의 흐름을 도시하고 있다.
플래시 메모리(200)에 페이지의 자신보다 최신 버전이 존재하지 않는 경우에만(S510) 디스크(300)에 페이지를 덮어쓴다(S520). 이유는 전술한 바와 같이, 해당 데이터가 최신 버전이 아니라면 디스크(300)의 원본을 덮어쓸 필요가 없기 때문이다.
부분 기록되어 디스크(300)로의 기록이 실패하였는지 검사한 후(S530), 실패한 경우에는 플래시 메모리(200)에 있는 최신 버전을 사용하여 기록을 재시도한다.
이는 전술한 바와 같이 플래시 메모리(200)를 쓰기 원자성 보장용으로 사용하는 것이다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 시스템
100: 주메모리
200: 플래시 메모리
300: 디스크
100: 주메모리
200: 플래시 메모리
300: 디스크
Claims (19)
- 데이터 저장 시스템에 있어서,
데이터를 저장하는 디스크;
상기 디스크에서 로드한 데이터를 저장하고 있던 상위 메모리에서 방출하는 데이터를 기저장되어 있는 데이터에 덧붙여 방출 순서에 따라 순차적으로 저장하는 플래시 메모리;를 포함하되,
상기 플래시 메모리에 저장되어 있는 데이터는 상기 상위 메모리에서 추후 재참조되며,
상기 상위 메모리에서 방출되는 제 1 방출 데이터는 상기 플래시 메모리에 기록되고, 상기 플래시 메모리에서 방출되는 제 2 방출 데이터는 상기 디스크에 기록되되,
상기 제 1 방출 데이터의 상기 플래시 메모리에의 기록이 실패할 경우, 상기 플래시 메모리 또는 상기 디스크에 저장된 상기 제 1 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되고,
상기 제 2 방출 데이터의 상기 디스크에의 기록이 실패할 경우, 상기 플래시 메모리에 저장된 상기 제 2 방출 데이터의 갱신 이전 버전이 최신 버전으로 설정되며,
상기 플래시 메모리는 데이터 저장시, 저장하려는 데이터의 이전 버전을 덮어쓰지 않는 데이터 저장 시스템. - 삭제
- 제 1 항에 있어서,
상기 플래시 메모리는 상기 상위 메모리에서 데이터를 요청하는 경우, 상기 플래시에 저장되어 있는 상기 요청 데이터의 여러 버전 중에서 가장 최신의 데이터를 반환하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 상위 메모리에서 요청한 데이터가 상기 플래시에 없는 경우, 상기 디스크가 상기 요청 데이터를 반환하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 디스크로의 기록은 상기 플래시 메모리에서 방출되는 데이터의 최신 버전이 상기 플래시 메모리에 있는 경우 생략되는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 기록이 실패한 데이터는 기록이 불완전하게 이루어진 데이터인 데이터 저장 시스템. - 제 1 항에 있어서,
시스템 재시작시 상기 플래시 메모리에 기록이 실패한 데이터가 저장되어 있는지 확인하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 플래시 메모리에 기록이 실패한 데이터가 있는 경우, 상기 기록이 실패한 데이터의 이전 버전이 상기 플래시 메모리에 존재하는지 확인하여,
상기 이전 버전이 존재하면 상기 이전 버전을 상기 데이터의 최신 버전으로 사용하고, 상기 이전 버전이 존재하지 않으면 상기 디스크에 저장되어 있는 버전을 상기 데이터의 최신 버전으로 사용하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 디스크로의 기록이 실패할 경우, 상기 디스크로의 기록을 재시도하는 것인 데이터 저장 시스템. - 제 9 항에 있어서,
상기 재시도에는 상기 기록이 실패한 데이터의 상기 플래시 메모리에 저장되어 있는 최신 버전이 사용되는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 플래시 메모리는 상기 상위 메모리의 환형 큐(circular queue) 형태의 캐시로 사용되며,
선입선출(FIFO: first in first out) 또는 라운드 로빈(round robin) 정책을 사용하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 플래시 메모리는 상기 상위 메모리에서 갱신된 데이터를 저장하는 데이터 저장 시스템. - 제 1 항에 있어서,
상기 디스크가 저장하고 있는 데이터는 데이터베이스 데이터인 데이터 저장 시스템. - 플래시 메모리와 디스크를 포함하는 데이터 저장 시스템을 사용한 데이터 관리 방법에 있어서,
(a) 상기 디스크 또는 상기 플래시 메모리로부터 상위 메모리로 데이터를 로드하는 단계;
(b) 상기 상위 메모리에서 방출되는 데이터를 상기 플래시 메모리에 기저장되어 있는 데이터에 덧붙여 방출 순서대로 순차적으로 저장하는 단계; 및
(c) 상기 (b) 단계에서 상기 플래시 메모리에 저장한 데이터를 상기 디스크에 저장하고 상기 플래시 메모리에서 방출하는 단계;를 포함하되,
상기 (b) 단계는
상기 플래시 메모리의 기록이 불완전하게 이루어질 경우, 상기 데이터의 상기 플래시 메모리에 저장되어 있는 이전 버전 또는 상기 디스크에 저장되어 있는 버전을 사용하여 복구하는 단계;를 포함하며,
상기 (c) 단계는
상기 디스크로의 기록이 불완전하게 이루어질 경우, 상기 플래시 메모리에 저장되어 있는 최신 버전을 사용하여 상기 디스크로의 기록을 재시도하는 단계;를 포함하며,
상기 (b) 단계는 상기 상위 메모리에서 방출되는 데이터의 상기 플래시 메모리에 저장되어 있는 이전 버전을 덮어쓰지 않는 데이터 관리 방법. - 삭제
- 제 14 항에 있어서,
상기 (a) 단계는
상기 플래시 메모리에 저장되어 있는 해당 데이터의 최신 버전을 우선하여 로드하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 (c) 단계는
상기 플래시 메모리에서 방출되는 데이터의 최신 버전이 상기 플래시 메모리에 존재할 경우 상기 디스크로의 기록을 생략하는 데이터 관리 방법. - 제 14 항에 있어서,
시스템 재시작시 상기 플래시 메모리에 기록이 실패한 데이터가 저장되어 있는지 확인하는 단계;를 더 포함하는 데이터 관리 방법. - 제 14 항에 있어서,
상기 디스크가 저장하고 있는 데이터는 데이터베이스 데이터인 데이터 관리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120068369A KR101404129B1 (ko) | 2012-06-26 | 2012-06-26 | 데이터 저장 시스템 및 데이터 관리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120068369A KR101404129B1 (ko) | 2012-06-26 | 2012-06-26 | 데이터 저장 시스템 및 데이터 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140001335A KR20140001335A (ko) | 2014-01-07 |
KR101404129B1 true KR101404129B1 (ko) | 2014-06-10 |
Family
ID=50138870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120068369A KR101404129B1 (ko) | 2012-06-26 | 2012-06-26 | 데이터 저장 시스템 및 데이터 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101404129B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100546087B1 (ko) * | 1997-04-08 | 2006-01-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 마이크로프로세서 기반의 디바이스를 위한 트레이스 캐시 |
KR20060047704A (ko) * | 2004-05-03 | 2006-05-18 | 마이크로소프트 코포레이션 | 비휘발성 메모리 캐시 성능 향상 |
KR20110076345A (ko) * | 2009-12-29 | 2011-07-06 | 홍익대학교 산학협력단 | 비휘발성 램을 이용하여 연산 처리의 원자성을 보장하는 컴퓨팅 시스템 및 방법 |
-
2012
- 2012-06-26 KR KR1020120068369A patent/KR101404129B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100546087B1 (ko) * | 1997-04-08 | 2006-01-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 마이크로프로세서 기반의 디바이스를 위한 트레이스 캐시 |
KR20060047704A (ko) * | 2004-05-03 | 2006-05-18 | 마이크로소프트 코포레이션 | 비휘발성 메모리 캐시 성능 향상 |
KR20110076345A (ko) * | 2009-12-29 | 2011-07-06 | 홍익대학교 산학협력단 | 비휘발성 램을 이용하여 연산 처리의 원자성을 보장하는 컴퓨팅 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20140001335A (ko) | 2014-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111936977B (zh) | 使用只追加存储设备的数据库管理系统及方法 | |
US8280858B2 (en) | Storage pool scrubbing with concurrent snapshots | |
KR101824295B1 (ko) | 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 | |
CN107787489B (zh) | 包括层级的文件存储系统 | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
EP2972891B1 (en) | Multiversioned nonvolatile memory hierarchy for persistent memory | |
US10152416B2 (en) | Buffer cache apparatus, journaling file system and journaling method for incorporating journaling features within non-volatile buffer cache | |
US9436559B2 (en) | Storage apparatus and method for controlling cache of storage apparatus | |
CN103744961A (zh) | 用可重构的文件系统目录树提高非易失性存储寿命的方法 | |
JP2011513853A (ja) | 連想ストレージのシステムと方法 | |
US10521148B2 (en) | Data storage device backup | |
KR102262409B1 (ko) | 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법 | |
US11841801B2 (en) | Metadata management in non-volatile memory devices using in-memory journal | |
US20240020240A1 (en) | Method for storing l2p table, system, device, and medium | |
JP2005316635A (ja) | データ処理システムおよび方法並びにその処理プログラム | |
US20120284459A1 (en) | Write-through-and-back cache | |
US10969970B2 (en) | Storage optimization of database in volatile and non-volatile storing unit | |
US20230044942A1 (en) | Conditional update, delayed lookup | |
KR101456104B1 (ko) | 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치 | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
KR101474843B1 (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
US10430287B2 (en) | Computer | |
US11520510B1 (en) | Extending the lifespan of a flash-based storage device | |
KR101404129B1 (ko) | 데이터 저장 시스템 및 데이터 관리 방법 | |
US9672222B1 (en) | Write-through buffer cache for write-able file system that utilizes differencing disk to preserve read-only data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |