KR20140067277A - 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법 - Google Patents

키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법 Download PDF

Info

Publication number
KR20140067277A
KR20140067277A KR1020120134318A KR20120134318A KR20140067277A KR 20140067277 A KR20140067277 A KR 20140067277A KR 1020120134318 A KR1020120134318 A KR 1020120134318A KR 20120134318 A KR20120134318 A KR 20120134318A KR 20140067277 A KR20140067277 A KR 20140067277A
Authority
KR
South Korea
Prior art keywords
value
data
key
field
database
Prior art date
Application number
KR1020120134318A
Other languages
English (en)
Other versions
KR101429046B1 (ko
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 에스코어 주식회사
Priority to KR1020120134318A priority Critical patent/KR101429046B1/ko
Publication of KR20140067277A publication Critical patent/KR20140067277A/ko
Application granted granted Critical
Publication of KR101429046B1 publication Critical patent/KR101429046B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

순방향 색인과 역색인을 동시에 저장하여 데이터의 검색 속도를 향상시키면서, 동시에, 순방향 색인과 역색인의 비동기에 따른 오류의 발생을 방지할 수 있는, 데이터의 검색, 입력, 삭제 및 가비지 컬렉션 방법이 제공된다. 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법은, 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법으로서, (a) 검색 대상 데이터의 필드명 및 필드값을 입력받는 단계, (b) 상기 검색 대상 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터를 상기 데이터베이스에서 검색하는 단계, (c) 상기 검색된 역색인 데이터의 밸류 항목에 포함된 식별값을 키로 가지는 순방향 색인 데이터를 상기 데이터베이스에서 검색하는 단계, 및 (d) 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하되, 상기 검색 대상 데이터의 필드명과 동일한 필드명을 가지는 상기 검색된 순방향 색인 데이터의 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 상기 검색 대상 데이터의 필드값과 동일한 필드값을 가지는 경우에 한하여, 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하는 단계를 포함한다.

Description

키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법{METHOD FOR SEARCHING, INPUTTING, DELETING AND GARBAGE COLLECTING OF DATA IN DATABASE HAVING KEY-VALUE STRUCTURE}
본 발명은, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법에 관한 것으로, 보다 상세하게는 다수의 명령에 의해 동시다발적으로 데이터의 검색, 입력 및 삭제가 수행되는 데이터베이스에서 동시다발적인 명령에 대한 작업의 충돌 없이 데이터를 검색, 입력, 삭제 및 가비지 컬렉션할 수 있는 방법에 관한 것이다.
빅데이터의 시대가 도래하면서 방대한 데이터의 처리가 이슈화되고 있다. 기존의 관계형 데이터베이스(RDB, Relational Database)는 수평적 확장이 용이하지 않고, 관계에 종속되는 스키마(Scheme)를 요구하기 때문에, 방대하고 다양한 형태의 데이터를 저장, 관리하는 데에 적용되기 곤란한 점이 있었다. 이에 대하여, NoSQL 데이터베이스는 확장이 용이하고, 비정형 데이터를 쉽게 저장, 관리할 수 있기 때문에 빅데이터의 시대의 데이터베이스의 주류로 부각되고 있다.
현재 Cassandra, Mongo DB, Riak, H-Base 등의 다양한 종류의 NoSQL 데이터베이스가 제안되었고, 이들 NoSQL 데이터베이스의 대부분은 키-밸류(key-value) 구조를 가지고 있다.
도 1(a)는 이러한 키-밸류 구조를 가지는 데이터의 예를 나타낸다. 도 1(a)의 예에서, 사원번호 '101', '102'는 각각 키가 되고, 각 키에 대하여 콜론(:)으로 종속되는 부분이 밸류가 된다. 즉, 중괄호({ })에 포함된 내용이 각 키에 대한 밸류가 된다. 이와 같이, 키-밸류 구조에서는, 하나의 키에 하나의 밸류가 종속되게 된다. 또한, 하나의 밸류는 하나 이상의 밸류 항목을 가질 수 있다. 도 1(a)의 예에서, "이름 : 홍길동"과 "나이 : 26"은 각각 밸류 항목이 된다. 이때, 각각의 밸류 항목은 '이름' 또는 '나이'라는 필드명과 '홍길동' 또는 '26'이라는 필드값을 키-밸류 구조로 가지고 있다.
이와 같은 키-밸류 구조를 가지는 데이터베이스에서 데이터의 검색은 키에 의존하기 때문에, 밸류에 의존한 검색이 곤란하다. 예를 들어, 도 1(a)에 도시된 데이터에서는, 사원번호가 키가 되므로, 사원번호가 101인 사원의 데이터를 검색하는 것은 용이하나, 이름이 홍길동인 사원 또는 나이가 26세인 사원을 검색하는 것은 밸류에 의존한 검색이 되므로 곤란하게 된다.
이에, 도 1(a)의 데이터의 각각의 밸류 항목을 키로 하고, 도 1(a)의 데이터의 키를 밸류 항목으로 하는, 즉 키-밸류 구조를 반전시킨, 역색인(Inverted Index)를 작성함으로써 밸류 항목에 대한 검색을 용이하게 하려는 시도가 있다.
도 1(a)를 순방향 색인(Forward Index)이라고 할 때, 도 1(b)는 도 1(a)의 순방향 색인의 역색인이 된다. 역색인에서는, 순방향 색인의 밸류 항목을 키로 가지고 있기 때문에, 이름 또는 나이에 의존한 검색이 가능하다. 예를 들어, 나이가 26세인 사원은 도 1(b)의 역색인으로부터 쉽게 검색할 수 있다.
이와 같이, 데이터베이스가 역색인을 가지게 되면, 검색의 속도가 현저하게 빨라진다는 장점이 있다. 그러나, 데이터를 순방향 색인 및 역색인에 모두 저장하여야 하므로 저장 용량의 관점에서 다소 불리한 점이 있고, 특히 순방향 색인과 역색인이 정확하게 상호 동기화되어야 하는 과제가 있다.
그러나, 하나의 데이터에 대하여 순방향 색인과 역색인의 추가, 갱신, 삭제가 엄밀하게 동시에 이루어지지 않기 때문에, 하나의 데이터에 대한 순방향 색인과 역색인 중 어느 하나가 변경된 후 그리고 다른 하나가 변경되기 전에 상기 하나의 데이터에 대한 추가, 갱신, 삭제, 검색이 이루어지는 경우에는, 순방향 색인과 역색인의 비동기에 의한 오류가 발생할 수 있다.
특히, 무수히 많은 데이터를 관리하는 빅데이터에서는, 데이터의 추가, 갱신, 삭제, 검색이 동시다발적으로 이루어질 가능성이 높기 때문에, 순방향 색인과 역색인의 비동기에 의한 오류의 가능성은 높아진다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로, 순방향 색인과 역색인을 동시에 저장하여 데이터의 검색 속도를 향상시키면서, 동시에, 순방향 색인과 역색인의 비동기에 따른 오류의 발생을 방지할 수 있는, 데이터의 검색, 입력, 삭제 및 가비지 컬렉션 방법을 제공하기 위한 것이다.
상술한 과제를 해결하기 위한 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법은, 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법으로서, (a) 검색 대상 데이터의 필드명 및 필드값을 입력받는 단계, (b) 상기 검색 대상 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터를 상기 데이터베이스에서 검색하는 단계, (c) 상기 검색된 역색인 데이터의 밸류 항목에 포함된 식별값을 키로 가지는 순방향 색인 데이터를 상기 데이터베이스에서 검색하는 단계, 및 (d) 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하되, 상기 검색 대상 데이터의 필드명과 동일한 필드명을 가지는 상기 검색된 순방향 색인 데이터의 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 상기 검색 대상 데이터의 필드값과 동일한 필드값을 가지는 경우에 한하여, 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하는 단계를 포함한다.
또한, 상술한 과제를 해결하기 위한 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력하는 방법은, 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력하는 방법으로서, (a) 입력 데이터의 식별값, 필드명 및 필드값을 입력받는 단계, (b) 상기 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고, 상기 입력 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터를 상기 데이터베이스에 입력하는 단계, 및 (c) 상기 (b) 단계가 성공한 경우, 상기 입력 데이터의 식별값를 키로 가지고, 상기 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 상기 데이터베이스에 입력하는 단계를 포함한다.
또한, 상술한 과제를 해결하기 위한 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법은, 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법으로서, (a) 삭제 대상 데이터의 식별값 및 필드명을 입력받는 단계, 및 (b) 상기 삭제 대상 데이터의 식별값를 키로 가지는 순방향 색인 데이터에 대하여, 상기 삭제 대상 데이터의 필드명, 타임스탬프 및 삭제 대상 데이터임을 나타내는 필드값의 조합을 밸류 항목으로 추가하는 단계를 포함한다.
또한, 상술한 과제를 해결하기 위한 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 가비지 컬렉션하는 방법은, 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 가비지 컬렉션하는 방법으로서, (a) 상기 데이터베이스에서의 순방향 색인 데이터가 동일한 필드명을 가지는 2 이상의 밸류 항목을 가지는 경우, 상기 2 이상의 밸류 항목 중 최신의 타임스탬프를 가지지 않는 가비지 밸류 항목의 필드값 및 필드명의 조합을 키로 가지는 역색인 데이터를 상기 데이터베이스에서 검색하는 단계, (b) 상기 검색된 역색인 데이터에서 상기 순방향 색인 데이터의 키를 식별값으로 가지는 밸류 항목을 삭제하는 단계, 및 (c) 상기 순방향 색인 데이터에서 상기 가비지 밸류 항목을 삭제하는 단계를 포함한다.
본 발명에 따르면, 순방향 색인과 역색인을 동시에 저장하여 데이터의 검색 속도를 향상시키면서, 동시에, 데이터의 검색, 입력, 삭제시에 순방향 색인과 역색인의 비동기에 따른 오류의 발생을 방지할 수 있는 효과가 있다.
도 1은 종래의 키-밸류 구조를 가지는 데이터의 예를 나타낸다.
도 2는 본 발명의 실시예에 따른 순방향 색인 데이터의 예를 나타낸다.
도 3은 본 발명의 실시예에 따른 역색인 데이터의 예를 나타낸다.
도 4는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력, 삭제, 검색 및 가비지 컬렉션하는 방법이 수행되는 시스템의 개략적인 구성을 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력하는 방법을 나타내는 흐름도이다.
도 6 내지 도 11은 본 발명의 실시예에 따른 데이터의 입력 과정의 예를 나타낸다.
도 12은 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법을 나타내는 흐름도이다.
도 13은 본 발명의 실시예에 따른 데이터의 삭제 과정의 예를 나타낸다.
도 14는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법을 나타내는 흐름도이다.
도 15a 내지 도 17은 본 발명의 실시예에 따른 데이터의 검색 과정의 예를 나타낸다.
도 18는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 가비지 컬렉션하는 방법을 나타내는 흐름도이다
도 19은 본 발명의 실시예에 따른 가비지 컬렉션하는 과정의 예를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력, 삭제, 검색 및 가비지 컬렉션하는 방법에 대하여 설명한다.
<데이터베이스의 구성>
본 발명에서 사용되는 데이터베이스는 키-밸류 구조를 가지는 데이터베이스이다. 바람직하게는 방대한 양의 데이터를 관리하기 용이하고 확장성이 좋은 NoSQL 데이터베이스일 수 있다. 키-밸류 구조의 데이터베이스의 각각의 데이터는 계층적인 키-밸류 구조를 가질 수 있다. 즉, 하나의 키에 대응하는 하나의 밸류는 키-밸류 구조를 가지는 하나 이상의 밸류 항목으로 구성될 수 있다.
도 2(a)는, 본 발명의 데이터베이스에서 순방향 색인(Forward Index)의 예시적인 스키마를 나타내고, 도 2(b)는 도 2(a)의 스키마를 가지는 예시적인 순방향 색인 데이터를 나타낸다.
도 2(a)를 참조하면, 본 발명의 데이터베이스에서 하나의 데이터 단위로 사용되는 도큐먼트는 하나의 도큐먼트 식별값을 키로 가지고, 하나 이상의 밸류 항목의 집합을 하나의 밸류로 가진다. 각 밸류 항목은 키-밸류 구조를 가지며, 도 2(a)에 도시된 예에서, 필드명과 타임스탬프의 조합이 각 밸류 항목의 키가 되고, 필드값이 각 밸류 항목의 밸류가 된다. 여기에서, 타임스탬프는 데이터가 입력된 때를 나타내는 값이고, 보다 구체적으로는, 밸류 항목, 즉, 필드명과 필드값이 입력된 때를 나타내는 값이다.
키-밸류의 데이터베이스는 키에 의존적이기 때문에, 동일 계층 내에서 동일한 키를 가지는 2 이상의 데이터가 존재할 수 없다. 예를 들어, 도 2의 '<Document ID A>'의 밸류 계층에서, '<Field Name A>'를 키로 가지는 2 이상의 밸류 항목이 존재할 수 없다. 그러나, 데이터의 입력이 동시다발적으로 발생하는 빅데이터에 있어서, 동일한 키를 가지는 데이터가 발생할 가능성이 있다.
예컨대, 도 2(b)에 도시된 예와 같이, 사원번호 '101'의 도큐먼트에 대하여, 'ts1'의 시간에 '이름 : 둘리'라는 필드 데이터가 입력되었고, 'ts2'의 시간에 '이름 : 홍길동'이라는 필드 데이터가 입력되었다고 가정하자. 만일, 각 밸류 항목의 키가 필드명으로만 이루어진다면, 사원번호 '101'의 도큐먼트에 대하여 '이름'이라는 키를 가지는 밸류 항목이 2 이상 존재할 수 없다. 그러나, 도 2(b)의 예에서는, 각 밸류 항목이 필드명과 타임스탬프의 조합을 키로 가지기 때문에, 사원번호 '101'의 도큐먼트에 대하여 '이름 : 둘리'라는 필드 데이터와 '이름 : 홍길동'이라는 필드 데이터가 동시에 존재할 수 있게 된다.
도 3(a)는 도 2(a)의 순방향 색인를 반전시킨 역색인(Inverted Index)의 예시적인 스키마를 나타내고, 도 3(b)는 도 2(b)의 순방향 색인 데이터에 대한 역색인 데이터를 나타낸다.
역색인에서는, 순방향 색인의 밸류 항목이 되었던 필드명 및 필드값의 조합이 키로 되고, 순방향 색인의 키가 되었던 도큐먼트 식별값이 밸류 항목이 된다. 보다 구체적으로는, 밸류 항목은 도큐먼트 식별값 및 타임스탬프의 조합이 밸류 항목의 키가 된다.
도 2(b)에 예시된 순방향 색인 데이터는 순방향 색인 데이터베이스에, 도 3(b)에 예시된 역색인 데이터는 역색인 데이터베이스에 서로 분리되어 저장될 수도 있고, 순방향 색인 데이터와 역색인 데이터가 동일한 데이터베이스에 저장될 수도 있다.
<시스템의 구성>
도 4는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력, 삭제, 검색 및 가비지 컬렉션하는 방법이 수행되는 시스템의 개략적인 구성을 나타내는 블록도이다.
시스템(100)은 데이터 입력부(110), 데이터 검색부(120), 가비지 컬렉션부(130) 및 데이터베이스(140)를 포함한다. 시스템(100)은 네트워크를 통하여 사용자의 단말기(200)와 연결되어, 입력 데이터, 삭제 대상 데이터 또는 검색 대상 데이터를 입력받을 수 있다. 또한, 시스템(100)은 네트워크 상의 임의의 단말기 또는 서버(300)와 연결되어 크롤러(crawler) 등에 의해 입력 데이터를 입력받을 수 있다.
본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력 및 삭제하는 방법은 기본적으로 데이터의 추가 연산으로 수행된다. 따라서, 데이터의 입력 및 삭제가 각각 별도의 모듈 또는 엔진에 의하여 수행될 필요가 없고, 이들 모두가 데이터 입력부(110)에 의하여 수행될 수 있다.
데이터 입력부(110), 데이터 검색부(120), 가비지 컬렉션부(130) 및 데이터베이스는 하나의 물리적 장치로 구성될 수도 있고, 복수의 장치의 결합으로 구성될 수 있다. 특히, 데이터베이스(140)는 복수의 장치가 네트워크를 통해 연결된 분산 데이터베이스로 구성될 수도 있다.
또한, 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력, 삭제, 검색 및 가비지 컬렉션하는 방법은 시스템의 하드 디스크 등의 기록 매체에 수록된 컴퓨터 프로그램에 의해 수행될 수 있다.
<데이터의 추가 방법>
도 5는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력하는 방법을 나타내는 흐름도이고, 도 6은 본 발명의 실시예에 따른 데이터의 입력 과정의 예를 나타낸다. 도 6은 도 2(b) 및 도 3(b)에 예시된 순방향 색인 데이터 및 역색인 데이터를 도식적으로 나타내고 있다.
먼저, 데이터 입력부는 입력 데이터의 식별값, 필드명 및 필드값을 입력받는다(S110). 입력 데이터의 식별값, 필드명 및 필드값은 사용자에 의하여 입력될 수도 있고, 크롤러(crawler) 등에 의해 네트워크에 접속된 임의의 단말기 또는 서버에서 수집되어 입력될 수도 있다. 도 6의 예에서는, 도 2(b) 및 도 3(b)에 예시된 순방향 색인 데이터 및 역색인 데이터를 저장하고 있는 데이터베이스에 사원번호(식별값)가 '103', 이름(필드명)이 '도우너'(필드값), 나이(필드명)가 '28'(필드값)인 입력 데이터가 입력된다.
이때, 입력 데이터를 입력하는 때를 나타내는 타임스탬프는 '<ts 4>'라고 가정한다. 타임스탬프는, 사용자의 입력 또는 크롤러의 입력이 데이터 입력부에 도달했을 때의 날짜 및 시간에 따라 생성될 수도 있고, 사용자 단말기 또는 크롤러에서 데이터 입력부로 입력을 전송했을 때의 날짜 및 시간에 따라 생성될 수도 있다.
데이터 입력부는 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고, 입력 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터를 데이터베이스에 추가한다(S120). 예를 들어, 도 6에서는, "이름=도우너"를 키로 가지고, 사원번호 '103'과 타임스탬프 '<ts 4>'의 조합을 밸류로 가지는 역색인 데이터 및 "나이=28"을 키로 가지고, 사원번호 '103'과 타임스탬프 '<ts 4>'의 조합을 밸류로 가지는 역색인 데이터가 데이터베이스에 추가된다(S120).
역색인 데이터의 추가가 성공하면, 데이터 입력부는 입력 데이터의 식별값을 키로 가지고, 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 데이터베이스에 추가한다(S130). 예를 들어, 도 6a에서는, 사원번호 '103'을 키로 가지고, '이름', '<ts 4>'와 '도우너'의 조합 및 '나이', '<ts 4>'와 '28'의 조합을 각각 밸류 항목으로 가지는 순방향 색인 데이터가 데이터베이스에 추가된다(S130).
역색인 데이터의 추가가 실패한 경우, 데이터 입력부는 순방향 색인 데이터를 데이터베이스에 추가하지 않고, 데이터 추가 실패 정보를 반환한다(S140). 또한, 순방향 색인 데이터의 추가가 실패한 경우에도, 데이터 추가 실패 정보를 반환한다(S140). 데이터 입력부는 역색인 데이터의 추가와 순방향 색인 데이터의 추가가 모두 성공한 때에만, 데이터 추가 성공 정보를 반환한다(S150).
도 7은 본 발명의 실시예에 따른 데이터의 입력 과정의 다른 예를 나타낸다.
입력 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터를 데이터베이스에 추가함에 있어서, 입력 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터가 데이터베이스에 기존재하는 경우에는, 데이터 입력부는 입력 데이터의 식별값 및 타임스탬프를 기존재하는 역색인 데이터의 밸류 항목으로 추가한다. 예를 들어, 도 7에는 사원번호가 '103', 이름이 '도우너', 나이가 '26'인 입력 데이터가 입력된다. 이때, "나이=26"을 키로 가지는 역색인 데이터가 데이터베이스에 기존재하므로, 데이터 입력부는 사원번호 '103'과 타임스탬프 '<ts 4>'의 조합을 "나이=26"를 키로 가지는 역색인 데이터의 밸류 항목으로 추가한다.
역색인 데이터의 추가가 성공하면, 데이터 입력부는 입력 데이터의 식별값을 키로 가지고, 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 데이터베이스에 추가한다. 이는 도 7의 예에서 설명한 바와 동일한다.
도 8은 본 발명의 실시예에 따른 데이터의 입력 과정의 또 다른 예를 나타낸다. 도 8에서는, 사원번호가 '102', 성별(필드명)이 '여성'(필드값)인 입력 데이터가 입력된다.
도 6 및 도 7의 예에서 설명한 바와 마찬가지로, 데이터 입력부는 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고, 입력 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터를 데이터베이스에 추가한다. 즉, 도 8의 예에서, "성별=여성"을 키로 가지고, 사원번호 '102'과 타임스탬프 '<ts 4>'의 조합을 밸류로 가지는 역색인 데이터가 데이터베이스에 추가된다.
이후, 데이터 입력부는 입력 데이터의 식별값을 키로 가지는 순방향 색인 데이터를 데이터베이스에 추가한다. 이때, 입력 데이터의 식별값을 키로 가지는 순방향 색인 데이터가 데이터베이스에 기존재하는 경우, 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 기존재하는 순방향 색인 데이터의 밸류 항목으로 추가한다. 즉, 도 8의 예에서, 사원번호 '102'를 키로 가지는 순방향 색인 데이터가 데이터베이스에 기존재하기 때문에, '성별', '<ts 4>'와 '여성'의 조합을 기존재하는 순방향 데이터의 밸류 항목으로 추가한다.
도 9는 동일한 내용을 가지는 2 이상의 입력 데이터가 입력되는 예를 나타낸다. 도 9의 예에서는, 사원번호가 '103', 이름이 '도우너', 나이가 '28'인 제 1 입력 데이터가 '<ts 4>'의 타임스탬프를 가지고 입력되고, 이와 동일한 내용의 제 2 입력 데이터가 '<ts 4>' 보다 최신의 타임스탬프인 '<ts 5>'를 가지고 입력된다. 즉, 동일한 식별값, 필드명, 필드값을 가지는 제 1 입력 데이터와 제 2 입력 데이터가 서로 다른 타임스탬프를 가지고 입력될 수 있다. 이와 같이 동일한 데이터가 중복하여 입력되는 것은, 다수의 크롤러가 동일한 데이터를 크롤하여 입력하는 경우에 발생할 수 있다.
이때, 크롤러와 데이터 입력부 사이 또는 데이터 입력부와 데이터베이스 사이의 네트워크 문제 등에 의하여, 제 2 입력 데이터에 대한 역색인 데이터가 제 1 입력 데이터에 대한 역색인 데이터보다 먼저 입력될 수 있다. 즉, 제 1 입력 데이터에 대한 역색인 데이터가 입력될 때, 데이터베이스에 제 1 입력 데이터의 필드값 및 필드명의 조합을 키로 가지고, 제 1 입력 데이터의 식별값에 대응되는 밸류 항목을 가지는 역색인 데이터가 데이터베이스에 기존재할 수 있다.
이 경우에는, 제 1 입력 데이터의 타임스탬프가 기존재하는 역색인 데이터의 밸류 항목의 타임스탬프보다 최신의 것인 경우에 한하여, 데이터 입력부는 제 1 입력 데이터의 식별값 및 타임스탬프의 조합을 역색인 데이터의 밸류 항목으로 추가한다.
만일, 제 1 입력 데이터의 타임스탬프가 기존재하는 역색인 데이터의 밸류 항목의 타임스탬프보다 최신의 것이 아닌 경우에는, 데이터 입력부는 제 1 입력 데이터의 식별값 및 타임스탬프의 조합을 역색인 데이터의 밸류 항목으로 추가하지 않고, 제 1 입력 데이터에 대한 역색인 데이터 추가 실패 정보를 반환한다. 즉, 도 6d의 예에서, ③의 과정은 수행되지 않는다. 또한, 이 경우, 제 1 입력 데이터에 대한 역색인 데이터의 추가가 실패하였으므로, 제 1 입력 데이터에 대한 순방향 색인 데이터의 추가도 일어나지 않는다.
도 10은 동일한 식별값을 가지는 2 이상의 입력 데이터가 입력되는 예를 나타낸다. 도 10의 예에서는, 사원번호가 '103', 이름이 '도우너', 나이가 '28'인 제 1 입력 데이터가 '<ts 4>'의 타임스탬프를 가지고 입력되고, 사원번호가 '103', 이름이 '고길동', 나이가 '30'인 제 2 입력 데이터가 '<ts 4>' 보다 최신의 타임스탬프 '<ts 5>'를 가지고 입력된다.
이때, 데이터 입력부와 데이터베이스 사이의 네트워크 문제 등에 의하여, 제 2 입력 데이터에 대한 순방향 색인 데이터가 제 1 입력 데이터에 대한 순방향 색인 데이터보다 먼저 입력될 수 있다. 즉, 제 2 입력 데이터에 비하여 이전의 타임스탬프를 가지는 제 1 입력 데이터에 대한 순방향 색인 데이터가 입력될 때, 데이터베이스에 제 1 입력 데이터의 식별값과 동일한 식별값을 가지고 제 1 입력 데이터의 필드명 및 필드값의 조합에 대응되는 밸류 항목을 가지는 순방향 색인 데이터가 데이터베이스에 기존재할 수 있다.
이 경우에는, 제 1 입력 데이터의 타임스탬프가 기존재하는 순방향 색인 데이터의 대응되는 밸류 항목의 타임스탬프보다 최신의 것인 경우에 한하여, 제 1 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 기존재하는 순방향 색인 데이터의 밸류 항목으로 추가한다.
만일, 제 1 입력 데이터의 타임스탬프가 기존재하는 순방향 색인 데이터의 대응되는 밸류 항목의 타임스탬프보다 최신의 것이 아닌 경우에는, 데이터 입력부는 제 1 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 기존재하는 순방향 색인 데이터의 밸류 항목으로 추가하지 않고, 제 1 입력 데이터에 대한 순방향 색인 데이터 추가 실패 정보를 반환한다. 즉, 도 10의 예에서 ④의 과정은 수행되지 않는다.
<데이터의 갱신>
도 11은 본 발명의 실시예에 따른 데이터의 갱신 과정의 예를 나타낸다. 도 11의 예에서, 사원번호가 '102'인 사원의 이름 및 나이가 각각 '심청' 및 '26'에서, '고길동' 및 '30'으로 갱신된다.
본 발명에서 데이터의 갱신은 데이터의 추가와 동일한 프로세스로 진행된다. 즉, 데이터 입력부는 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고, 입력 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터를 데이터베이스에 추가하고(S120), 역색인 데이터의 추가가 성공하면, 데이터 입력부는 입력 데이터의 식별값을 키로 가지고, 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 데이터베이스에 추가한다(S130).
도 11의 예에서는, "이름=고길동"를 키로 가지고, 사원번호 '102'과 타임스탬프 '<ts 4>'의 조합을 밸류로 가지는 역색인 데이터 및 "나이=30"을 키로 가지고, 사원번호 '102'과 타임스탬프 '<ts 4>'의 조합을 밸류로 가지는 역색인 데이터가 데이터베이스에 추가된다(S120). 이후, 사원번호 '102'를 키로 가지고, '이름', '<ts 4>'와 '고길동'의 조합 및 '나이', '<ts 4>'와 '30'의 조합을 각각 밸류 항목으로 가지는 순방향 색인 데이터가 데이터베이스에 추가된다(S130).
즉, 역색인 데이터 및 순방향 색인 데이터 양쪽에 대하여, 최신의 타임스탬프를 가지는 밸류 항목을 추가하기만 함으로써 데이터의 갱신이 완료될 수 있다. 이때, 이전의 타임스탬프를 가지는 밸류 항목은 후술하는 검색 방법에 의하여 검색 결과에서 제외되므로, 실제로는 데이터의 추가가 이루어졌음에도, 사용자에게는 데이터가 갱신된 것으로 보여지게 된다. 또한, 이전의 타임스탬프를 가지는 밸류 항목은 후술하는 가비지 컬렉션에 의해 제거될 수 있다.
<데이터의 삭제 방법>
도 12는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법을 나타내는 흐름도이고, 도 13은 본 발명의 실시예에 따른 데이터의 삭제 과정의 예를 나타낸다. 도 13의 예에서, 사원번호가 '102'인 사원의 나이 필드가 삭제된다.
본 발명에서 데이터의 삭제는 데이터의 추가를 이용하여 진행된다. 데이터 입력부는 삭제 대상 데이터의 식별값 및 필드명을 입력받는다(S210). 이후, 데이터 입력부는 삭제 대상 데이터의 식별값를 키로 가지는 순방향 색인 데이터에 대하여, 삭제 대상 데이터의 필드명, 타임스탬프 및 삭제 대상 데이터임을 나타내는 필드값의 조합을 밸류 항목으로 추가한다(S220).
이때, 삭제 대상 데이터의 타임스탬프는 삭제 대상 데이터의 식별값 및 필드명이 데이터 입력부에 입력된 때의 날짜 및 시간을 나타내는 값이다. 또한, 삭제 대상 데이터임을 나타내는 필드값은 기설정된 값일 수 있고, 예를 들어, 널(null)일 수 있다.
데이터 입력부는 S220 단계가 성공하면 데이터 삭제 성공 정보를 반환하고(S230), S220 단계가 실패하면 데이터 삭제 실패 정보를 반환한다(S240).
이와 같이, 순방향 색인 데이터에 삭제 대상 데이터의 필드명, 타임스탬프 및 기설정된 값을 가지는 밸류 항목을 추가하기만 함으로써 삭제 과정은 완료될 수 있다. 이때, 이전의 타임스탬프를 가지는 밸류 항목은 후술하는 검색 방법에 의하여 검색 결과에서 제외되므로, 실제로는 데이터의 추가가 이루어졌음에도, 사용자에게는 데이터가 삭제된 것으로 보여지게 된다. 또한, 데이터 입력부는, 삭제 대상 데이터의 식별값을 가비지 큐에 입력하여 둘 수 있고, 이전의 타임스탬프를 가지는 밸류 항목은 후술하는 가비지 컬렉션에 의해 제거될 수 있다.
또한, 위의 예에서, 삭제 대상 데이터의 식별값 및 필드명을 입력받는 것으로 설명하였으나, 본 발명의 다른 실시예에 따른 데이터의 삭제 방법에서는, 삭제 대상 데이터의 식별값만을 입력받도록 구성될 수도 있다. 이후, 삭제 대상 데이터의 식별값을 키로 가지는 순방향 색인 데이터의 밸류 항목에 포함된 모든 필드명에 대하여 삭제 대상 데이터임을 나타내는 필드값(예를 들어, null)을 가지는 밸류 항목을 추가할 수도 있다.
<데이터의 검색 방법>
도 14는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법을 나타내는 흐름도이고, 도 15a 내지 도 15b는 본 발명의 실시예에 따른 데이터의 검색 과정의 예를 나타낸다.
먼저, 데이터 검색부는 검색 대상 데이터의 필드명 및 필드값을 입력받는다(S310). 도 15a의 예에서는, 검색 대상 데이터의 필드명으로 '나이', 필드값으로 '30'이 입력된다.
데이터 검색부는 검색 대상 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터를 데이터베이스에서 검색하고(S320), 검색된 역색인 데이터의 밸류 항목을 추출한다(S330). 도 15a의 예에서는, 식별값 '101'과 타임스탬프 '<ts 1>'을 가지는 밸류 항목 및 식별값 '103'와 타임스탬프 '<ts 5>'를 가지는 밸류 항목이 추출된다.
이후, 데이터 검색부는 추출된 밸류 항목에 포함된 식별값을 키로 가지는 순방향 색인 데이터를 상기 데이터베이스에서 검색하고(S340), 검색된 순방향 색인 데이터를 검색 결과로서 반환한다(S350). 도 15b의 예에서는, '101'을 키로 가지는 순방향 색인 데이터와 '103'을 키로 가지는 순방향 색인 데이터가 검색 결과가 된다.
이때, 도 15b의 예에서 '101'을 키로 가지는 순방향 색인 데이터에는 검색 대상 데이터의 필드명인 '나이'를 가지는 밸류 항목이 2개 존재한다. "나이 <ts 1> : 30"과 "나이 <ts 2> : 26"이 그것들이다. 여기에서, "나이 <ts 1> : 30"은 "나이 <ts 2> : 26" 보다 이전의 타임스탬프를 가지므로, 갱신된 구 데이터임을 알 수 있다. 본 발명에서는 갱신된 구 데이터를 데이터베이스에서 즉시 삭제하지 않고 가비지 컬렉션을 이용하여 추후에 삭제하기 때문에, 데이터베이스에 구 데이터가 존재할 수 있다. 도 15a 내지 15b의 예에서, "나이=30"을 기준으로 검색하였으나, '101'을 키로 가지는 순방향 색인 데이터는 구 데이터에 의해 검색된 것이므로 검색 결과에서 제외되어야 한다.
따라서, 데이터 검색부는 검색 대상 데이터의 필드명과 동일한 필드명를 가지는 검색된 순방향 색인 데이터의 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 검색 대상 데이터의 필드값과 동일한 필드값을 가지는 경우에 한하여, 검색된 순방향 색인 데이터를 검색 결과로서 반환한다(S350).
즉, '101'을 키로 가지는 순방향 색인 데이터는, '나이'를 필드명으로 가지는 밸류 항목 중에서 최신의 타임스탬프를 가지는 밸류 항목 "나이 <ts 2> : 26"의 필드값이 검색 대상 데이터의 필드값 '26'과 동일하지 않기 때문에 검색 결과에서 제외된다(S360). 따라서, '103'을 키로 가지는 순방향 색인 데이터만 검색 결과에 포함되게 된다(S350).
또한, 검색된 순방향 색인 데이터의 밸류 항목 중 검색 대상 데이터의 필드명과 동일한 필드명을 가지는 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 상기 검색 대상 데이터의 필드값과 동일한 필드값을 가지지 않는 경우에는, 데이터 검색부는 추출된 역색인 데이터의 밸류 항목 중에서 검색 결과에서 제외된 순방향 데이터의 키를 식별값으로 가지는 밸류 항목을 삭제한다(S370). 즉, 도 9c의 예에서, 추출된 역색인 데이터의 밸류 항목 중 식별값 '101'과 타임스탬프 '<ts 1>'을 가지는 밸류 항목은 삭제되어야 할 구 데이터이므로, 역색인 데이터에서 식별값 '101'과 타임스탬프 '<ts 1>'을 가지는 밸류 항목이 삭제된다.
도 16a 내지 도 16b는 데이터를 검색하는 다른 예를 나타낸다. 도 16a의 예에서는, 검색 대상 데이터의 필드명으로 '나이', 필드값으로 '26'이 입력된다.
데이터 검색부는 필드명과 필드값의 조합인 "나이=26"을 키로 가지는 역색인 데이터를 데이터베이스에서 검색하고, 검색된 역색인 데이터의 밸류 항목인 "101 <ts2>"와 "102 <ts3>"를 추출한다.
이후, 데이터 검색부는 '101'을 키로 가지는 순방향 색인 데이터와 '102'를 키로 가지는 순방향 색인 데이터를 검색한다. 이때, 도 10b의 예에서 '101'을 키로 가지는 순방향 색인 데이터에는 '이름'을 필드명으로 가지는 밸류 항목과, '나이'를 필드명으로 가지는 밸류 항목이 2개씩 존재한다. 이와 같이, 동일한 필드명을 가지는 밸류 항목 중 타임스탬프가 최신의 것이 아닌 밸류 항목은 가비지 컬렉션에 의해 삭제되어야 할 밸류 항목이다. 따라서, 데이터 검색부는, 동일한 필드명을 가지는 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목만을 검색 결과로서 반환한다. 즉, "이름 <ts 2> : 홍길동", "나이 <ts 2> : 26"의 밸류 항목만이 검색 결과에 포함되고, "이름 <ts 1> : 둘리", "나이 <ts 1> : 30"의 밸류 항목은 검색 결과에 포함되지 않는다.
도 17은 데이터를 검색하는 또 다른 예를 나타낸다. 데이터 검색부는 검색 대상 데이터의 식별값의 범위를 추가적으로 입력받을 수 있다. 도 17의 예에서는, 검색 대상 데이터의 식별값의 범위로 '102~105', 필드명으로 '나이', 필드값으로 '26'이 입력된다.
데이터 검색부는 필드명과 필드값의 조합인 "나이=26"을 키로 가지는 역색인 데이터를 데이터베이스에서 검색한다. 검색된 역색인 데이터는 "101 <ts2>"와 "102 <ts3>"를 밸류 항목으로 가진다. 이때, "101 <ts2>"의 밸류 항목에 포함된 식별값은 검색 대상 데이터의 식별값의 범위에 포함되지 않는다.
따라서, 데이터 검색부는, '101'을 키로 가지는 순방향 색인 데이터는 검색하지 않고, '102'를 키로 가지는 순방향 색인 데이터만을 데이터베이스에서 검색한다. 이후의 과정은 앞서 설명한 과정과 동일하다.
< 가비지 컬렉션 방법>
도 18는 본 발명의 실시예에 따른 키-밸류 구조를 가지는 데이터베이스에서 데이터를 가비지 컬렉션하는 방법을 나타내는 흐름도이고, 도 19은 본 발명의 실시예에 따른 가비지 컬렉션하는 과정의 예를 나타낸다.
가비지 컬렉션부는 임의의 순방향 색인 데이터에 대하여 동일한 필드명을 가지는 밸류 항목이 2 이상 존재하는지 여부를 조사한다(S410). 동일한 필드명을 가지는 밸류 항목 중 최신의 타임스탬프를 가지지 않는 밸류 항목을 추출한다(S420). 추출된 밸류 항목은 가비지 컬렉션의 대상인 가비지 밸류 항목이 된다. 도 19의 예에서는, '102'를 키로 가지는 순방향 색인 데이터 중 "나이 <ts 3> : 26"의 밸류 항목은 가비지 밸류 항목이 된다.
가비지 컬렉션부는 가비지 밸류 항목의 필드값 및 필드명의 조합을 키로 가지는 역색인 데이터를 데이터베이스에서 검색하고(S430), 검색된 역색인 데이터의 밸류 항목 중 가비지 밸류 항목에 대한 순방향 색인 데이터의 키를 식별값으로 가지는 밸류 항목을 삭제한다(S440). 도 19의 예에서는, "나이=26"을 키로 가지는 역색인 데이터의 밸류 항목 중 '102'를 키로 가지는 밸류 항목이 삭제된다.
이후, 가비지 컬렉션부는 순방향 색인 데이터에서 가비지 밸류 항목을 삭제한다(S450). 즉, 도 19의 예에서, '102'를 키로 가지는 순방향 색인 데이터에서 "나이 <ts 3> : 26"의 밸류 항목이 삭제된다.
이와 같이, 중복되는 필드명을 가지는 밸류 항목에 대하여, 상술한 방법으로 밸류 항목을 하나씩 삭제하여, 최신의 타임스탬프를 가지는 밸류 항목만을 유지할 수 있게 된다.
한편, 도 19의 예에서, '나이'를 필드명으로 가지는 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목의 필드값은 'null'로 되어 있다. 즉, '나이' 필드는 상술한 삭제 방법에 의하여 삭제된 필드이므로, 'null'을 필드값으로 가지고 있는 밸류 항목도 가비지 컬렉션의 대상이 된다. 따라서, 가비지 컬렉션부는 순방향 색인 데이터에서 'null'을 필드값으로 가지는 밸류 항목을 삭제한다(S460).
상술한 예에서는, 가비지 컬렉션부가 임의의 순방향 색인 데이터에 대하여 동일한 필드명을 가지는 밸류 항목이 2 이상 존재하는지 여부를 조사하는 것으로 설명하였다. 그러나, 가비지 큐에 저장된 식별값을 키로 가지는 순방향 색인 데이터에 대하여 가비지 컬렉션을 수행하도록 구성할 수도 있다.
상술한 본 발명의 키-밸류 구조를 가지는 데이터베이스에서 데이터를 추가, 갱신, 삭제하는 방법은 내부적으로는 데이터의 추가 연산만으로 수행되고, 내부적으로 데이터를 수정하는 과정을 수행하지 않기 때문에, 동시 다발적으로 추가, 갱신, 삭제가 요청되어도 서로에 대한 충돌 등의 오류 없이 데이터의 추가, 갱신, 삭제가 가능하게 된다.
또한, 데이터가 갱신, 삭제되는 경우에, 실질적인 데이터의 삭제는 추후에 가비지 컬렉션 등을 이용하여 수행되고, 사용자에게는 데이터가 추가된 때에 작업이 완료된 것으로 보여지므로, 사용자 입장에서의 작업의 수행 속도가 빠른 효과가 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (14)

  1. 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법으로서,
    (a) 검색 대상 데이터의 필드명 및 필드값을 입력받는 단계,
    (b) 상기 검색 대상 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터를 상기 데이터베이스에서 검색하는 단계,
    (c) 상기 검색된 역색인 데이터의 밸류 항목에 포함된 식별값을 키로 가지는 순방향 색인 데이터를 상기 데이터베이스에서 검색하는 단계, 및
    (d) 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하되, 상기 검색 대상 데이터의 필드명과 동일한 필드명을 가지는 상기 검색된 순방향 색인 데이터의 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 상기 검색 대상 데이터의 필드값과 동일한 필드값을 가지는 경우에 한하여, 상기 검색된 순방향 색인 데이터를 검색 결과로서 반환하는 단계를 포함하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법.
  2. 제 1 항에 있어서,
    상기 (d) 단계는,
    상기 검색 결과로서의 순방향 색인 데이터의 밸류 항목 중 동일한 필드명을 가지는 밸류 항목이 2 이상 존재하는 경우, 최신의 타임스탬프를 가지는 밸류 항목만을 상기 검색 결과에 포함시키는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법.
  3. 제 1 항에 있어서,
    상기 (d) 단계는,
    상기 검색 대상 데이터의 필드명과 동일한 필드명을 가지는 상기 검색된 순방향 색인 데이터의 밸류 항목 중 최신의 타임스탬프를 가지는 밸류 항목이 상기 검색 대상 데이터의 필드값과 동일한 필드값을 가지지 않는 경우에는, 상기 검색된 역색인 데이터의 밸류 항목 중에서 상기 검색된 순방향 데이터의 키를 식별값으로 가지는 밸류 항목을 삭제하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법.
  4. 제 1 항에 있어서,
    상기 (a) 단계는,
    검색 대상 데이터의 식별값의 범위를 입력받는 단계를 포함하고,
    상기 (c) 단계는,
    상기 검색된 역색인 데이터의 밸류 항목에 포함된 식별값 중 상기 검색 대상 데이터의 식별값의 범위에 해당하는 식별값을 키로 가지는 순방향 색인 데이터를 상기 데이터베이스에서 검색하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색하는 방법.
  5. 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 입력하는 방법으로서,
    (a) 입력 데이터의 식별값, 필드명 및 필드값을 입력받는 단계,
    (b) 상기 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고, 상기 입력 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터를 상기 데이터베이스에 입력하는 단계, 및
    (c) 상기 (b) 단계가 성공한 경우, 상기 입력 데이터의 식별값를 키로 가지고, 상기 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 상기 데이터베이스에 입력하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  6. 제 5 항에 있어서,
    상기 (b) 단계는,
    상기 입력 데이터의 필드명 및 필드값의 조합을 키로 가지는 역색인 데이터가 상기 데이터베이스에 기존재하는 경우, 상기 입력 데이터의 식별값 및 타임스탬프의 조합을 상기 기존재하는 역색인 데이터의 밸류 항목으로 추가하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  7. 제 6 항에 있어서,
    상기 (b) 단계는,
    상기 입력 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 입력 데이터의 식별값에 대응되는 밸류 항목을 가지는 역색인 데이터가 상기 데이터베이스에 기존재하는 경우에는, 상기 입력 데이터의 타임스탬프가 상기 대응되는 밸류 항목의 타임스탬프보다 최신의 것인 경우에 한하여, 상기 입력 데이터의 식별값 및 타임스탬프의 조합을 상기 기존재하는 역색인 데이터의 밸류 항목으로 추가하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  8. 제 6 항에 있어서,
    상기 (c) 단계는,
    상기 입력 데이터의 식별값를 키로 가지는 순방향 색인 데이터가 상기 데이터베이스에 기존재하는 경우, 상기 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 상기 기존재하는 순방향 색인 데이터의 밸류 항목으로 추가하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  9. 제 8 항에 있어서,
    상기 (c) 단계는,
    상기 입력 데이터의 식별값를 키로 가지고 상기 입력 데이터의 필드명 및 필드값의 조합에 대응되는 밸류 항목을 가지는 순방향 색인 데이터가 상기 데이터베이스에 기존재하는 경우에는, 상기 입력 데이터의 타임스탬프가 상기 대응되는 밸류 항목의 타임스탬프보다 최신의 것인 경우에 한하여, 상기 입력 데이터의 필드명, 타임스탬프 및 필드값의 조합을 상기 기존재하는 순방향 색인 데이터의 밸류 항목으로 추가하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  10. 제 5 항에 있어서,
    상기 (c) 단계가 성공한 경우, 데이터 입력 성공 정보를 반환하고, 상기 (b) 단계 또는 상기 (c) 단계 중 어느 하나가 실패한 경우, 데이터 입력 실패 정보를 반환하는 단계를 더 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에 데이터를 입력하는 방법.
  11. 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법으로서,
    (a) 삭제 대상 데이터의 식별값 및 필드명을 입력받는 단계, 및
    (b) 상기 삭제 대상 데이터의 식별값를 키로 가지는 순방향 색인 데이터에 대하여, 상기 삭제 대상 데이터의 필드명, 타임스탬프 및 삭제 대상 데이터임을 나타내는 필드값의 조합을 밸류 항목으로 추가하는 단계를 포함하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법.
  12. 제 10 항에 있어서,
    상기 삭제 대상 데이터임을 나타내는 필드값은 널(null)인 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 삭제하는 방법.
  13. 데이터의 필드명 및 필드값의 조합을 키로 가지고 상기 데이터의 식별값 및 타임스탬프의 조합을 밸류 항목으로 가지는 역색인 데이터, 및 상기 데이터의 식별값을 키로 가지고 상기 데이터의 필드명, 타임스탬프 및 필드값의 조합을 밸류 항목으로 가지는 순방향 색인 데이터를 저장하고 있는, 키-밸류 구조를 가지는 데이터베이스에서 데이터를 가비지 컬렉션하는 방법으로서,
    (a) 상기 데이터베이스에서의 순방향 색인 데이터가 동일한 필드명을 가지는 2 이상의 밸류 항목을 가지는 경우, 상기 2 이상의 밸류 항목 중 최신의 타임스탬프를 가지지 않는 가비지 밸류 항목의 필드값 및 필드명의 조합을 키로 가지는 역색인 데이터를 상기 데이터베이스에서 검색하는 단계,
    (b) 상기 검색된 역색인 데이터에서 상기 순방향 색인 데이터의 키를 식별값으로 가지는 밸류 항목을 삭제하는 단계, 및
    (c) 상기 순방향 색인 데이터에서 상기 가비지 밸류 항목을 삭제하는 단계를 포함하는 것을 특징으로 하는, 키-밸류 구조를 가지는 데이터베이스에서의 가비지 컬렉션 방법.
  14. 제 13 항에 있어서,
    (d) 상기 순방향 색인 데이터의 밸류 항목의 필드값이 삭제 대상 데이터임을 나타내는 필드값인 경우, 상기 최신의 타임스탬프를 가지는 밸류 항목을 삭제하는 단계를 더 포함하는, 키-밸류 구조를 가지는 데이터베이스에서의 가비지 컬렉션 방법.
KR1020120134318A 2012-11-26 2012-11-26 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법 KR101429046B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120134318A KR101429046B1 (ko) 2012-11-26 2012-11-26 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120134318A KR101429046B1 (ko) 2012-11-26 2012-11-26 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법

Publications (2)

Publication Number Publication Date
KR20140067277A true KR20140067277A (ko) 2014-06-05
KR101429046B1 KR101429046B1 (ko) 2014-08-11

Family

ID=51123549

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120134318A KR101429046B1 (ko) 2012-11-26 2012-11-26 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법

Country Status (1)

Country Link
KR (1) KR101429046B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753506A (zh) * 2018-12-28 2019-05-14 深圳市网心科技有限公司 数据分布式存储方法、装置、终端及存储介质
CN116910051A (zh) * 2023-09-13 2023-10-20 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474943B2 (en) 2018-12-21 2022-10-18 Home Box Office, Inc. Preloaded content selection graph for rapid retrieval
US11475092B2 (en) 2018-12-21 2022-10-18 Home Box Office, Inc. Preloaded content selection graph validation
US11829294B2 (en) 2018-12-21 2023-11-28 Home Box Office, Inc. Preloaded content selection graph generation
US11204924B2 (en) 2018-12-21 2021-12-21 Home Box Office, Inc. Collection of timepoints and mapping preloaded graphs
US11269768B2 (en) 2018-12-21 2022-03-08 Home Box Office, Inc. Garbage collection of preloaded time-based graph data
US11474974B2 (en) 2018-12-21 2022-10-18 Home Box Office, Inc. Coordinator for preloading time-based content selection graphs

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5287071B2 (ja) 2008-09-17 2013-09-11 株式会社リコー データベース管理システムおよびプログラム
JP5211180B2 (ja) 2011-01-11 2013-06-12 ヤフー株式会社 データベース管理装置、データベース管理プログラム、データベース管理方法、データベース管理システム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753506A (zh) * 2018-12-28 2019-05-14 深圳市网心科技有限公司 数据分布式存储方法、装置、终端及存储介质
CN109753506B (zh) * 2018-12-28 2020-09-29 深圳市网心科技有限公司 数据分布式存储方法、装置、终端及存储介质
CN116910051A (zh) * 2023-09-13 2023-10-20 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN116910051B (zh) * 2023-09-13 2024-01-02 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
KR101429046B1 (ko) 2014-08-11

Similar Documents

Publication Publication Date Title
KR101429046B1 (ko) 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법
US11429641B2 (en) Copying data changes to a target database
US11182356B2 (en) Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
CN106462586B (zh) 基于记录的多版本并发控制的一致性读取的方法和系统
US8868512B2 (en) Logging scheme for column-oriented in-memory databases
US10409864B2 (en) Transaction control block for multiversion concurrency commit status
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
US9639542B2 (en) Dynamic mapping of extensible datasets to relational database schemas
CN106484906B (zh) 一种分布式对象存储系统闪回方法及装置
US20160314161A1 (en) Multi-Version Concurrency Control Method in Database and Database System
US10754854B2 (en) Consistent query of local indexes
US8560500B2 (en) Method and system for removing rows from directory tables
US9576038B1 (en) Consistent query of local indexes
JP2013228999A (ja) データベース処理装置、方法、プログラム及びデータ構造
WO2020192663A1 (zh) 一种数据管理方法及相关设备
US9922043B1 (en) Data management platform
US11163801B2 (en) Execution of queries in relational databases
EP3036637A1 (en) Method and system for automatic management of dynamically allocated memory in a computing unit
JP2015176407A (ja) 検索装置、検索方法、検索用プログラムおよび検索用データ構造
JP2013033439A (ja) データベースの管理方法
US11726979B2 (en) Determining a chronological order of transactions executed in relation to an object stored in a storage system
CN114238241B (zh) 财务数据的元数据处理方法和计算机系统
Cao Big Data Database for Business
Yu et al. Write optimization using asynchronous update on out-of-core column-store databases in map-reduce
CN117971839A (zh) 数据处理方法、装置、电子设备、存储介质及程序产品

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170802

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190805

Year of fee payment: 6