KR20240044233A - 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 - Google Patents
로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 Download PDFInfo
- Publication number
- KR20240044233A KR20240044233A KR1020220123762A KR20220123762A KR20240044233A KR 20240044233 A KR20240044233 A KR 20240044233A KR 1020220123762 A KR1020220123762 A KR 1020220123762A KR 20220123762 A KR20220123762 A KR 20220123762A KR 20240044233 A KR20240044233 A KR 20240044233A
- Authority
- KR
- South Korea
- Prior art keywords
- log
- index
- speed processing
- value
- processing device
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000003672 processing method Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000737 periodic effect Effects 0.000 claims description 3
- 238000011010 flushing procedure Methods 0.000 claims 1
- 238000007796 conventional method Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
Images
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/23—Updating
- G06F16/235—Update request formulation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 데이터 처리 기술에 관한 것으로, 더욱 상세하게는 블록체인 시스템에서 데이터를 처리할 때 성능을 극대화할 수 있는 자료 구조형 방식으로 관리하는 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법에 대한 것이다. 본 발명의 실시예에 따르면, <키(Key)>:<밸류(Value)>를 저장할 때 최종적인 밸류(value)는 LSM(Log Structured Merge) Tree 자료 구조형 방식을 저장하고, 저장할 때 사용하는 키(key)는 B+Tree 자료 구조형으로 별도로 저장하여 저장 성능 및 참조(읽기) 성능을 종래의 방식보다 개선할 수 있다.
Description
본 발명은 데이터 처리 기술에 관한 것으로, 더욱 상세하게는 블록체인 시스템에서 데이터를 처리할 때 성능을 극대화할 수 있는 자료 구조형 방식으로 관리하는 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법에 대한 것이다.
블록체인 시스템이 사용하는 데이터베이스는 기존 시스템에서 활용되던 관계형데이터베이스(RDBMS)가 아닌 K-V(Key-Value) DB로 일컬어지는 LevelDB를 사용한다
LevelDB는 Key와 Value를 한 쌍으로 묶어 빠르게 저장 및 참조될 수 있도록 만들어진 데이터베이스를 일컫는다
블록체인 시스템에 LevelDB를 적용하게 되면 블록ID를 Key로 설정하고, value에 해당하는 값은 블록ID에 해당하는 블록 정보 값을 지정하게 된다. 따라서 블록ID를 기반으로 빠르게 블록체인에 저장된 블록 값을 참조할 수 있게 되는 것이다
K-V(Key-Value) DB는 K-V 쌍을 file에 저장할 때 Tree 형의 자료구조형으로 저장하게 되며, 거의 모든 LevelDB에서는 보편적으로 많이 사용되는 B+ Tree 형식으로 데이터를 쌓아 저장한다.
B+ Tree 자료구조형은 Windows OS의 File System 뿐 아니라 MySQL/ Oracle과 같은 상용 관계형데이터베이스의 자료 저장 구조로 보편적으로 가장 많이 사용되는 구조로서 효율적으로 많은 데이터를 저장할 수 있는 방식으로 알려져 있다.
하지만 저장 성능(속도)와 참조 성능(읽기 속도)를 고려했을 때 저장되는 데이터의 개수가 증가할수록 성능 효율이 O(nlogn)으로 떨어진다고 알려져 있다.
하지만 저장 성능(속도)와 참조 성능(읽기 속도)를 고려했을 때 저장되는 데이터의 개수가 증가할수록 성능 효율이 O(nlogn)으로 떨어진다고 알려져 있다.
블록체인의 데이터는 삭제를 하지 않고 오로지 append-only 연산만을 수행하기 때문에 블록이 증가할수록 LevelDB의 성능은 떨어질 수밖에 없다고 볼 수 있으며 LevelDB가 B+ Tree 자료구조형으로 블록을 쌓기 때문에 성능 효율은 B+ Tree의 효율(저장 시 O(logN), 읽기 시 O(logN))에 정비례하여 급감한다고 판단할 수 있다
본 발명은 블록체인 시스템에 성능을 극대화하기 위한 자료 구조를 활용하여 데이터를 처리하므로 데이터가 증가하여도 성능 효율에 영향이 없는 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법을 제공한다.
본 발명이 이루고자 하는 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
발명의 일 측면에 따르면, 로그 및 인덱스 최근접 데이터 고속 처리 장치를 제공한다.
본 발명의 일 실시 예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치는 저장할 블록의 정보를 시간 순서적으로 근거리 시간안에 있는 블록에 근접해서 저장할 수 있는 LSM(Log-Structured Merge) Tree 자료 구조형 방식으로 저장할 수 있다.
본 발명의 다른 일 측면에 따르면, 로그 및 인덱스 최근접 데이터 고속 처리 방법 및 이를 실행하는 컴퓨터 프로그램을 제공한다.
본 발명의 일 실시 예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 방법 및 이를 실행하는 컴퓨터 프로그램은 구동을 위한 구성 정보를 읽는 단계, 액티브(Active) 상태의 WAL파일의 유무를 확인하는 단계, 불변(Immutable) 상태의 WAL파일 유무를 확인하는 단계, 플러시(Flush) 채널을 구동 시키는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면, <키(Key)>:<밸류(Value)>를 저장할 때 최종적인 밸류(value)는 LSM(Log Structured Merge) Tree 자료 구조형 방식을 저장하고, 저장할 때 사용하는 키(key)는 B+Tree 자료 구조형으로 별도로 저장하여 저장 성능 및 참조(읽기) 성능을 종래의 방식보다 개선할 수 있다.
본 발명의 효과는 상기한 효과로 한정되는 것은 아니며, 본 발명의 설명 또는 청구범위에 기재된 발명의 구성으로부터 추론 가능한 모든 효과를 포함하는 것으로 이해되어야 한다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치를 설명하기 위한 도면들.
도 3 내지 도 8은 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 방법 및 구조도를 나타낸 예시 도면들.
도 3 내지 도 8은 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 방법 및 구조도를 나타낸 예시 도면들.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서 및 청구항에서 사용되는 단수 표현은, 달리 언급하지 않는 한 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다.
이하, 본 발명의 바람직한 실시 예를 첨부도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
블록체인 시스템은 기존 시스템에서 활용되던 관계형 데이터베이스(RDBMS)가 아닌 키(key)와 밸류(Value)를 <키(key)>:<밸류(Value)> 한 쌍으로 묶어 빠르게 저장 및 참조될 수 있도록 만들어진 키-밸류(Key-Value) DB를 적용하여 사용한다. 키-밸류(Key-Value) DB는 <키(key)>:<밸류(Value)> 쌍을 저장할 때 보편적으로 B+Tree 자료 구조 형식으로 데이터를 저장한다.
본 발명의 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 블록체인 시스템에서 키-밸류(Key-Value)를 저장할 때 최종적인 밸류(value)는 LSM(Log Structured Merge) Tree 자료 구조형 방식을 저장하고, 저장할 때 사용하는 키(key)는 B+Tree 자료 구조형으로 별도로 저장하여 저장 성능 및 참조(읽기) 성능을 종래의 방식보다 개선할 수 있다.
도 1 및 도 2는 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치를 설명하기 위한 도면들이다.
도 1을 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 키 관리부(100) 및 밸류 관리부(200)를 포함할 수 있다.
키 관리부(100)는 <키(Key)>:<밸류(Value)> 쌍 중 키(Key)를 관리할 수 있다. 키 관리부(100)는 키(Key)를 B+Tree 자료 구조형으로 저장할 수 있다. 키 관리부(100)는 키(Key)에 대한 빠른 검색을 위해DKI(Direct Key Index) 파일에 키(Key)와 색인(Internal indeX, IX)를 등록(저장)시킬 수 있다. 키 관리부(100)는 <키(Key)>:<밸류(Value)> 읽기 과정에서 <키(Key)>에 대한 색인(internal index, IX)을 빠르게 검색할 수 있다.
밸류 저장부(200)는 <키(Key)>:<밸류(Value)> 쌍 중 밸류(Value)를 관리할 수 있다.
밸류 저장부(200)는 밸류(Value)를 LSM(Log Structured Merge) Tree 자료 구조형 방식을 저장할 수 있다. 예를 들면 밸류 저장부(200)는 밸류(Value)를 Value Log 파일에 저장할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <키(Key)>:<색인(IX, Internal indeX)>를 DKI 파일에 등록할 수 있다. 예를 들면, DKI 파일은 B+Tree 자료 구조형 방식일 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <색인(IX, Internal indeX)>를 Value Index 파일에 등록할 수 있다. 예를 들면, Value Index 파일은 B+Tree 자료 구조형 방식일 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <밸류(Value)>를 Value Log 파일에 저장할 수 있다. 예를 들면, Value Log 파일은 LSM(Log-Structured Merge) Tree 자료 구조형 방식으로 Log 파일일 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 입력된 키(Key)를 이용해 DKI 파일에서 색인(IX) 정보를 찾고, 색인(IX) 정보를 이용해 Value Index 파일에서 밸류(Value)의 위치 정보를 찾고, 밸류(Value)의 위치 정보를 이용해 Value Log 파일에서 밸류(Value)의 위치 정보를 조회할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 밸류(Value)를 조회하기 위해 키(Key)를 입력하면 B+Tree 파일구조의 DKI 파일(Direct Key Index File)에서 키(Key)를 찾는다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Log 파일에서 검색된 키(Key)에 대응하는 밸류(Value)의 위치 정보(Fid, Offset, EntrySize)를 획득할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 획득한 Fid(file id)에 해당하는 Log 파일을 찾고, 해당 Log 파일에서 정해진 방식의 Offset을 계산한 후 EntrySize 만큼의 데이터를 읽어 들이면, 해당 데이터 구조 안에 있는 밸류(Value)를 조회할 수 있다.
도 2를 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 DKI파일(Direct Key Index File)에 <키(Key)>:<색인(IX, Internal indeX)>를 등록시키고, <키(Key)>:<밸류(Value)> 읽기 과정에서 키(Key)에 대한 색인(IX, Internal indeX)를 읽어 빠르게 밸류(Value)를 조회할 수 있다. 예를 들면, 색인(IX, Internal indeX)은 키(Key)에 대응하는 밸류(Value)의 위치 정보(Fid, Offset, EnteySize)를 포함할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <키(Key)>:<밸류(Value)> 쓰기/읽기를 처리하는 과정에서 Active, Immutable, 및 Flushed 상태 중 어느 하나로 정보를 유지할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <키(Key)>:<밸류(Value)> 쓰기/읽기를 처리하는 과정에서 동일한 데이터를 WAL파일과 메모리 상에MEMTable로 중복 저장하고 유지할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 MEMTable과 WAL 파일을 일정한 크기로 설정하여 실시간 입력값 <색인(IX, Internal indeX)>:<밸류(Value)>를 쓰기/읽기에 사용할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 MEMTable 설정 크기가 full에 도달하면 MEMTable과 WAL파일을 Immutable MEMTable에 등록하고Immutable 상태로 설정한다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의MEMTable과 WAL파일을 비동기적으로 Value Index 파일과 Value Log 파일로 데이터를 옮긴 후 삭제할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Flushed 상태인 Value Log 파일에는 밸류(Value)를 저장하고, 밸류(Value)의 검색 정보인 Entry를 색인(IX)과 함께 Value Index 파일에 저장할 수 있다.
도 3 내지 도 8은 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 방법 및 구조도를 나타낸 예시 도면들이다. 이하 설명하는 각 과정은 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치를 구성하는 각 기능부가 수행하는 과정이나, 본 발명의 간결하고 명확한 설명을 위해 각 단계의 주체를 로그 및 인덱스 최근접 데이터 고속 처리 장치로 통칭하도록 한다.
도 3을 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 블록체인 시스템 구동을 위한 초기화 작업을 수행할 수 있다.
S310 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 블록체인 시스템 구동을 위한 구성 정보를 읽는다.
S320 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 WAL 파일의 유무를 파악할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 WAL 파일이 있는 경우 Active 상태의 WAL 파일 정보를 활용하여Active 상태의 MEMTable을 생성할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 WAL 파일이 없는 경우 S330 단계를 수행한다.
S330 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의 WAL 파일 유무를 확인할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의 WAL 파일이 있는 경우 Immutable 상태의 WAL 파일 정보를 활용하여 Immutable 상태의 MEMTable을 생성할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의 WAL 파일이 없는 경우 S340 단계를 수행한다.
S340단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Flush 채널을 구동시킬 수 있다.
도 4를 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 키(key)를 DKI 파일(Direct Key Index File)에 저장할 수 있다. 예를 들면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 [DID]:[BlockHeight] 정보를 DKI 파일(Direct Key Index File)에 저장할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 시스템 구동 시 Active 상태의 WAL 파일 정보를 이용해 Active MEMTable을 생성할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 WAL 파일과 MEMTable을 일정한 크기 만큼 설정하여 실시간으로 입력값<색인(Internal indeX, IX)>:<밸류(Value)>을 쓰기/읽기에 사용할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 MEMTable이 설정된 크기만큼 다 차면 Immutable로 상태 변환하고, 새로운 Active 상태의 WAL 파일 생성하고, WAL 파일 정보를 이용해 새로운Active MEMTable을 생성할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 동일한 데이터 [BlockHeight]:[Block]을 파일(WAL파일)과 메모리 상(MEMTable)에 중복 저장하고 유지할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 시스템 구동 시 Immutable 상태의 WAL 파일 정보를 이용해 Immutable MEMTable을 생성할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 주기적 Flush를 통해 Immutable 상태에 대응되는 Value Log 파일을 생성하고, Value Index 파일을 업데이트할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Flushed 상태의 Value Log 파일에는 밸류(Value)가 저장되고, 값(Value)의 검색 정보인 엔트리(entry)를 색인(IX)와 함께 Value Index 파일에 저장할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 B+Tree 자료 구조형인 Value Index File에 블록의 메타정보 [BlockHeight]:[METAINFO]를 저장할 수 있다. 예를 들면 메타 정보([METAINFO]={Fid, Offset, EntrySize})는 Value Log File(Fid) 내 블록의 물리적 저장 위치(offset, EntrySize) 정보일 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 비동기적으로 Immutable 상태의 MEMTable과 WAL 파일을 Value Index 파일과 Value Log 파일로 데이터를 옮긴 후 삭제할 수 있다.
도5는 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)가 데이터를 저장(Put) 방법을 설명한 도면이다.
여기서 Put, write, save 모두 동일한 뜻으로 해석하여 데이터를 파일에 저장한다고 표현하도록 한다.
도 5를 참조하면, S510단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <키(Key)>:<색인(IX)> 를 DKI 파일(Direct Key Index File)에 저장(write)할 수 있다.
S520단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <색인(IX)>:<밸류(Value)를 MEMTable/WAL에 저장(Put)한다.
S530단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active MEMTable이 다 찼는지(Full) 판단할 수 있다. 저장(write) 할 수 있는 공간이 있다면 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 S540 단계를 수행한다.
S540단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <색인(IX)>:<값(Value)> 을 Active WAL File에 저장(write)한다.
S550단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <색인(IX)>:<값(Value)> 을 Active MEMTable에 저장(write)한다.
S530단계에서 Active MEMTable이 다 차서 저장할 공간이 없다면 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 S560 단계를 수행한다.
S560단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 새로운 MEMTable 로 처리할 것인지 판단하여, 새로운 MEMTable이 필요하면 S5610 단계를 수행할 수 있다.
S5610 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 MEMTable의 상태를 Active에서 Immutable로 변경하여 Immutable MEMTable풀(pool)에 추가할 수 있다.
S5620 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 WAL 파일의 상태도 immutable 상태로 변경하여 Immutable WAL 파일로 명기할 수 있다.
S5630 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 새로운 Active WAL 파일을 생성할 수 있다.
S5640 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 새로운 Active MEMTable을 생성할 수 있다.
또한 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 S5630 단계 및 S5640 단계를 동시에 수행할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 새로운Active MEMTable 및 WAL 파일을 생성한 후 각 파일에 정보를 저장하는 S540 단계를 수행할 수 있다.
S560단계에서 새로운 MEMTable이 필요하지 않는 경우 S570 단계를 수행할 수 있다.
S570 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable로 Flush 채널을 전송할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 S580 단계에서 Flush 채널로 MEMTable의 전송 유무를 확인하고, S5810단계에서 MEMTable의 수신 여부를 확인할 수 있다.
S5810 단계에서 MEMTable 수신된 경우 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 S5820 단계에서 밸류(Value)를 Value Log 파일에 저장(write)할 수 있다.
S5830단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 <색인(IX)>:<값(Value)> 을 Value Index 파일에 저장(write)할 수 있다.
S5840단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable MEMTable과 Immutable WAL 파일을 삭제할 수 있다.
도 6은 본 발명의 일 실시 예에 따라 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)가 데이터를 저장(put)하는 구조도 예시이다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 키(key)를 DKI 파일(Direct Key Index File)에 저장할 수 있다. 예를 들면 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 [DID]:[BlockHeight] 정보를 DKI파일(Direct Key Index File)에 저장할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 동일한 데이터 [BlockHeight]:[Block]을 파일(WAL파일)과 메모리 상(MEMTable)에 중복 저장하고 유지할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 MEMTable의 상태를 Active에서 Immutable로 변경하여 Immutable MEMTable풀(pool)에 추가할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 WAL 파일의 상태도 immutable 상태로 변경하여 Immutable WAL 파일로 명기할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 주기적 Flush를 통해 Immutable 상태에 대응되는 Value Log 파일을 생성하고, Value Index 파일을 업데이트할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Flushed 상태의 Value Log 파일에는 밸류(Value)가 저장되고, 밸류(Value)의 검색 정보인 엔트리(entry)를 색인(IX, Internal Index)와 함께 Value Index 파일에 저장할 수 있다.
로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 B+Tree 자료 구조형인 Value Index 파일에 블록의 메타정보 [BlockHeight]:[METAINFO]를 저장할 수 있다. 예를 들면 메타 정보([METAINFO]={Fid, Offset, EntrySize})는 Value Log 파일(Fid) 내 블록의 물리적 저장 위치(Offset, EntrySize) 정보이다.
도7는 본 발명의 일 실시예에 따른 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)가 데이터를 읽기(read) 위한 방법을 설명한 도면이다.
도 7을 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 키(Key)를 입력값으로 하여 <키(Key)>:<밸류(Value)> 쌍으로 대응되는 밸류(Value)를 조회(Get)할 수 있다.
S710 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 DKI 파일에서 입력된 키(Key)의 색인(IX)을 찾는다.
S710 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 색인(IX)이 없다면 밸류(Value)를 찾을 수 없으므로 오류로 판단하고 종료한다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 입력된 키(Key)에 대응되는 색인(IX)이 있는 경우 S730 단계를 수행한다.
S730단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 MEMTable과 WAL 파일에 <색인(IX)>이 있는 경우 <색인(IX)>:<밸류(Value)>를 읽을 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Active 상태의 MEMTable과 WAL 파일에 색인(IX)이 없는 경우 S740 단계를 수행한다.
S740 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의 MEMTable과 WAL 파일에 <색인(IX)>이 있는 경우 <색인(IX)>:<밸류(Value)>를 읽을 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Immutable 상태의 MEMTable과 WAL 파일에 <색인(IX)>이 없는 경우 S750 단계를 수행한다.
S750 단계에서 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 Value Index 파일에 색인(IX)이 있는 경우 Value Log 파일에서 색인(IX)에 대응되는 밸류(Value)를 읽을 수 있다.
도8을 참조하면, 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 B+ Tree 파일인 DKI파일에서 키(Key)를 찾고, 키(Key)에 대응되는 밸류(Value)의 위치 정보(Fid, offset, EntrySize)를 Value Index 파일에서 획득할 수 있다. 로그 및 인덱스 최근접 데이터 고속 처리 장치(10)는 획득한 위치정보 Fid에 해당하는 Log 파일을 Value Log 파일에서 찾아, 해당 파일에서 정해진 방식의 Offset을 계산한 후 EntrySize 만큼의 데이터를 읽어 들이면, 해당 데이터 구조 안에 있는 입력된 키(Key)에 대응되는 밸류(Value)를 조회할 수 있다.
상술한 로그 및 인덱스 최근접 데이터 고속 처리 방법은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 발명의 실시 예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시 예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시 예 들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
10: 로그 및 인덱스 최근접 데이터 고속 처리 장치
100: 키 관리부
200: 밸류 관리부
100: 키 관리부
200: 밸류 관리부
Claims (7)
- 로그 및 인덱스 최근접 데이터 고속 처리 장치에 있어서,
저장할 블록의 정보를 시간 순서적으로 근거리 시간안에 있는 블록에 근접해서 저장할 수 있는 LSM(Log-Structured Merge) Tree 자료 구조형 방식으로 저장하는 로그 및 인덱스 최근접 데이터 고속 처리 장치.
- 제1항에 있어서
<키>:<밸류> 쌍 중 키를 관리하는 키 관리부; 및
<키>:<밸류> 쌍 중 밸류를 관리하는 밸류 관리부를 포함하되
상기 키는
B+트리(Tree) 자료 구조형 파일에 저장하는 로그 및 인덱스 최근접 데이터 고속 처리 장치.
- 제1 항에 있어서,
색인(IX)을 B+트리(Tree) 자료 구조형 파일에 저장하는 로그 및 인덱스 최근접 데이터 고속 처리 장치.
- 제3항에 있어서,
상기 색인(IX)은
상기 키에 대응되는 밸류의 위치 정보를 포함하는 로그 및 인덱스 최근접 데이터 고속 처리 장치.
- 로그 및 인덱스 최근접 데이터 고속 처리 장치가 초기화 하는 방법에 있어서,
구동을 위한 구성 정보를 읽는 단계;
액티브(Active) 상태의 WAL파일의 유무를 확인하는 단계;
불변(Immutable) 상태의 WAL파일 유무를 확인하는 단계;
플러시(Flush) 채널을 구동 시키는 단계를 포함하는 로그 및 인덱스 최근접 데이터 고속 처리 방법.
- 제5항에 있어서,
주기적 플러시(Flush)를 통해 불변(Immutable) 상태에 대응되는 밸류 로그(Value Log) 파일을 생성하고, 밸류 인덱스(Value Index) 파일을 업데이트하는 로그 및 인덱스 최근접 데이터 고속 처리 방법.
- 제5항 및 제6항 중 어느 하나에 따른 로그 및 인덱스 최근접 데이터 고속 처리 방법을 실행하는 컴퓨터가 판독 가능한 기록매체에 기록된 컴퓨터 프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220123762A KR20240044233A (ko) | 2022-09-28 | 2022-09-28 | 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220123762A KR20240044233A (ko) | 2022-09-28 | 2022-09-28 | 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240044233A true KR20240044233A (ko) | 2024-04-04 |
Family
ID=90638018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220123762A KR20240044233A (ko) | 2022-09-28 | 2022-09-28 | 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20240044233A (ko) |
-
2022
- 2022-09-28 KR KR1020220123762A patent/KR20240044233A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11169981B2 (en) | Managing data with flexible schema | |
Plattner | The impact of columnar in-memory databases on enterprise systems: implications of eliminating transaction-maintained aggregates | |
US9542424B2 (en) | Lifecycle-based horizontal partitioning | |
JP5271359B2 (ja) | 多次元データベースアーキテクチャ | |
US9411866B2 (en) | Replication mechanisms for database environments | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
US8572063B2 (en) | Computer-implemented method for operating a database and corresponding computer-system | |
CA2279119C (en) | Heuristic-based conditional data indexing | |
Plattner | Sanssoucidb: An in-memory database for processing enterprise workloads | |
Yang et al. | F1 Lightning: HTAP as a Service | |
CN113868028B (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
MX2010012866A (es) | Compaginacion de datos jerarquicos. | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
CN101853278A (zh) | 数据存储系统应用方法 | |
KR20240044233A (ko) | 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 | |
KR20240044230A (ko) | 블록체인 기반 데이터 고속 처리 장치 및 방법 | |
KR20240044232A (ko) | 키-밸류 데이터베이스 기반 데이터 고속 처리 장치 및 방법 | |
KR20240044231A (ko) | Dki 기반 데이터 고속 처리 장치 및 방법 | |
CN115630087A (zh) | 数据库语句的执行计划确定方法、装置、电子设备及介质 | |
US8706769B1 (en) | Processing insert with normalize statements | |
CN103353891A (zh) | 数据库管理系统及其数据处理方法 | |
TWI725110B (zh) | 資料庫操作方法及裝置 | |
TWI805544B (zh) | 資料庫操作方法及裝置 | |
KR20090099390A (ko) | 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법 | |
TWI735512B (zh) | 資料庫操作方法及裝置 |