KR20240041205A - 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램 - Google Patents

탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20240041205A
KR20240041205A KR1020230054818A KR20230054818A KR20240041205A KR 20240041205 A KR20240041205 A KR 20240041205A KR 1020230054818 A KR1020230054818 A KR 1020230054818A KR 20230054818 A KR20230054818 A KR 20230054818A KR 20240041205 A KR20240041205 A KR 20240041205A
Authority
KR
South Korea
Prior art keywords
value
key
bitmask
data
storage
Prior art date
Application number
KR1020230054818A
Other languages
English (en)
Inventor
김지혜
문영호
Original Assignee
주식회사 나두모두
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 나두모두 filed Critical 주식회사 나두모두
Publication of KR20240041205A publication Critical patent/KR20240041205A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시예는 내부 시스템 영역에 키(KEY)- 값(VALUE) 메소드를 사용하여 데이터를 저장하는 비관계형 데이터베이스인 KEY-VALUE DB(10);를 포함하고, KEY-VALUE DB(10)는 소켓 또는 API로 연결된 클라이언트로서 키와 값이 입력되면, 입력된 값을 메모리에 저장하고 머클트리(MERKLE TREE)(20)를 기반으로 한 저장 모델 형태로 구성하여 스토리지에 데이터를 저장하는 것; 을 특징으로 한다.

Description

탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램{KEY-VALUE database system using decentralized addressing P2P storage as a file system, its method and computer program}
본 발명은 탈 중앙화 방식의 주소지정 방식 P2P 스토리지를 파일 시스템으로 사용하는 KEY-VALUE 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램에 관한 것이다.
기존에는 중앙집중식 서버-클라이언트 모델을 통하여 저장되는 KEY-VALUE 데이터는 서버에 저장된다. 따라서 정보 수신, 변경, 추가 및 삭제에 대한 요청 정보는 중앙 서버 호스트를 통해 처리된다. 이때, 서버 리소스는 제한되어져있고 특정 네트워크 내부에서만 적은 레이턴시로 데이터에 접근할 수 있다.
그러므로 종래에는 특정 소수의 회사, 개인이 데이터를 소유하고 통제할 수 있도록 하였다.
그러나, 웹 30 패러다임의 등장이후, 탈중앙화를 위한 여러 기술이 등장하였다. 이는 블록체인을 중심으로 해싱과 링크를 효과적으로 사용하여 체인을 구성하거나 머클트리(MERKLE TREE)와 같이 범용적으로 사용가능한 자료 구조를 갖는다.
이에 더하여 종래에는 P2P를 기반으로 블록체인, 머클트리(MERKLE TREE) 등을 기반으로 IPFS, Storj, Web3Storage 등 스토리지 기술이 발표 되었다. 이러한 기술의 인프라는 개인의 컴퓨팅 리소스를 네트워크에 참여시키는 것이 가능하다.
그러나, 이와 같은 종래 기술은 기존의 중앙집중식 서버의 처리성을 개선하고 특정 소수의 개인및 회사가 데이터를 소유하는것을 어렵게 하고 통제하여 검열,삭제 등의 문제에서 자유롭지 못한 문제점이 있다.
KR 10-2490853 B1(2023.01.17)
그러므로 본 발명은 위와 같은 종래 기술의 문제점을 해결하고자 중앙 집중식 서버의 처리성을 개선하고, 특정 소수의 개인 및 회사가 데이터의 소유가 가능한 KEY-VALUE 데이터베이스 시스템을 제공하는 것을 목적으로 한다.
본 발명은 위와 같은 목적을 달성하기 위하여 하기와 같은 실시예를 포함할 수 있다.
본 발명의 실시예는 내부 시스템 영역에 키(KEY)- 값(VALUE) 메소드를 사용하여 데이터를 저장하는 비관계형 데이터베이스인 KEY-VALUE DB를 포함하고, KEY-VALUE DB는 소켓 또는 API로 연결된 클라이언트로서 키와 값이 입력되면, 입력된 값을 메모리에 저장하고 머클트리(MERKLE TREE)를 기반으로 한 저장 모델 형태로 구성하여 스토리지에 데이터를 저장할 수 있다.
위 실시예에서, KEY-VALUE DB는 입력된 데이터를 머클트리(MERKLE TREE) 형태의 데이터로 변환하여 P2P 스토리지 네트워크에 저장하고, 입력된 쿼리에 따라 P2P 스토리지 네트워크에 저장된 데이터를 추가, 수정, 삭제 및 검색을 수행하는 스토리지 엔진을 포함할 수 있다.
위 실시예에서, 코어 프로세스는 자주 사용하는 키와 값을 저장하는 캐시(CACHE)와, 분산 데이터에 엑세스, 추가, 수정, 삭제를 위한 인증을 수행하는 X.509 STORE와, 분산된 참여노드간의 데이터 변경분을 추적하고 동기화 하는 SYNC와, 분산된 노드간 데이터 경합이 일어났을때 이를 병합 및 순서를 제어하여 실시간으로 변경사항을 제어하는 CRDT(Conflict-Free-Replicated Data Types)를 포함할 수 있다.
위 실시예에서, 스토리지 엔진은 KEY-VALUE 데이터를 네트워크상의 분산된 노드에 저장하는 MERKLE TREE와, 머클트리(MERKLE TREE)의 특정 항목이 변경되면 머클루트(MERKLE ROOT)의 변경 사항을 나열하고 추적 및 전파하는 OPLOG 및 사용되지 않는 블록을 설정된 주기에 따라 회수하여 머클트리(MERKLE TREE)의 최신성을 유지하는 Garbage Collector를 포함할 수 있다.
위 실시예에서, 머클트리(MERKLE TREE)는 자식노드의 객체를 해시한 값을 주소로 갖는 제1데이터 블록과 제2데이터 블록을 포함하고, 제1데이터 블록은 비트마스크(BITMASK) 기법으로서 하위노드의 위치정보를 표현하는 비트마스크 값을 포함하여 내부노드(Internal Node)를 구성하고, 제2데이터 블록은 키값이 포함되어 리프노드(Leaf Node)를 구성할 수 있다.
또한, 위 실시예에서, 비트마스크 값은 키의 해시값을 비트마스크(BITMASK) 기법으로 표현한 것으로서 설정 비트 단위로 구성되어 사전에 산출된 연결 노드의 위치 정보를 포함할 수 있다.
본 발명은 다른 실시예로서, KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법에 있어서, KEY-VALUE DB의 데이터를 저장 또는 수정하는 a)단계는 a-1)키와 값이 입력되면 키스페이스의 머클루트(MERKLE ROOT) 값 및 키값의 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계와, a-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩(Loading)하는 단계와, a-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정하는 단계와, a-4)비트마스크(BITMASK) 값으로 키값을 검색하는 단계와, a-4)조회하고자 하는 키를 해시하여 결정된 비트마스크(BITMASK)의 비트마스킹 연산 결과에 의해 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하는 단계; 및 a-5)해당 키값이 데이터 블록에 존재하면, 입력된 키값에 대응하여 추가 또는 수정하고, 머클루트(MERKLE ROOT)를 업데이트 하는 단계를 포함할 수 있다.
위 실시예에서, a-5)단계는 해당 데이터 블럭 내에 키값이 존재하면 X.509 STORE 기반 인증 결과에 따라 값을 추가 또는 수정할 수 있다.
위 실시예에서, 입력된 쿼리에 따른 데이터를 조회하는 b) 단계; 를 더 포함하고, b) 단계는 b-1)쿼리(Query)가 입력되면, 입력된 쿼리(Query)에 해당되는 키와 값을 해시하여 산출된 해시값에 일치된 노드 네트워크상에 분산된 해시테이블 및 머클루트를 확인하는 단계와, b-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩하는 단계와, b-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정하는 단계와, b-5)조회하고자 하는 키의 해시값에 따라 결정된 비트마스크(BITMASK)의 비트마스킹 연산결과를 통해 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하는 단계 및 b-6)비트마스킹 연산 결과를 확인하여 해당 데이터 블록에 대응된 키값이 존재하면, 암호화된 값을 변환하여 로딩하는 단계를 포함할 수 있다.
위 실시예에서, b-5) 단계는 비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, 머클루트(MERKLE Root) 정보를 가져와서 머클트리(MERKLE TREE)를 로드하여 서브트리 내에서 쿼리된 데이터를 탐색하는 단계를 더 포함할 수 있다.
위 실시예에서, 노드 네트워크에 분산 저장된 데이터를 삭제 또는 수정하는 c) 단계를 더 포함하고, c) 단계는 c-1)삭제 명령이 포함된 키값이 입력되면, 키값에 대응되는 머클루트(MERKLE ROOT) 및 머클루트의 각 자식노드들의 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계와, c-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩 단계와, c-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정하는 단계와, c-5)조회하고자 하는 키를 해시하여 결정된 비트마스크(BITMASK)의 연산 결과로 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하고, 키값이 존재하면 X.509 STORE 기반의 인증을 진행하고, 인증 결과에 따라 대상 데이터를 삭제하는 단계 및 c-6)데이터의 삭제에 따른 키스페이스 머클루트(MERKLE ROOT)를 업데이트하는 단계를 포함할 수 있다.
위 실시예에서, c-5) 단계는 비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, 머클루트 정보를 가져와서 머클트리(MERKLE TREE)를 로드하여 서브트리 내에서 삭제 대상인 데이터의 탐색 과정을 진행할 수 있다.
위 실시예에서, c-5) 단계는 데이터가 삭제되거나 수정되어 키스페이스의 머클루트(MERKLE ROOT)가 업데이트되면 변경전 로컬 스토리지와 메모리에 로드된 기존 머클트리(MERKLE TREE) 및 네트워크 상에 사용되지 않게되는 머클트리(MERKLE TREE)내의 데이터 블록을 정리할 수 있다.
위 실시예에서, KEY-VALUE DB는 로컬시스템 영역에서 더이상 다른노드에 하나도 연결되지 않은 머클루트(MERKLE ROOT)를 탐색하여 로컬메모리와 스토리지에서 삭제하고, 작업의 기준점이 되는 히스토리의 관리를 위해 데이터 블록과 머클트리(MERKLE TREE)의 변경사항을 기록하고, 변경 사항을 다른 노드와 동기화 하여 타 노드에서도 변경사항이 전파되도록 하고, 노드간의 동기화 부분을 수행하여 모든 네트워크 상의 노드가 Eventually consistency , Optimistic replication를 갖도록 하는 것을 특징으로 한다.
본 발명은 또 다른 실시예로서, 컴퓨팅 장치와 결합되어, 위 실시예의 VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법을 실행시키기 위하여 컴퓨팅 장치로 판독가능한 기록 매체에 저장되는 컴퓨터 프로그램을 제공할 수 있다.
본 발명은 분산된 노드상에서 누구나 엑세스할수있는 데이터베이스 구성이 가능하고, 서비스 개발시 데이터베이스 인스턴스를 시스템 내부에 구축하고 노드로 참여하여 데이터베이스 전체 셋트에 엑세스가 가능하기에 탈 중앙화 및 최적화된 레이턴시 시스템 구성이 가능한 효과가 있다.
또한, 본 발명은 IPFS, Storj 와 같이 머클트리(MERKLE TREE)에 기반한 다양한 스토리지를 하위레이어로 사용하여 급속도로 발전하고 쇠락하는 웹 3.0 환경에 대비할 수 있고, 다양한 게이트웨이 서비스를 통해 일부 KEY-VALUE 데이터에 엑세스하기위해 복잡한 클라이언트를 설치하지 않고 엑세스 할 수 있다.
또한, 본 발명은 탈중앙화 데이터베이스 특성상 데이터복사본이 네트워크에 분산되어 있어 재해복구가 용이하고, 전체데이터베이스를 사용하지 않고도 필요한 부분의 데이터베이스를 활용할 수 있다.
도 1은 본 발명의 개요를 도시한 블록도이다.
도 2는 본 발명에 따른 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템의 구조를 도시한 도면이다.
도 3은 본 발명의 데이터베이스 시스템의 아키텍쳐를 도시한 도면이다.
도 4는 데이터 블록을 도시한 도면이다.
도 5는 데이터 블록의 상세 구조도이다.
도 6은 비트마스크(BITMASK)를 통해 머클트리상의 블록 탐색하는 과정을 도시한 블록도이다.
도 7은 데이터 쿼리 단계를 도시한 순서도이다.
도 8은 데이터 저장 단계를 도시한 순서도이다.
도 9는 데이터 삭제 단계를 도시한 순서도이다.
도 10은 비트마스크(BITMASK)를 통한 노드의 확장예를 도시한 도면이다.
이하, 본 발명의 일실시예를 예시적인 도면을 통해 상세하게 설명한다. 그러나 이는 본 발명의 범위를 한정하려고 의도된 것은 아니다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 도면에 도시된 구성요소의 크기나 형상 등은 설명의 명료성과 편의상 과장되게 도시될 수 있다. 또한, 본 발명의 구성 및 작용을 고려하여 특별히 정의된 용어들은 본 발명의 실시예를 설명하기 위한 것일 뿐이고, 본 발명의 범위를 한정하는 것이 아니다.
이하에서는 본 발명에 따른 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템의 바람직한 실시예를 첨부도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 개요를 도시한 블록도, 도 2는 본 발명에 따른 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템의 구조를 도시한 도면이다.
도 1 및 도 2를 참조하면, 본 발명은, 예를 들면, A사의 내부 시스템 영역에 키(KEY)- 값(VALUE) 메소드를 사용하여 데이터를 저장하는 비관계형 데이터베이스인 KEY-VALUE DB(10)(를 구축하여 내부 영역의 DB(10)가 소실되더라도 외부영역의 스토리지 네트워크 상의 머클트리(MERKLE TREE)(20)의 블록(BLOCK)을 회수할 수 있다.
이를 위해 본 발명에 따른 KEY-VALUE DB는 소켓 혹은 API로 연결된 클라이언트로서 키(KEY1, KEY2, KEY3)와 값(VALUE1, VALUE2, VALUE3)이 입력되면, 입력된 값을 메모리에 저장하고 머클트리(MERKLE TREE)(20)를 기반으로 한 저장 모델 형태로 구성하여 스토리지에 데이터를 영구 저장한다.
여기서 KEY-VALUE DB는 컴퓨팅이 가능한 단말에 설치된 컴퓨팅 프로그램일 수 있다.
즉, KEY VALUE는 서버 또는 단말에 설치되는 애플리케이션(예를 들면, 웹서비스)으로서 입력된 데이터를 머클트리(MERKLE TREE)(20) 형태의 데이터로 변환하여 탈중앙화 스토리지 네트워크에 분산 저장, 삭제 및 수정할 수 있다. 또한 KEY-VALUE DB(10)는 입력된 쿼리에 따라 머클트리(MERKLE TREE)(20) 상에 저장된 데이터를 검색할 수 있다.
KEY-VALUE DB(10)는 스토리지엔진(200)과 코어 프로세스(100)를 이루는 아키텍쳐를 구성한다. 이는 도 3을 참조하여 설명한다.
도 3은 KEY-VALUE DB의 아키텍쳐를 도시한 것이다.
도 3을 참조하면, KEY-VALUE DB(10)는 코어 프로세스(100)와 스토리지 엔진(200)를 포함할 수 있다.
이중 코어 프로세스(100)는 시스템을 구성하기 위한 주요 기능(예를 들면, 서버)을 구현한 라이브러리로서 캐시(CACHE(110)), SYNC(140), X,509 STORE(120), CRDT(130)를 포함하여 서버로서 기능을 구현할 수 있다.
이중, 캐시(CACHE(110))는 자주 사용하는 키와 값을 저장한다.
X.509 STORE(120)는 탈중앙화되어 분산된 데이터에 엑세스하고 추가 변경할 수 있기 위한 인증키를 저장한다.
SYNC(140)는 분산된 참여노드간의 데이터 변경분을 추적하고 동기화 한다.
CRDT(130)는 Conflict-Free-Replicated Data Types의 약자로 분산된 노드간 데이터 경합이 일어났을때 이를 병합하고 순서를 Last Writer Wins 메카니즘으로 제어하여 실시간으로 KEY-VALUE 데이터베이스의 변경사항을 제어한다.
스토리지 엔진(200)은 OPLOG(210)와, Garbage Collector(230), 머클트리(MERKLE TREE)(20, 220)를 구비하여 입력된 데이터를 머클트리(MERKLE TREE)(20, 220) 형태의 데이터로 변환하여 P2P 스토리지 네트워크에 저장하고, 입력된 쿼리에 따라 P2P 스토리지 네트워크에 저장된 데이터를 추가, 수정, 삭제 및 검색을 수행한다.
여기서 도면의 머클트리(MERKLE TREE)의 도면부호는 220이나 앞서 부여한 20과 동일한 것으로서 이하에서는 주로 20의 도면부호를 부여하여 설명하나, 아키텍쳐의 설명을 위해서 220과 20의 도면부호를 모두 사용하여 설명한다.
이중, OPLOG(210)는 머클트리(MERKLE TREE)(20, 220)에 특성상 데이터베이스의 특정항목이 변경되면 머클루트(MERKLE ROOT)의 변경 사항을 나열하고 추적 및 전파한다.
Garbage Collector(230)는 연결이 끊어져 사용되지 않는 블록을 설정된 주기에 따라 회수하여 머클트리(MERKLE TREE)(20, 220)의 최신성을 유지한다.
본 발명에 따른 KEY-VALUE DB(10)는 데이터 크기가 커져 머클트리(MERKLE TREE)(20)의 블록이 성능문제를 일으키는 것을 막기위해 Hash Arrayed Mapped Tree를 사용하여 머클트리(MERKLE TREE)(20)를 샤딩하고 제어한다. 해당 자료구조를 통해 데이터에 엑세스를 시도하면 데이터의 삽입순서나 변경순서에 관계없이 동일한 샤딩패턴에 도달한다.
머클트리(MERKLE TREE)(20, 220)는 KEY-VALUE 데이터를 네트워크상의 분산된 노드에 저장한다. 여기서 머클트리(MERKLE TREE)(20, 220)의 리프노드(Leaf Node)는 데이터로 구성되고, 상위노드는 자식노드의 해시값으로 구성된 데이터 구조로서 루트가 각 자식노드의 해시 병합결과로 생성되어 데이터 변경이 일어날시 머클루트(MERKLE ROOT)가 변경될 수 있다. 여기서 머클트리(MERKLE TREE)(20, 220)는 복수의 서브트리(21, 22)로 구성될 수 있다.
따라서 본 발명은 자식노드들의 해시가 중첩함에 따라 네트워크 처리 로드가 증가하고 관리의 어려운 기존의 머클트리(MERKLE TREE)(20)의 문제점을 해결할 수 있도록 비트마스크(BITMASK)를 기반으로 개별 머클루트(MERKLE ROOT)를 균일하게 분포하고, 네트워크 상에서 같은 데이터를 재사용할 수 있도록 하였다.
특히, 본 발명은 머클트리(MERKLE TREE)(20, 220)에서의 탐색 시간과 메모리 용량을 줄일 수 있도록 비트마스크(BITMASK) 기법을 적용한 것을 특징으로 한다. 이와 같은 비트마스크(BITMASK)의 특징은 공지된 기술이며, 이는 도 10을 참조하여 간략히 설명한다.
먼저, 도 10을 참조하면, "심바"의 해시된 키 값은 52이고, 이는 비트마스킹 기법을 통하여 110100으로 노드의 위치 정보가 표현될 수 있다. 이중 최하위 2비트는 '110100'의 오른쪽 처음 두 비트로서 '00'에 해당된다. 따라서 우측 노드 구조도면을 보면 머클루트(MERKLE ROOT)의 '00' 슬롯의 하단의 노드에 "Simba"의 키값이 보관되는 노드가 연결된다. 반대로 "Simba"의 노드는 최하위 노드에 해당된다.
여기서 새로이 추가 노드로서 키 값인 "Timon"의 해시값은 18 로서 "010010"의 비트마스크(BITMASK)로 표현할 수 있고, "Pumbaa"의 해시값은 10으로서 "001010"의 비트마스크(BITMASK)로 표현할 수 있다. 이와 같은 비트마스크(BITMASK) 값은 우측 노드 구조와 같은 위치를 표현하는 것이다.
즉, "Pumbaa"의 해시값을 표현하는 "001010"의 비트마스크(BITMASK) 값 중 오른쪽 끝에서 두자리는 "10"이고, 다음 2비트는 "10"으로서 해당 슬롯을 따라 우측과 같은 트리 구조를 갖는다.
또한, "Timon"의 해시값을 표현하는 "010010"의 비트마스크(BITMASK) 값 중 오른쪽 두번째 자리는 "10"이고, 다음 두번째 비트는 "00"으로서 해당 슬롯을 따르면 우측과 같은 트리 구조를 갖는다.
비트마스크(BITMASK) 기법은 위와 같이 노드에 대한 추가가 유용하고, 노드의 정보를 압축할 수 있어 메모리의 사용량에 효율적인 것으로 알려져 있다.
또한, 본 발명이 적용하는 비트마스크(BITMASK) 기법은 메모리 소비를 줄이기 위하여 하여 각 노드에 있는 정보를 압축할 수 있다. 이는 공지된 내용에 해당된다.
머클트리(MERKLE TREE)(20)에 사용하는 데이터 블록은 위와 같은 비트마스크(BITMASK) 기법을 적용하여 노드의 위치 정보를 포함하였으며, 이는 도 4를 참조하여 었다.
도 4는 머클트리(MERKLE TREE) 기반의 데이터 블록을 도시한 도면이다.
도 4를 참조하면, 본 발명은 머클트리(MERKLE TREE)(20)의 내부노드(Internal Node)와 리프노드(Leaf Node)를 이루는 제1데이터 블록(311)(도 4의 (a) 참조))과 제2데이터 블록(312)(도 4의 (b) 참조)을 포함할 수 있다.
이와 같은 제1데이터 블록(311)과 제2데이터 블록(312)은 머클트리(MERKLE TREE)(20) 기반으로 자식노드의 객체를 SHA-256을 이용하여 해시한 값을 주소로 갖는다.
여기서 각 노드가 보유한 해시테이블은 데이터 블록의 해시값 리스트를 가지고 있다.
보다 구체적으로 제1데이터 블록(311)과 제2 데이터 블록은 ID, CONTENTENT, META로 구성된다.
이중 제1데이터 블록(311)과 제2데이터 블록(312)의 ID는 블록 내용을 SHA-256으로 해시한 값이다.
또한, 제1데이터 블록(311)의 CONTENTS는 비트마스크(BITMASK)와, 포인터(POINTER)(L, R)를 포함한다. 포인터(POINTER)는 자식노드의 위치를 포함한다.
비트마스크(BITMASK)는 머클트리(MERKLE TREE)(20) 상에서 관련 정보가 저장된 노드를 빠르게 찾을 수 있도록 설정 비트 단위로 구성되어 데이터를 빠르게 연산하는 비트마스크(BITMASK) 기법에 의해 사전에 산출된 연결 노드의 위치 정보 값(키의 해시값을 비트마스크(BITMASK) 기법으로 표현한 것)이다. 이와 같은 비트마스크(BITMASK) 값(비트마스킹 연산결과에 따른 값)은 바이너리 형태(예를 들면, 0 또는 1)로 설정될 수 있다.
또한 비트마스크(BITMASK)는 설정 비트 단위로 구현되며, 각 비트마스크(BITMASK)를 통해 서브트리(21, 22)를 압축하고 블록을 생성 및 연결한다.
즉, 제1데이터 블록(311)은 노드의 위치 정보가 포함된 비트마스크(BITMASK) 값을 포함한다.
제2데이터 블록(312)의 CONTENTS는 KEY/VALUE BINARY 값으로서 정의한 사이즈에 따라 루트 데이터로부터 분산된 데이터의 해시값을 텍스트 형태로 표현한다.
이와 같은 데이터 블록들을 이용한 머클트리(MERKLE TREE)(20) 상의 블록 탐색과정은 도 5 및 도 6을 참조하여 설명한다.
도 5와 도 6은 도 6은 비트마스크(BITMASK)를 통해 머클트리상의 블록 탐색하는 과정을 도시한 블록도이다.
도 5를 참조하면, 본 발명에서 제1데이터 블록(311)과 제2데이터 블록(312)을 이용한 블록 묶음은 머클트리(MERKLE TREE)(20)형태이고, 머클트리(MERKLE TREE)가 2 이상으로 결합되어 머클포레스트(MERKLE FOREST)를 이룬다.
여기서 제1데이터 블록(311)은 부모노드에서 자식노드로 연결하는 중간부분에서 위치되어 자식노드의 위치를 포함하고, 최하위노드인 리프노드(Leaf Node)에는 제2데이터 블록(312)이 포함된다.
이와 같은 제1데이터 블록(311)은 해시값과, 비트마스크(BITMASK), 그리고 자식노드의 위치를 가르키는 포인터를 갖으며, 제2데이터 블록(312)은 서브트리가 없는 위치에서 실제 키와 값을 포함한다.
이와 같이 본 발명에서는 비트마스크(BITMASK)로 연산된 노드의 위치 정보값을 데이터 블럭에 포함하기에 서브트리의 압축과 데이터 블록의 생성 및 연결을 통해 완성되는 머클포레스트의 사이즈를 줄일 수 있게 해준다.
도 6은 도 5의 머클트리(MERKLE TREE)(20)를 보다 직관적으로 표현한 도면으로서, 이를 참조하면, 본 발명에서 스토리지 엔진(200)은 특정 키값의 쿼리(Query)가 발생한 경우 처음으로 요청한 키를 해시 알고리즘을 통해 해시하여 해시값(예를 들면, 도 6의 좌측 루트노드 HASH(ADDRESS))을 산출하고, 사용하는 스토리지의 노드 네트워크상에서 동일한 해시값을 갖는 데이터 블럭(예를 들면, 도 6의 가장 좌측의 루트노드)이 있는 지를 확인한다. 이때, 각 스토리지가 탈중앙화된 네트워크 상에서 데이터 블럭을 찾는 방법은 공지된 Kademlia, Pastry, Tapestry, Chord 등의 분산 해시테이블 기술을 적용할 수 있다. 이를 통해 해당 데이터 블럭이 존재하는 실제 데이터 블록을 저장하는 스토리지 네트워크에 연결된 스토리지 엔진으로 동기화 해온다.
해시테이블은 해시함수를 사용해서 변환한 값을 인덱스(Index)로 삼아 키(KEY)와 값(VALUE)을 저장한다. 여기서 각 노드가 보유한 해시테이블은 데이터 블록의 해시값 리스트를 가지고 있다.
그리고 스토리지 엔진(200은) 내부에서 관리하는 키스페이스(KEYSPACE)의 루트해시값(머클루트(MERKLE ROOT)를 조회하여 머클트리(MERKLE TREE)(20)을 로딩한다. 로딩은 스토리지엔진의 해시값리스트를 먼저 조회하고, 없는 경우 스토리지 네트워크에 루트해시값을 쿼리하여 머클트리에 연결된 모든 데이터블록을 스토리지엔진으로 동기화 해 온다
이후 스토리지 엔진(200)은 머클트리(MERKLE TREE)(20)의 최상단에 위치한 머클루트(MERKLE ROOT)의 조회하는 깊이를 0으로 설정하고, 해시값에 따라 결정된 비트마스크(BITMASK) 값을 통해 입력된 키값에 해당되는 데이터(또는 노드)의 위치 정보를 확인한다. 이때, 머클루트(MERKLE ROOT)의 해당 깊이에 사용되는 비트마스크(BITMASK)는, 예를 들면, (깊이+1) x 비트폭 이다.
여기서 스토리지 엔진(200)은 조회하고자 하는 KEY의 해시값에 따라 결정된 비트마스크(BITMASK) 값과 노드의 데이터 블록에 포함된 비트마스크 값을 비트마스킹 연산(예를 들면, AND, OR, XOR, SHIFT 중 선택된 어느 하나)하여 산출된 비트마스크 연산 결과 값이 0 이라면 조회하고자 하는 키 값이 해당 머클트리(MERKLE TREE)(20)에서 존재하지 않는 것으로 판단하고, 비트마스크 연산 결과 값이 1이라면 포인터를 통해 하위 트리에 데이터가 존재하거나 해당 위치에 존재하는 것으로 판단할 수 있다.
또한, 스토리지 엔진(200)은 위와 같은 과정을 통해 머클루트(MERKLE ROOT)의 자식노드들에 각각 설정된 비트마스크(BITMASK) 값에 따라 조회하고자 하는 비트마스크(BITMASK)의 연산 결과 값(0 또는 1)을 확인한다. 그리고 스토리지 엔진(200)은 비트마스크 연산 결과 값에 따라 쿼리된 데이터 모델이 단일 블럭인지 머클트리인지 확인하여 값이 저장되어있는지 또는 서브 트리로 이동해야하는지 확인 할수 있다.
이때, 스토리지 엔진(200)은 쿼리된 데이터를 찾기 위해 서브트리로 이동해야되면, 머클루트(MERKLE ROOT)의 조회 깊이를 증가시키고 비트마스크(BITMASK)를 시프트(Shift)하여 다음 하위 트리로 이동한다.
스토리지 엔진(200)은 위와 같은 과정을 반복하여 네트워크상에서 찾고자 하는 머클트리(MERKLE TREE)(20) 상의 NON-NULL인 최소한의 데이터를 빠르게 탐색할 수 있다.
이하에서는 본 발명의 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템을 이용한 데이터 처리 방법을 설명한다.
본 발명에 따른 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템을 이용한 데이터 처리 방법은 데이터를 저장 및/또는 수정 단계와, 데이터 쿼리(Query) 단계와, 데이터 삭제 단계를 포함할 수 있다.
데이터의 저장 및/또는 수정 단계는 키와 값을 추가 및/또는 수정하는 과정을 통하여 진행되는 것으로 도 7을 참조하여 설명하고, 데이터 쿼리(Query) 단계는 도 8, 데이터의 삭제는 도 9를 참조하여 설명한다.
도 7은 데이터 저장 및 수정 단계를 도시한 단계를 도시한 순서도이다.
도 7을 참조하면, 본 발명에서 데이터 저장 및 수정 단계는 키스페이스의 머클루트(MERKLE ROOT)값 및 키반의 해시값을 산출하여 분산 해시 테이블을 확인하는 S110 단계와, 머클트리(MERKLE TREE)(20)를 로드 하는 S120 단계와, 비트마스크(BITMASK)의 깊이와 폭을 설정하는 S130 단계와, 비트마스크(BITMASK) 값으로 키값을 검색하는 S140 단계와, 비트마스크를 통해 대상 노드의 존재 여부를 확인하는 S150 단계와, 비트마스킹 연산 결과가 1 이면 데이터 블럭의 모델 타입을 확인하는 S160 단계와, 키 존재 여부를 감지하는 S170 단계와, 값을 추가/수정하는 S180 단계와, 키스페이스 머클루트(MERKLE ROOT)를 업데이트 하는 S190 단계를 포함한다.
S110 단계는 KEY-VALUE DB(10)가 키와 값이 입력되면 키스페이스의 머클루트(MERKLE ROOT)값 및 키갑스이 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계이다.
스토리지 엔진(200)은 KEY-VALUE DB(10)에 저장하고자 하는 키와 값을 해시하여 해시 값을 산출하고, 사용자가 사용하는 탈중앙화 스토리지의 노드 네트워크가 관리하는 분산 해시 테이블에서 같은 해시값을 가진 데이터 블록이 있는지 탐색한다. 데이터 블록의 탐색은 노드 네트워크상에서 그 스토리지에 따라 공지된 기술인 Chord, Kademlia, Pastry, Tapestry 중 어느 하나를 적용할 수 있다.
따라서 스토리지 엔진은 같은 해시값을 가진 데이터 블록을 통해 머클루트를 확인한다.
S120 단계는 스토리지 엔진(200)이 확인 한 머클트리의 머클루트를 기준으로 대응하는 머클트리를 불러내기 하는 단계이다. 여기서 스토리지 엔진(200)은 비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값(머클루트(MERKLE ROOT))을 조회하여 머클트리(MERKLE TREE)(20)를 로딩 한다.
S130 단계는 스토리지 엔진(200)이 입력 키값을 검색하기 위하여 비트마스크(BITMASK)를 설정하는 단계이다. 스토리지 엔진(200)은 머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 사용자에 의해 정의된 값을 가져와 비트마스크(BITMASK)의 깊이와 폭을 설정한다.
비트마스크(BITMASK)의 깊이와 폭은 (깊이+1)*폭(Bitwidth)에 대입되어 위치 정보를 산출한다.
S140 단계는 스토리지 엔진(200)에서 설정된 비트마스크(BITMASK) 값을 통하여 키값을 검색하는 단계이다. 스토리지 엔진(200)은 조회하고자 하는 키를 해시하고 이를 결정된 비트마스크(BITMASK)를 통해 가져온 비트마스킹 연산 값(예를 들면, 0 또는 1)을 통해 해당 키 값이 머클트리(MERKLE TREE)(20)에 존재하는 지를 확인한다.
여기서 비트마스크(BITMASK)의 폭과 깊이는 각 노드가 가르키는 포인터의 갯수와 Key와 Value를 몇개 저장하는 지를 정하는 역할을 수행할 수 있다.
예를 들면 4자리폭의 16진수로 표현되는 FFFF 는 2^16 개수의 항목을 가질 수 있을 것이고 깊이가 1인경우 최소 16 + 1개의 노드를 가지게 된다. 따라서 스토리지 엔진(200)은 이진수 16자리를 마스킹하여 불필요한 노드를 탐사하지 않게 된다.
S150 단계는 스토리지 엔진(200)이 비트마스크 연산 결과 값을 확인하는 단계이다. 스토리지 엔진(200)은 비트마스킹 연산 결과 값이 "1" 이면 키값이 존재하는 것으로 판단한다. 또는 스토리지 엔진(200)이 비트마스킹 연산 결과 값이 "0" 이면, S151 단계를 진행하여 값을 추가하거나 종료할 수 있다.
S160 단계는 스토리지 엔진(200)이 모델 타입을 확인 하는 단계이다. 여기서 모델 타입은 데이터 블럭의 CONTENT를 통해 키 값 또는 다른 노드의 위치 정보가 포함된 비트마스크(BITMASK) 여부를 통해 확인할 수 있다.
여기서 스토리지 엔진(200)은 비트마스크(BITMASK)를 통해 서브트리 정보가 존재하면, S161 단계를 진행하여 머클루트 정보를 가져와서 머클트리를 로드하여 S120 단계부터 반복하게 된다.
S170 단계는 스토리지 엔진(200)에서 해당 데이터 블럭이 키값을 갖는 제2데이터 블럭 타입이 모델이라면, 해당 데이터 블럭에 키 존재여부를 확인하는 단계이다. 스토리지 엔진(200)은 해당 데이터 블럭에 키값이 존재하지 않으면 S171 단계를 진행하여 서브트리를 생성한다. 이와 같은 서브트리 생성은 공지된 기술을 이용함에 따라 그 설명을 생략한다.
S180 단계는 스토리지 엔진(200)이 해당 데이터 블럭 내에 키값이 존재하면 코어 프로세스(100)의 X.509 STORE(120) 기반 인증 결과에 따라 값을 추가 및/또는 수정하는 단계이다. 코어 프로세스(100)는 S181 단계를 진행하여 개별 데이터가 노출되지 않도록 PKI(X.509 STORE(120)) 방식으로 데이터를 처리하여 공용 키(Public key)와 개인 키(Private key)와 같은 인증키를 불러와서 해당 인증키의 유무를 통해 인증하여 그 결과를 스토리지 엔진(200)에 출력한다.
따라서 스토리지 엔진(200)은 코어 프로세스(100)의 인증 결과를 확인하여 값을 추가 또는 수정할 수 있다.
S190 단계는 스토리지 엔진(200)이 수정 및/또는 추가된 값을 갖는 키스페이스 머클루트(MERKLE ROOT)를 업데이트 하는 단계이다. 스토리지 엔진(200)은 추가 또는 수정된 키스페이스 머클루트(MERKLE ROOT)로 업데이트 함에 따라 외부 클라이언트로부터 입력된 키값에 대응하여 수정 또는 추가된 데이터를 제공할 수 있다.
본 발명은 이와 같은 과정을 통해 KEY-VALUE DB(10)에 데이터를 저장하거나, 저장된 데이터를 수정할 수 있다.
도 8은 본 발명에 따른 데이터 쿼리(Query) 단계를 도시한 순서도이다.
도 8을 참조하면, 본 발명에서 쿼리(Query) 단계는 키스페이스의 머클루트(MERKLE ROOT)값 및 키반의 해시값을 산출하여 분산 해시 테이블을 확인하는 S210 단계와, 머클트리(MERKLE TREE)(20)를 로드 하는 S220 단계와, 비트마스크(BITMASK)의 깊이와 폭을 설정하는 S230 단계와, 비트마스크(BITMASK)의 연산결과 값으로 키값을 검색하는 S240 단계와, 비트마스크를 통해 마스킹 연산 과정에서 노드의 존재 유무를 확인하는 S250 단계와, 데이터 블록의 모델 타입을 확인하는 S260 단계와, 키(Key) 존재 여부를 감지하는 S270 단계와, 쿼리(Query)에 대응된 데이터를 변환 및 제공하는 S280 단계를 포함한다.
S210 단계는 KEY-VALUE DB(10)가 쿼리(Query)가 입력되면, 키값의 머클루트(MERKLE ROOT) 및 해시값을 산출하여 사용하는 스토리지 네트워크 상의 분산 해시 테이블을 확인하는 단계이다. 여기서 스토리지 엔진(200)은 Kademlia, Pastry, Tapestry, Chord 등의 기법을 적용할 수 있다.
스토리지 엔진(200)은 SHA256 이나 SHA 512와 같은 해시알고리즘을 적용하여 입력된 쿼리(Query)에 해당되는 키와 값을 해시하여 산출된 해시값에 일치된 노드 네트워크상에 분산된 해시테이블을 확인한다.
S220 단계는 스토리지 엔진(200)이 해시테이블을 참조하여 입력된 키값에 대응된 해시값을 갖는 머클트리(MERKLE TREE)(20)를 사용자가 사전에 정의 및 사용하는 스토리지 네트워크로부터 로드 하는 단계이다. 스토리지 엔진(200)은 비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값(머클루트(MERKLE ROOT))을 조회하여 머클트리(MERKLE TREE)(20)를 로딩한다. 로딩은 스토리지엔진의 해시값리스트를 먼저 조회하고, 없는 경우 스토리지 네트워크에 루트해시값을 쿼리하여 머클트리에 연결된 모든 데이터블록을 스토리지엔진으로 동기화 해 온다
S230 단계는 스토리지 엔진(200)이 입력 키값을 검색하기 위하여 비트마스크(BITMASK)를 설정하는 단계이다. 스토리지 엔진(200)은 머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정한다.
이때, 비트마스크(BITMASK)의 깊이와 폭은 (깊이+1)*폭(Bitwidth)에 대입되어 위치 정보를 산출한다.
S240 단계는 스토리지 엔진(200)이 설정된 비트마스크(BITMASK) 값을 통하여 탐색할 대상 노드를 줄이고 빠르게 키값을 검색하는 단계이다. 스토리지 엔진(200)은 조회하고자 하는 키를 해시하고 이를 결정된 비트마스크(BITMASK)를 통해 가져온 비트마스크 연산 결과 값(예를 들면, 0 또는 1)을 통해 해당 키 값이 머클트리(MERKLE TREE)(20)에 존재하는 지를 확인한다.
여기서 비트마스크(BITMASK)의 폭과 깊이는 각 노드가 가르키는 포인터의 갯수와 Key와 Value를 몇개 저장하는 지를 정하는 역할을 수행할 수 있다.
예를 들면 4자리폭의 16진수로 표현되는 FFFF 는 2^16 개수의 항목을 가질 수 있을 것이고 깊이가 1인경우 최소 16 + 1개의 노드를 가지게 된다. 따라서 스토리지 엔진(200)은 이진수 16자리를 마스킹하여 불필요한 노드를 탐사하지 않게 된다.
S250 단계는 스토리지 엔진(200)이 비트마스크 연산 결과 값을 확인하는 단계이다. 스토리지 엔진(200)은 비트마스크의 연산 결과 값이 "1" 이면 키값이 존재하는 것으로 판단한다. 또는 스토리지 엔진(200)이 비트마스크의 연산 결과 값이 "0"이면, S151 단계를 진행하여 값을 추가하거나 종료할 수 있다.
S260 단계는 스토리지 엔진(200)이 모델 타입을 확인 하는 단계이다. 여기서 모델 타입은 데이터 블럭의 CONTENT에 키 값 또는 다른 노드의 위치 정보가 포함된 비트마스크(BITMASK) 여부를 통해 확인할 수 있다.
그리고 스토리지 엔진(200)은 비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, S261 단계를 진행하여 머클루트 정보를 가져와서 머클트리(MERKLE TREE)(20)를 로드하여 S220 단계부터 반복하여 서브트리 내에서 쿼리된 데이터를 탐색하는 과정을 진행한다.
S270 단계는 스토리지 엔진(200)에서 해당 데이터 블럭이 키값을 갖는 제2데이터 블럭 타입의 모델이라면, 해당 데이터 블럭에 키 존재여부를 확인하는 단계이다. 스토리지 엔진(200)은 해당 데이터 블럭에 키값이 존재하지 않으면 종료한다.
S280 단계는 스토리지 엔진(200)이 해당 데이터 블럭 내에 키값이 존재하면 암호화된 값을 변환하고, 쿼리(Query)를 입력한 사용자 단말에 변환된 값을 출력하는 단계이다.
즉, 본 발명은 머클트리(MERKLE TREE)(20) 내에서 비트마스크(BITMASK)를 적용함에 따라 쿼리(Query) 과정을 단축시킬 수 있다.
도 9는 데이터의 삭제 단계를 도시한 순서도이다.
도 9를 참조하면, 본 발명에서 데이터 삭제 단계는 입력된 삭제 명령에 대응된 키스페이스의 머클루트(MERKLE ROOT) 값 및 해시값을 산출하여 분산 해시 테이블을 확인하는 S310 단계와, 머클트리(MERKLE TREE)(20)를 로딩하는 S320 단계와, 비트마스크(BITMASK)의 깊이와 폭을 설정하는 S330 단계와, 비트마스크(BITMASK)의 연산 결과 값으로 키값을 검색하는 S340 단계와, 비트마스크 연산 결과 값을 확인하여 노드를 검색하는 S350 단계와, 데이터 블록의 모델 타입을 확인하는 S360 단계와, 키(Key) 존재 여부를 감지하는 S370 단계와, 인증 후 키값에 대응된 데이터를 삭제하는 S380 단계와, 머클루트(MERKLE ROOT)를 업데이트 하는 S390 단계를 포함한다.
S310 단계는 KEY-VALUE DB(10)가 삭제 명령이 포함된 키값이 입력되면, 키값에 대응되는 머클루트(MERKLE ROOT) 및 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계이다.
스토리지 엔진(200)은 SHA256이나 SHA 512와 같은 해시 알고리즘을 적용하여 입력된 쿼리(Query)에 해당되는 키와 값을 해시하여 산출된 해시값에 일치된 스토리지 네트워크상에서 분산 해시 테이블을 확인한다. 여기서 각 노드가 보유한 해시테이블은 데이터 블록의 해시값 리스트를 가지고 있다. 따라서 스토리지 엔진은 동일한 해시값을 갖는 노드를 빠르게 탐색하고, 대상 노드가 존재할 경우에 로컬 스토리지 노드로 해당 해시에 연결된 데이터 블록을 가져온다.
S320 단계는 스토리지 엔진(200)이 가져온 데이터 블록에서 입력된 키값에 대응된 해시값(주소)을 갖는 머클트리(MERKLE TREE)(20)를 로드 하는 단계이다. 스토리지 엔진(200)은 비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값(머클루트(MERKLE ROOT))을 조회하여 머클트리(MERKLE TREE)(20)를 로딩한다. 로딩은 스토리지엔진의 해시값리스트를 먼저 조회하고, 없는 경우 스토리지 네트워크에 루트해시값을 쿼리하여 머클트리에 연결된 모든 데이터블록을 스토리지엔진으로 동기화 해 온다
S330 단계는 스토리지 엔진(200)이 입력 키값을 검색하기 위하여 비트마스크(BITMASK)를 설정하는 단계이다. 스토리지 엔진(200)은 머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 설정 파일에서부터 비트마스크(BITMASK)의 깊이와 폭을 설정한다.
이때, 비트마스크(BITMASK)의 깊이와 폭은 (깊이+1)*폭(Bitwidth)에 대입되어 위치 정보를 산출하는 데 사용된다.
S340 단계는 스토리지 엔진(200)이 설정된 비트마스크(BITMASK) 값을 통하여 키값을 검색하는 단계이다. 스토리지 엔진(200)은 조회하고자 하는 키를 해시하고 이를 결정된 비트마스크(BITMASK) 연산을 통해 가져온 비트마스크 연산 결과 값(예를 들면, 0 또는 1)을 통해 해당 키 값이 머클트리(MERKLE TREE)(20)에 존재하는 지를 확인한다.
S350 단계는 스토리지 엔진(200)이 비트마스크 연산 결과 값을 확인하는 단계이다. 스토리지 엔진(200)은 입력된 키값을 표현하는 비트마스크 값과 노드의 데이터 블록에 포함된 비트마스크 값을 마스킹 연산(예를 들면, AND, OR, XOR, SHFT)하여 그 값이 "1" 이면 키값이 존재하는 것으로 판단한다. 또는 스토리지 엔진(200)이 값이 "0"이면, S351 단계를 진행한다.
S351 단계는 스토리지 엔진(200)이 확인된 비트마스크 연산 결과 값이 모두 '0'이면 본 발명에 따른 머클트리(MERKLE TREE)(20) 기반으로한 저장모델 형태의 스토리지 내에 삭제 명령이 입력된 해당 데이터가 존재하지 않는 것으로 판단하여 종료한다. 또는 스토리지 엔진(200)은 모두 '0'이 아니면 S340 단계를 반복하여 키값을 재검색한다.
S360 단계는 스토리지 엔진(200)이 대상 데이터 블록의 모델 타입을 확인 하는 단계이다. 여기서 모델 타입은 데이터 블럭의 CONTENT에 키 값 또는 다른 노드의 위치 정보가 포함된 비트마스크(BITMASK) 여부를 통해 확인할 수 있다.
그리고 스토리지 엔진(200)은 비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, S361 단계를 진행하여 머클루트(MERKLE ROOT) 정보를 가져와서 머클트리(MERKLE TREE)(20)를 로드하여 S320 단계부터 반복하여 서브트리 내에서 삭제 대상인 데이터의 탐색 과정을 진행한다.
S370 단계는 스토리지 엔진(200)이 해당 데이터 블록이 키값을 갖는 제2데이터 블록(312) 타입의 모델이라면, 해당 데이터 블록에 키값의 존재여부를 확인하는 단계이다. 스토리지 엔진(200)은 해당 데이터 블럭에 키값이 존재하지 않으면 종료한다.
S380 단계는 스토리지 엔진(200)이 해당 데이터 블럭 내에 키값이 존재하면 X.509 STORE(120) 기반의 인증을 진행하고, 인증 결과에 따라 대상 데이터를 삭제하는 단계이다.
S390 단계는 스토리지 엔진(200)이 데이터의 삭제에 따른 키스페이스 머클루트(MERKLE ROOT)를 업데이트하는 단계이다.
여기서 KEY-VALUE DB(10)는 데이터가 삭제되거나 수정되어 키스페이스의 머클루트(MERKLE ROOT)가 업데이트되면 변경전 로컬 스토리지와 메모리에 로드된 기존 머클트리(MERKLE TREE)(20)및 네트워크 상에 사용되지 않게되는 머클트리(MERKLE TREE)(20)내의 데이터 블록을 정리한다.
예를 들면, 스토리지 엔진(200)과 코어 프로세스(100)는 데이터 블록의 정리를 위하여 Gabage Collector(230)와 OPLOG(210)와 CRDT(130) 그리고 SYNC(140)를 사용한다.
GARBAGE Collector(230)는 로컬시스템 영역에서 다른노드에 연결되지 않은 머클루트(MERKLE ROOT)를 탐색하여 로컬 메모리와 스토리지에서 삭제하는 작업을 수행한다.
OPLOG(210)는 이러한 작업의 기준점이 되는 히스토리의 관리를 위해 데이터 블록과 머클트리(MERKLE TREE)(20)의 변경사항을 기록한다. 또한 OPLOG(210)는 해당 정보를 다른 노드와 동기화 하여 타 노드에서도 변경사항이 전파되도록 한다.
SYNC(140)는 위와 같은 노드간의 동기화 부분을 수행하여 모든 네트워크 상의 노드가 Eventually consistency, Optimistic replication 를 갖도록 한다.
CRDT(130)는 개별 노드에서 같은 키를 수정하게 되는 경우에 발생되는 Race condition을 제어한다.
위 실시예를 통해 알 수 있듯이 본 발명은 주소기반의 엑세스 방식으로서 다양한 게이트웨이 서비스를 통해 일부 KEY-VALUE 데이터에 엑세스 하기 위해 복잡한 클라이언트를 설치하지 않고 엑세스가 가능하다.
또한, 본 발명은 탈중앙화 데이터베이스 특성상 데이터 복사본이 네트워크에 분산되어 있어 재해 복구에 도움이 되고, 전체데이터베이스를 사용하지 않고도 필요한 부분의 데이터베이스를 활용할 수 있다.
이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, dw본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해 되어서는 안될 것이다.
10 : KEY-VALUE DB
20, 220 : 머클트리
100 : 코어 프로세스
110 : CACHE
120 : X.509 STORE
130 : CRDT
140 : SYNC
200 : 스토리지 엔진
210 : OPLOG
230 : Garbage Collector

Claims (15)

  1. 내부 시스템 영역에 키(KEY)- 값(VALUE) 메소드를 사용하여 데이터를 저장하는 비관계형 데이터베이스인 KEY-VALUE DB;를 포함하고,
    KEY-VALUE DB는
    소켓 또는 API로 연결된 클라이언트로서 키와 값이 입력되면, 입력된 값을 메모리에 저장하고 머클트리(MERKLE TREE)를 기반으로 한 저장 모델 형태로 구성하여 스토리지에 데이터를 저장하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  2. 청구항 1에 있어서, KEY-VALUE DB는
    입력된 데이터를 머클트리(MERKLE TREE) 형태의 데이터로 변환하여 P2P 스토리지 네트워크에 저장하고, 입력된 쿼리에 따라 P2P 스토리지 네트워크에 저장된 데이터를 추가, 수정, 삭제 및 검색을 수행하는 스토리지 엔진; 을 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  3. 청구항 2에 있어서, KEY-VALUE DB는
    자주 사용하는 키와 값을 저장하는 캐시(CACHE); 분산 데이터에 엑세스, 추가, 수정, 삭제를 위한 인증을 수행하는 X.509 STORE; 분산된 참여노드간의 데이터 변경분을 추적하고 동기화 하는 SYNC; 및 분산된 노드간 데이터 경합이 일어났을때 이를 병합 및 순서를 제어하여 실시간으로 변경사항을 제어하는 CRDT(Conflict-Free-Replicated Data Types); 를 포함하는 코어 프로세스를 포함하는 것을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  4. 청구항 2에 있어서, 스토리지 엔진은
    머클트리(MERKLE TREE)의 특정 항목이 변경되면 머클루트(MERKLE ROOT)의 변경 사항을 나열하고 추적 및 전파하는 OPLOG; 및
    사용되지 않는 블록을 설정된 주기에 따라 회수하여 머클트리(MERKLE TREE)의 최신성을 유지하는 Garbage Collector; 를 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  5. 청구항 1에 있어서, 머클트리(MERKLE TREE)는
    자식노드의 객체를 해시한 값을 주소로 갖는 제1데이터 블록과 제2데이터 블록을 포함하고,
    제1데이터 블록은 비트마스크(BITMASK) 기법으로서 하위노드의 위치정보를 표현하는 비트마스크 값를 포함하여 내부노드(Internal Node)를 구성하고,
    제2데이터 블록은 키값이 포함되어 리프노드(Leaf Node)를 구성하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  6. 청구항 5에 있어서, 비트마스크 값은
    키의 해시값을 비트마스크(BITMASK) 기법으로 표현한 것으로서 설정 비트 단위로 구성되어 사전에 산출된 연결 노드의 위치 정보를 포함하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 KEY-VALUE 데이터베이스 시스템.
  7. KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법에 있어서,
    KEY-VALUE DB의 데이터를 저장 또는 수정하는 a)단계는
    a-1)키와 값이 입력되면 키스페이스의 머클루트(MERKLE ROOT)값 및 키값의 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계;
    a-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩(Loading)하는 단계;
    a-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정하는 단계;
    a-4)비트마스크(BITMASK)의 연산 결과 값으로 키값을 검색하는 단계;
    a-4)조회하고자 하는 키를 해시하여 결정된 비트마스크(BITMASK)를 통해 가져온 연산 결과 값을 통해 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하는 단계; 및
    a-5)해당 키값이 데이터 블록에 존재하면, 입력된 키값에 대응하여 추가 또는 수정하고, 머클루트(MERKLE ROOT)를 업데이트 하는 단계; 를 포함하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  8. 청구항 7에 있어서, a-5)단계는
    해당 데이터 블럭 내에 키값이 존재하면 X.509 STORE 기반 인증 결과에 따라 값을 추가 또는 수정하는 것; 을 특징으로 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  9. 청구항 7에 있어서, 입력된 쿼리에 따른 데이터를 조회하는 b) 단계; 를 더 포함하고,
    b) 단계는
    b-1)쿼리(Query)가 입력되면, 입력된 쿼리(Query)에 해당되는 키와 값을 해시하여 산출된 해시값에 일치된 노드 네트워크상에 분산된 해시테이블 및 머클루트를 확인하는 단계;
    b-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩하는 단계;
    b-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 깊이와 폭을 설정하는 단계;
    b-5)조회하고자 하는 키의 해시값에 따라 결정된 비트마스크(BITMASK)의 비트마스크 연산 결과 값을 통해 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하는 단계; 및
    b-6)비트마스크 연산 결과 값을 확인하여 해당 데이터 블록에 대응된 키값이 존재하면, 암호화된 값을 변환하여 로딩하는 단계; 를 포함하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  10. 청구항 9에 있어서, b-5) 단계는
    비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, 머클루트(MERKLE Root) 정보를 가져와서 머클트리(MERKLE TREE)를 로드하여 서브트리 내에서 쿼리된 데이터를 탐색하는 단계; 를 더 포함하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  11. 청구항 7에 있어서, 노드 네트워크에 분산 저장된 데이터를 삭제 또는 수정하는 c) 단계; 를 더 포함하고,
    c) 단계는
    c-1)삭제 명령이 포함된 키값이 입력되면, 키값에 대응되는 머클루트(MERKLE ROOT) 및 머클루트의 각 자식노드들의 해시값을 산출하여 노드 네트워크 상의 분산 해시테이블을 확인하는 단계;
    c-2)비트마스크(BITMASK)의 깊이를 0으로 설정하여 입력된 키가 속한 키스페이스(KEYSPACE)의 루트 해시값을 조회하여 머클트리(MERKLE TREE)를 로딩 단계;
    c-3)머클루트(MERKLE ROOT)에서 해시된 자식노드들의 위치를 조회하기 위하여 비트마스크(BITMASK)의 사전 정의된 깊이와 폭을 설정하는 단계;
    c-5)조회하고자 하는 키를 해시하여 결정된 비트마스크(BITMASK) 연산 결과 값으로 해당 키 값이 머클트리(MERKLE TREE)에 존재하는 지를 확인하고, 키값이 존재하면 X.509 STORE 기반의 인증을 진행하고, 인증 결과에 따라 대상 데이터를 삭제하는 단계;
    c-6)데이터의 삭제에 따른 키스페이스 머클루트(MERKLE ROOT)를 업데이트하는 단계; 를 포함하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  12. 청구항 11에 있어서, c-5) 단계는
    비트마스크(BITMASK)를 통해 서브트리(SUBTREE) 정보가 존재하면, 머클루트 정보를 가져와서 머클트리(MERKLE TREE)를 로드하여 서브트리 내에서 삭제 대상인 데이터의 탐색 과정을 진행하는 것; 을 특징으로 하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  13. 청구항 11에 있어서, c-5) 단계는
    데이터가 삭제되거나 수정되어 키스페이스의 머클루트(MERKLE ROOT)가 업데이트되면 변경전 로컬 스토리지와 메모리에 로드된 기존 머클트리(MERKLE TREE) 및 네트워크 상에 사용되지 않게되는 머클트리(MERKLE TREE) 내의 데이터 블록을 정리하는 것; 을 특징으로 하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  14. 청구항 13에 있어서, KEY-VALUE DB는
    로컬시스템 영역에서 더이상 다른노드에 하나도 연결되지 않은 머클루트(MERKLE ROOT)를 탐색하여 로컬메모리와 스토리지에서 삭제하고,
    작업의 기준점이 되는 히스토리의 관리를 위해 데이터 블록과 머클트리(MERKLE TREE)의 변경사항을 기록하고,
    변경 사항을 다른 노드와 동기화 하여 타 노드에서도 변경사항이 전파되도록 하고,
    노드간의 동기화 부분을 수행하여 모든 네트워크 상의 노드가 Eventually consistency, Optimistic replication를 갖도록 하는 것; 을 특징으로 하는 KEY-VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법.
  15. 컴퓨팅 장치와 결합되어,
    청구항 7의 VALUE 데이터베이스 시스템을 이용한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용하는 방법을 실행시키기 위하여 컴퓨팅 장치로 판독가능한 기록 매체에 저장되는 컴퓨터 프로그램.
KR1020230054818A 2022-09-22 2023-04-26 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램 KR20240041205A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220120310 2022-09-22
KR20220120310 2022-09-22

Publications (1)

Publication Number Publication Date
KR20240041205A true KR20240041205A (ko) 2024-03-29

Family

ID=90483755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230054818A KR20240041205A (ko) 2022-09-22 2023-04-26 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR20240041205A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102490853B1 (ko) 2021-07-16 2023-01-20 주식회사 포그넷 스토리지 기반의 p2p 방식을 통한 파일을 송수신하는 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102490853B1 (ko) 2021-07-16 2023-01-20 주식회사 포그넷 스토리지 기반의 p2p 방식을 통한 파일을 송수신하는 방법 및 시스템

Similar Documents

Publication Publication Date Title
US11520780B2 (en) Distributed database systems and structures
CN103577123B (zh) 一种基于hdfs的小文件优化存储方法
CN102122285B (zh) 一种数据缓存系统中的数据查询系统和数据查询方法
US11169978B2 (en) Distributed pipeline optimization for data preparation
WO2021169113A1 (zh) 数据管理方法、装置、计算机设备和存储介质
US10025808B2 (en) Compacting change logs using file content location identifiers
US11461304B2 (en) Signature-based cache optimization for data preparation
CN113986873B (zh) 一种海量物联网数据模型化的处理、存储与共享方法
CN104077423A (zh) 一种基于一致性散列的结构化数据存储、查询和迁移方法
CN105069111A (zh) 云存储中基于相似性的数据块级数据去重方法
US20140244794A1 (en) Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure
JPWO2013171953A1 (ja) 分散データ管理装置及び分散データ操作装置
EP3362808B1 (en) Cache optimization for data preparation
CN111950025A (zh) 一种基于区块链智能合约的文件分布式存储方法
CN110677461A (zh) 一种基于键值对存储的图计算方法
CN113434094A (zh) 一种基于ipfs的数据文件存储提取方法
CN104516945A (zh) 一种基于关系数据库的hdfs元数据存储方法
KR20240041205A (ko) 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램
Wang et al. The locality of memory checking
Klein et al. Dxram: A persistent in-memory storage for billions of small objects
Bin et al. An efficient distributed B-tree index method in cloud computing
CN113127717A (zh) 一种密钥检索方法和系统
CN112181899A (zh) 一种元数据的处理方法、装置及计算机可读存储介质
CN111782150B (zh) 一种基于对象存储的多桶存储系统及方法
CN113704238B (zh) 基于fpga与区块链技术的数字文件认证方法及系统