KR100859710B1 - 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 - Google Patents
데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 Download PDFInfo
- Publication number
- KR100859710B1 KR100859710B1 KR1020060124133A KR20060124133A KR100859710B1 KR 100859710 B1 KR100859710 B1 KR 100859710B1 KR 1020060124133 A KR1020060124133 A KR 1020060124133A KR 20060124133 A KR20060124133 A KR 20060124133A KR 100859710 B1 KR100859710 B1 KR 100859710B1
- Authority
- KR
- South Korea
- Prior art keywords
- cloud
- node
- distance
- attribute
- data
- Prior art date
Links
Images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Software Systems (AREA)
Abstract
본 발명은 데이터에 대한 검색을 수행하는 자료구조를 기록한 컴퓨터로 읽을 수 있는 기록매체, 그 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법에 관한 것으로, 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드로 구성되어, 다양한 컴퓨터 응용의 개발 시에 메모리 효율적이고 빠른 검색이 가능한 자료구조를 제공하는 효과를 제공한다.
자료구조, 노드, 클라우드, 클라우드필드, 데이터
Description
도 1은 본 발명의 바람직한 일 실시예에 따라 구축한 클라우드필드의 구조를 나타낸 예시도이다.
도 2는 본 발명의 바람직한 일 실시예에 따라 구축한 자료구조를 이용하여 데이터를 검색하는 방법을 나타낸 흐름도이다.
도 3은 본 발명의 바람직한 일 실시예에 따라 구축한 자료구조를 이용하여 새로운 노드를 클라우드필드에 삽입하여 데이터를 저장하는 방법을 나타낸 흐름도이다.
도 4는 본 발명의 바람직한 일 실시예에 따라 구축된 자료구조를 이용하여 클라우드필드에서 기존노드를 제거하여 데이터를 삭제하는 방법을 나타낸 흐름도이다.
본 발명은 데이터에 대한 검색을 수행하는 자료구조를 기록한 컴퓨터로 읽을 수 있는 기록매체, 그 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법에 관한 것으로, 보다 상세하게는 노드, 클라우드, 클라우드필드로 구축한 자료구조를 이용하여 노드를 삽입, 제거하는 과정을 통하여 데이터를 검색, 저장, 삭제하는 방법에 관한 것이다.
컴퓨터 과학분야에서 자료를 효과적으로 컴퓨터에 저장하고 사용하기 위한 자료구조(data structure)들과 컴퓨터 상에서 이루어지는 자료기반 연산을 빠르고 효과적으로 수행하기 위한, 특정 자료구조에 기초한, 알고리즘들이 지난 수십 년 동안 꾸준히 개발되어 왔다.
특히 대규모 데이터에 대한 검색을 효과적이면서 빠르게 수행하기 위한 자료구조와 알고리즘을 찾는 문제는 컴퓨터 과학분야에서 가장 고전적이면서 중요한 문제였으며, 이러한 문제에 대한 해결로 트리기반의 자료구조들(tree-based data structures) 들과 알고리즘(AVL tree, red-black tree, splay, B-tree 등)들이 대중적으로 알려져 있다.
트리기반의 자료구조들은 현재의 대부분 컴퓨터 응용에서 사용되고 있으며, 특히 데이터베이스, 파일 시스템, 딕셔너리 응용 등을 구현하기 위한 기본 라이브러리로 자리잡고 있다.
이진검색 트리(binary search trees) 자료구조를 사용하는 응용은 새로운 노드가 삽입되는 순서에 따라 검색 성능이 크게 좌우되는 경향이 있는데, 이는 구축 된 이진트리에서의 노드 분포가 어느 한쪽으로 치우칠 수 있기 때문이다.
따라서 트리기반 자료구조를 사용하는 응용들은 충분한 검색 속도(O(log n))를 보장받기 위해 새로운 노드의 추가나 삭제 시에 통상 밸런싱 알고리즘들을 사용하게 된다. 그러나 이러한 밸런싱 알고리즘은 응용의 개발 복잡도를 증가시키며, 자료구조 갱신(삽입 및 삭제)에 소요되는 비용을 증가시키는 원인이 된다.
1980년대 말 William Pugh는 skip lists라는 자료구조를 처음으로 소개하였다. Skip lists 자료구조는 1부터 특정(max) 값까지의 레벨 속성을 갖는 정렬된 리스트들(sorted linked lists)로 구성되는데, 새로운 노드(node)가 추가될 때 임의의 레벨(level) 값을 부여하고 상기 레벨 값에 해당하는 리스트와 하위레벨의 리스트(들)에 신규 노드를 추가하는 방법으로 데이터를 관리한다. 상기와 같이 관리된 리스트들을 통해, skip lists 자료구조는, 노드의 삽입 순서와 관계없이, 밸런싱된 트리기반 자료구조와 유사한 검색 속도를 확률적으로 보장한다.
또한 skip lists 및 여타 자료구조들을 실제 구현하여, skip lists 자료구조가 다른 트리기반 자료구조들과 유사하거나 앞선 (검색/삽입/삭제) 성능을 보여준다고 한다. Skip lists 자료구조의 가장 큰 장점은 알고리즘 구현이 다른 알고리즘에 비해 월등히 쉬우면서도 괜찮은 성능을 제공할 수 있다는 것이다.
본 발명이 이루고자 하는 기술적 과제로 skip lists 자료구조와 같이 확률 기반의 밸런싱을 통해 밸런싱된 트리기반 자료구조와 유사한 검색 성능을 보장하면서도, skip lists 자료구조보다 빠르고 메모리 효율적인 새로운 자료구조를 제공하 는데 있다.
상기 기술적 과제를 해결하기 위하여 본 발명에서 제시하는 데이터에 대한 검색을 수행하는 자료구조를 기록한 컴퓨터로 읽을 수 있는 기록매체는 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 상기 노드로 구성되는 클라우드 및 하나 이상의 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 한다.
또한, 상기 클라우드는 상기 클라우드를 구성하는 각 노드의 거리속성에 따라 상기 클라우드를 구성하는 노드의 정렬된 집합으로 묶여져 있는 것을 특징으로 한다.
또한, 상기 클라우드는 상기 클라우드를 구성하는 노드 중 거리속성이 최소인 노드를 대표노드로 정의하고, 상기 클라우드 중 두 개 이상의 노드로 구성된 클라우드에 존재하는 노드에서 거리속성이 최대인 노드를 맏형노드로 정의하고, 상기 클라우드 중 두 개 이상의 노드로 구성된 클라우드에 존재하는 노드에서 상기 대표노드를 제외한 노드를 자식노드로 정의하고, 상기 클라우드의 높이는 상기 클라우드의 대표노드의 높이속성으로 정의하는 것을 특징으로 한다.
또한, 두 개 이상의 노드로 구성된 클라우드에 존재하는 특정 자식노드의 왼쪽 자식노드를 상기 특정 자식노드의 동생노드로 정의하고, 두 개 이상의 노드로 구성된 클라우드에 존재하는 특정 자식노드의 오른쪽 자식노드를 상기 특정 자식노 드의 형노드로 정의하는 것을 특징으로 한다.
또한, 상기 맏형노드가 대표노드가 되는 경우 상기 맏형노드를 갖는 클라우드를 상기 맏형노드를 자식노드로 갖는 클라우드의 우측에 위치되도록 정렬하는 것을 특징으로 한다.
또한, 상기 맏형노드를 제외한 상기 자식노드가 대표노드가 되는 경우 상기 대표노드를 갖는 클라우드를 상기 대표노드를 자식노드로 갖는 클라우드의 하위에 위치하도록 정렬하는 것을 특징으로 한다.
또한, 상기 대표노드의 높이속성은 상기 맏형노드의 높이속성보다 크거나 같도록 상기 대표노드와 상기 맏형노드를 정렬하는 것을 특징으로 한다.
또한, 상기 자식노드는 거리속성이 큰 것은 높이속성도 크도록 상기 자식노드를 정렬하는 것을 특징으로 한다.
또한, 상기 맏형노드를 제외한 특정 자식노드를 대표노드로 갖는 클라우드의 거리범위는 상기 특정 자식노드의 형노드의 거리속성보다 작도록 상기 대표노드와 상기 특정 자식노드를 정렬하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위하여 본 발명에서 제시하는 데이터를 검색하는 방법은 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하는 자료구조를 이용 하여 데이터를 검색하는 방법에 있어서 (a)특정키 값에 해당하는 노드에 존재하는 데이터에 대한 검색을 요청하는 단계, (b)거리속성이 "0"이고 클라우드필드 내에 각 노드가 가질 수 있는 최대 높이속성을 가진 루트노드를 갖는 루트 클라우드로 이동하는 단계, (c)상기 이동한 클라우드가 노드를 가지지 않은 널 클라우드인지 확인하는 단계 및 (d)상기 (c)단계에서 상기 클라우드가 널 클라우드인 경우 상기 요청 받은 검색을 종료하는 단계를 포함하는 것을 특징으로 한다.
또한, (e)상기 (c)단계에서 상기 클라우드가 널 클라우드가 아닌 경우 상기 클라우드의 거리범위에 상기 특정키 값이 속하는지 확인하는 단계 및 (f)상기 (e)단계에서 속하지 않을 경우 상기 클라우드의 우측에 인접한 클라우드(즉, 상기 클라우드의 맏형노드를 대표노드로 갖는 클라우드 또는 널 클라우드)로 이동하여 상기 (c)단계를 반복하는 단계를 더 포함하는 것을 특징으로 한다.
또한, (g)상기 (e)단계에서 상기 클라우드의 거리범위에 상기 특정키 값이 속하는 경우 상기 클라우드에서 상기 특정키 값과 동일한 거리속성을 갖는 노드가 존재하는지 확인하는 단계, (h)상기 (g)단계에서 상기 노드가 존재하는 경우 상기 노드를 반환하고 검색을 종료하는 단계 및 (i)상기 (g)단계에서 상기 노드가 존재하지 않는 경우 상기 클라우드의 자식노드들 중 상기 특정키 값보다 작지만 가장 큰 거리속성을 갖는 노드를 대표노드로 갖는 클라우드로 이동하여 상기 (c)단계를 반복하는 단계를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위하여 본 발명에서 제시하는 데이터를 저장하는 방법은 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하는 자료구조를 이용하여 데이터를 저장하는 방법에 있어서 (a)클라우드필드 내에 존재하는 노드의 거리속성으로 사용되지 않는 거리속성과 임의의 높이속성을 가지는 신규노드를 생성하고 신규노드를 대표노드로 갖는 클라우드를 생성하는 단계, (b)상기 생성된 신규노드의 거리속성을 키로 이용하여 검색을 수행하면서 확인된 클라우드를 순서대로 스택에 저장하는 단계, (c)상기 스택에 저장된 클라우드들에서 저장순서의 역순으로 하나를 선택하고 상기 선택된 클라우드의 높이와 상기 신규노드의 높이속성을 비교하는 단계 및 (d)상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 작거나 같다면 상기 신규노드를 상기 클라우드에 추가하는 단계를 포함하는 것을 특징으로 한다.
또한, (e)상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 크다면 상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속하는지 확인하는 단계, (f)상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속한다면 상기 클라우드를 상기 신규노드의 거리속성을 기준으로 분할하는 단계 및 (g)상기 (e)단계에서 상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속하지 않거나 상기 (f)단계 이후 상기 (c)단계를 반복하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 (d) 단계는 (d-1)상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 작거나 같다면 상기 선택된 클라우드의 자식노드들 중 거리속성이 상기 신규노드의 거리속성보다 크면서 높이속성이 상기 신규노드의 높이속성보다 작은 노드들을 검색하는 단계 및 (d-2)상기 (d-1)단계에서 상기 검색된 노드들을 상기 신규노드를 대표노드로 갖는 클라우드에 이동하는 단계 및 (d-3)상기 (d-1)단계에서 상기 선택된 클라우드에 상기 신규노드를 추가하고 저장요청을 종료하는 단계를 더 포함하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위하여 본 발명에서 제시하는 데이터를 삭제하는 방법은 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하는 자료구조를 이용하여 데이터를 삭제하는 방법에 있어서 (a)클라우드필드 내에 존재하는 거리속성 k와 높이속성 h를 갖는 노드 d의 삭제요청을 받으면 상기 거리속성 k를 키로 이용해 검색을 수행하여 노드 d를 대표노드로 갖는 클라우드 T, 노드 d를 자식노드로 갖는 클라우드 P, 클라우드 P의 노드들 중 노드 d의 거리속성 k보다 작지만 그 중 가장 큰 거리속성을 갖는 노드를 대표노드로 갖는 클라우드 Y를 찾은 후 상기 클라우드 P에서 상기 노드 d를 제거하는 단계, (b)상기 클라우드 T가 하나의 노드로 구성된 클라우드 셀인지 확인하는 단계 및 (c)상기 확인 결과 상기 클라우드 T가 클라우드 셀인 경우 상기 삭제요청을 종료하는 단계를 포함하는 것을 특징으로 한다.
또한, (d)상기 (b)단계에서 상기 클라우드 T가 클라우드 셀이 아닌 경우 상기 클라우드 Y가 노드를 가지지 않은 널 클라우드인지 확인하는 단계 및 (e)상기 확인결과 상기 클라우드 Y가 널 클라우드인 경우 상기 클라우드 T에 존재하는 거리속성이 최소인 노드를 제외한 모든 노드를 상기 클라우드 P로 이동하고 상기 삭제요청을 종료하는 단계를 더 포함하는 것을 특징으로 한다.
또한, (f)상기 (b)단계에서 상기 클라우드 Y가 널 클라우드가 아닌 경우 상기 클라우드 T에 존재하는 노드에서 거리속성이 최대인 노드 e를 상기 클라우드 T에서 제거하는 단계, (g)상기 노드 e의 높이속성 eh와 상기 클라우드 Y의 높이 Yh를 비교하는 단계 및 (h)상기 eh가 상기 Yh보다 크다면 상기 노드 e를 상기 클라우드 P로 이동하고 상기 (b)단계를 반복하는 단계를 더 포함하는 것을 특징으로 한다.
또한, (i)상기 (g)단계에서 상기 eh가 상기 Yh보다 작거나 같다면 상기 클라우드 Y를 클라우드 P로 상기 클라우드 Y의 우측 클라우드 YR을 클라우드 Y로 명칭을 변경하는 단계, (j)상기 명칭이 변경된 클라우드 Y가 널 클라우드인지 확인하는 단계 및 (k)상기 확인결과 클라우드 Y가 널 클라우드라면 상기 노드 e 및 상기 (i)단계에서 명칭이 변경된 상기 클라우드 T에 존재하는 거리속성이 최소인 노드를 제외한 모든 노드를 클라우드 P로 이동하고 상기 삭제요청을 종료하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 (j)단계에서 상기 클라우드 Y가 널 클라우드가 아니라면 상기 (g)단계를 반복하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명이 설명하는 자료구조는 다음과 같이 구성된다.
본 발명에 따른 자료구조를 스킵 클라우드(skip clouds)라 명한다.
본 발명에 따른 스킵 클라우드 정의에 의해, 관리되는 데이터 및 관리에 필요한 데이터를 포함해 클라우드필드라 명한다.
본 발명의 클라우드필드는 하나 이상의 클라우드(C)로 구성된다.
본 발명의 클라우드는 하나 이상의 노드들로 구성된다. 특별히 하나의 노드로만 구성된 클라우드를 클라우드 셀(cell:Ccell)이라 한다.
본 발명의 클라우드를 구성하는 최소 단위인 노드(d)는 지면으로부터의 높이(height) 속성과 지면의 특정 시작점(starting point)에서부터 노드가 지면에 수직으로 도달하는 점까지의 거리(distance) 속성을 갖는다고 정의한다.(각 노드가 보관해야 하는(응용에서 사용할) 데이터(value)의 형태 및 속성은 본 발명에서 따로 한정하지 않는다.)
본 발명에 따른 노드의 높이속성(dh)은 노드가 클라우드필드에 삽입될 때 제한된 범위(max height = H) 내에서 랜덤 하게 부여된 값이다.
본 발명에 따른 노드의 거리속성(dk)은 클라우드필드 내 모든 노드들을 구별하는 고유한 키(key)로 작용하며, 노드가 클라우드필드에 추가될 때 노드가 가지는 데이터로부터 추출한 값 또는 임의로 부여한 값이다.
Definition #1 :
본 발명에 따른 클라우드 C는 C를 구성하는 노드들의 정렬된 집합(sorted set)으로 정의할 수 있으며, 이때 정렬 순서는 클라우드 C를 구성하는 각 노드의 거리속성(dk)에 따른다.
Definition #1에 따른 정렬된 집합 C의 원소들 중 d1을 클라우드 C의 대표노드(parent node)라 한다(클라우드 C는 클라우드 C의 대표노드 거리속성으로 표현될 수 있으며, 이때 C대표노드거리속성로 표기함). 대표노드는 자신을 대표로 하는 클라우드를 어떤 형태로든 관리해야 하나, 본 발명에서 관리하는 방법을 따로 기술하지는 않는다.
상기 대표노드를 제외한 노드들 d2, Λ, dn 을 자식노드(child node) 라 한다. 단, 본 발명에 따른 클라우드 셀은 정의에 따라 자식노드를 갖지 않는다.
상기 자식노드들 중 거리속성이 가장 큰 노드, 즉 두 개 이상의 원소를 갖는 정렬된 집합 C의 마지막 원소 dn를 맏형노드(eldest node)라 한다.
Definition #1에 따른 정렬된 집합 C에서 노드 di(2<i=n)의 왼쪽 노드 di - 1를 di의 동생노드(younger node)라 한다.
Definition #1에 따른 정렬된 집합 C에서 노드 di(1<i<n)의 오른쪽 노드 di + 1를 di의 형노드(elder node)라 한다.
본 발명에 따른 클라우드 C가 가지는 거리범위(CR: distance range)는 대표노드의 거리속성 값()으로부터 맏형노드의 거리속성 값()까지로 정의된다. 즉, 클라우드 C의 거리범위는 이다. 클라우드 가 클라우드 셀인 경우는 이다.
본 발명에 따른 클라우드필드를 초기화할 때, 클라우드필드 내 각 노드들이 가질 수 있는 높이속성의 최대 크기 H를 설정하며, 거리속성 값이 0이고(dk=0) 높이속성 값이 H인 (dh=H)인 노드를 생성하는데, 상기 노드를 루트노드(root node)라 한다.
상기 루트노드를 대표노드로 갖는 클라우드를 루트 클라우드(root cloud)라 한다.
상기 루트노드를 제외한 모든 노드는 항상 특정 클라우드의 자식 노드이면서 또 다른 클라우드(클라우드 셀을 포함하여)의 대표노드가 된다.
본 발명에 따른 클라우드 C의 대표노드를 자식노드로 갖는 클라우드를 클라우드 C의 상위 클라우드(CU)라 한다.
본 발명에 따른 클라우드 C의 맏형노드가 대표노드가 되는 클라우드를 클라우드 C의 우측 클라우드(CR)라 한다.
본 발명에 따른 클라우드 C의 맏형노드를 제외한 자식노드가 대표노드가 되는 클라우드를 클라우드 C의 하위 클라우드(CD)라 한다.
앞에서 본 발명에서 정의하는 자료구조의 필요 명칭들을 모두 정의하였다. 이제 본 발명에서 정의하는 자료구조를 효과적으로 이용하기 위한 제약사항 #1과 #2를 설명한다.
Constraint #1 :
본 발명에 따른 클라우드 C의 자식노드들은 거리속성이 클수록 높이 속성이 크며(1), 대표노드의 높이속성은 맏형노드의 높이속성보다 크거나 같아야 한다(2).
Constraint #2 :
본 발명에 따른 클라우드 C의, 맏형노드를 제외한, 자식노드 di가 대표노드가 되는 클라우드 Cd의 최대 거리속성(즉, Cd의 맏형노드 거리속성 또는 Cd가 클라우드 셀인 경우에 di의 거리속성)은 di의 형노드 di +1의 거리속성 값보다 작아야 한다.
위의 Constraint #1과 #2에 의해 다음과 같은 Definition #2과 Definition #3을 유추해 낼 수 있다.
Definition #2 :
본 발명에 따른 클라우드 C의 높이는 클라우드 C의 하위 클라우드 CD의 높이보다 크며, 클라우드 C의 상위 클라우드 CU의 높이보다 작다. 그리고 클라우드 C의 우측 클라우드 CR의 높이보다 크거나 같다.
Definition #3 :
본 발명에 따른 클라우드 C의 하위 클라우드 CD의 거리범위()는 클라우드 C의 거리범위(CR) 내에 위치하며, 클라우드 C의 상위 클라우드 CU의 거리범 위()는 클라우드 C의 거리범위를 포함한다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다.
도 1은 본 발명의 바람직한 일 실시예에 따라 구축한 클라우드필드의 구조를 나타낸 예시도이다.
도 1에서 보는 바와 같이 본 발명에 따라 구축한 클라우드필드의 예는 각 노드에 두 개의 포인터(pointer)를 둠으로써 표현할 수 있다. 하나의 포인터는 클라우드의 대표노드가 맏형노드를 가리키는 포인터(Eldest Pointer)이며, 또 다른 포인터는 클라우드의 자식노드들간의 관계(정렬순서)를 표현하기 위한 것으로, 높이속성이 큰 노드가 자신보다 높이속성이 작은 노드들 중 가장 큰 높이속성을 갖는 노드(즉, 동생노드)를 가리키는 포인터(Younger Pointer)이다.
이외에 형노드를 가리키는 포인터 또는 대표노드가 막내노드(해당 클라우드의 자식노드들 중, 높이속성이 가장 작은 노드)를 가리키는 포인터를 노드에 추가하여 본 발명에서 설명하는 클라우드필드를 구축하면, 이후 설명될 검색/삽입/삭제 알고리즘들의 성능을 일부 향상시킬 수는 있겠으나, 이는 당 업자가 본 발명을 통해 용이하게 치환 또는 변형할 수 있는 것에 해당하므로 따로 설명하지는 않는다.
도 1의 클라우드필드 예는 총 6개의 클라우드들로 구성되어 있음을 확인할 수 있다.
도 2는 본 발명의 바람직한 일 실시예에 따라 구축한 자료구조를 이용하여 데이터를 검색하는 방법을 나타낸 흐름도이다.
본 발명에 따라 구축한 클라우드필드에서 특정 키 K에 대한 검색은 루트 클라우드로 이동하면서부터 시작한다(S200). 상기 이동한 클라우드가 널(null) 클라우드(본 발명에 의하면 클라우드는 하나 이상의 노드로 구성되어야만 한다. 그러나 본 발명에 따른 자료구조를 이용 (검색/삽입/삭제)하는 방법을 설명하기 위해, 노드를 가지지 않은 클라우드를 널 클라우드라 정의한다. 보통의 컴퓨터 응용을 개발할 때 사용되는 포인터 타입에서 널 포인터가 이에 해당한다.)인지 확인한다(S210)
상기 클라우드가 널 클라우드라면 검색은 종료된다(S260). 상기 클라우드가 널 클라우드가 아니라면, 상기 클라우드의 거리범위 내에 K가 있는지 여부를 확인한다(S220).
상기 클라우드의 거리범위 내에 K가 있지 않다면, 상기 클라우드의 우측클라 우드로 이동하고(S250), 상기 S210 단계가 다시 시행된다. 상기 클라우드의 거리범위 내에 K가 있다면, 상기 클라우드를 구성하는 노드들 중 K와 동일한 거리속성을 갖는 노드가 존재하는지 확인한다(S230).
상기 클라우드에서 K와 동일한 거리속성을 갖는 노드가 발견된다면, 검색은 종료된다(S270). 상기 클라우드에서 K와 동일한 거리속성을 갖는 노드가 발견되지 않는다면, 상기 클라우드의 하위 클라우드들 중 K보다 작지만 가장 가까운 거리속성을 갖는 노드를 대표노드로 하는 하위 클라우드로 이동한다(S240). 상기 하위 클라우드로 이동 후, 상기 S210 단계가 다시 시행된다.
상기 S240 단계에서 다른 하위 클라우드(들)를 확인하지 않는 이유는, 하위 클라우드들의 거리범위가 Definition #1과 Constraint #2에 의해 서로 중첩되지 않기 때문에 S240 단계에서 명시한 하위 클라우드 이외의 다른 하위 클라우드에 대한 확인과정은 불필요하기 때문이다.
상기 S250 단계에서 우측클라우드로 이동하는 이유는, 클라우드의 거리범위 내에 K가 포함되어 있지 않다면, 상기 클라우드의 하위 클라우드(들)에는 K를 거리속성으로 갖는 노드가 존재하지 않음을 Definition #1과 #3에 의해서 알 수 있기 때문이다.
위에서 설명한 검색방법을 도 1에서 설명한 두 포인터와 거리속성만으로 최적화시켜 작성한 pseudo code의 예는 아래 Algorithm #1과 같다.
도 3은 본 발명의 바람직한 일 실시예에 따라 구축한 자료구조를 이용하여 새로운 노드를 클라우드필드에 삽입하여 데이터를 저장하는 방법을 나타낸 흐름도이다.
각 노드는 클라우드필드를 구성하는 다른 모든 노드들과 유일하게 구별될 수 있는 고유한 거리속성과 랜덤 하게 계산된 높이속성을 가지고 있어야 한다.
이에 클라우드필드에 삽입될 신규노드가 상기 거리속성과 상기 높이속성을 갖도록 필요한 작업(신규노드를 대표노드로 갖는 클라우드의 생성을 포함함)을 수행한다(S300). 신규노드의 거리속성을 키로 사용하여 클라우드필드에 대한 검색을 시행하고, 검색 동안 확인된 각 클라우드를 지나온 순서대로 스택에 저장(push)한다(S310).
상기 스택에서 클라우드를 가져(pop)온다(S320). 상기 가져온 클라우드의 높이와 신규노드의 높이속성을 비교한다(S330). 신규노드의 높이속성이 상기 스택에서 가져온 클라우드의 높이보다 작거나 같다면, 신규노드를 상기 클라우드에 추가하고(S360), 삽입을 종료한다(S370).
신규노드의 높이속성이 상기 스택에서 가져온 클라우드의 높이보다 크다면, 신규노드의 거리속성이 상기 클라우드의 거리범위에 있는지 확인한다(S340). 신규노드의 거리속성이 상기 클라우드의 거리범위에 있다면, 상기 클라우드를 신규노드의 거리속성을 기준으로 분할한다(S350). 신규노드의 거리속성이 상기 클라우드의 거리범위에 있지 않거나 상기 분할하는 단계(S350) 이후, 상기 S320 단계를 다시 시행한다.
상기 S300단계에서의 높이속성은 본 발명에서 설명하는 클라우드필드의 갱신(삽입/삭제)시에 클라우드필드를 확률적으로 밸런싱하기 위한 용도로 사용되는 것이며, 다양한 방법으로 계산될 수 있으나, O(log n)의 검색시간을 확률적으로 보장하기 위해서 Algorithm #2의 예와 같은 함수를 사용할 수도 있다. 상기 예와 같은 함수를 사용할 경우, 전체 클라우드필드의 노드들 중 높이속성이 1인 노드가 50%, 2인 노드가 25%, h(<H)인 노드가 100/2h%가 확률적으로 존재하게 될 것임을 알 수 있으며, 이러한 높이속성에 따른 노드들의 분포는 밸런싱된 이진트리 자료구조(e.g. AVL tree)에서 레벨(level)에 따른 노드들의 분포와 유사하다.
그리고 본 발명에 따른 최대높이 H는 효과적으로 밸런싱 가능한 클라우드필드의 전체 노드 수를 2H로 한정하게 되므로 클라우드필드에 삽입하고자 하는 전체 노드의 수를 고려해 H를 결정해야 한다.
상기 S310단계에서 신규노드의 거리속성을 키로 사용한 검색은 널 클라우드를 만나 항상 실패할 것이다. 실패하지 않는다면, 클라우드필드에 이미 상기 신규노드의 거리속성을 갖는 노드가 존재한다는 의미이며, 상기 클라우드필드에 신규노드를 삽입하면 각 노드의 거리속성이 전체 클라우드필드에서 고유해야 한다는 정의를 위배하게 된다.
상기 S350 단계에서의 분할과정은 본 발명에 따른 Constraint #2를 위배하지 않기 위해 필요한 과정이다. 분할의 대상이 되는 클라우드의 자식노드들 중, 신규노드의 거리속성보다 큰 노드들은 모두 신규노드를 대표노드로 갖는 클라우드로 이동한다(특정노드를 특정클라우드에 추가 또는 이동한다는 의미는 특정노드가 추가된 특정클라우드를 Definition #1에 따라 재정렬한다는 의미를 함께 내포하고 있음을 따로 설명하지 않아도 알 수 있을 것이다).
상기 S360 단계에서 신규노드를 기존클라우드에 추가하는 과정은 본 발명에 따른 Constraint #1에 위배되지 않게 처리되어야 한다. 따라서 상기 기존클라우드의 자식노드들 중 거리속성이 신규노드의 거리속성보다 크면서, 높이속성이 신규노 드의 높이속성보다 작은 노드들은 모두 신규노드를 대표노드로 갖는 클라우드로 이동한다.
위의 그림을 보면, 도 1에서 설명한 클라우드필드의 예에서 거리속성이 18이고 높이속성이 3인 신규노드를 삽입한 이후의 클라우드필드 변화를 살펴볼 수 있다.
검색 동안 스택에 저장된 클라우드는 C0, C6, C9, C17이며, 클라우드 C17에서 분할작업이 시행되고 클라우드 C9에서 추가작업이 시행된 후, 삽입은 종료된다. 삽입 종료 후, 클라우드 C9은 {d1(9), d2(12), d3(17), d4(18)}로, C17은 클라우드 셀로 변경되고, 신규노드를 대표노드로 하여 생성된 클라우드 C18은 {d1(18), d2(19), d3(25)}로 구성된다.
도 4는 본 발명의 바람직한 일 실시예에 따라 구축된 자료구조를 이용하여 클라우드필드에서 기존노드를 제거하여 데이터를 삭제하는 방법을 나타낸 흐름도이다.
클라우드필드에서 삭제될 노드 d가 k의 거리속성과 h의 높이속성을 갖는다고 가정한다. 상기 노드의 거리속성 k를 키로 사용하여 클라우드필드에 대한 검색을 시행하고, 상기 노드 d를 대표노드로 갖는 클라우드 T, 상기 클라우드 T의 상위 클라우드 P(즉, 상기 노드 d를 자식노드로 갖는 클라우드 TU), 상기 노드 d의 동생노드를 대표노드로 갖는 클라우드 Y를 찾고, 상기 클라우드 P 에서 d를 제거한다(S400).
상기 클라우드 T가 클라우드 셀 Ccell인지 확인한다(S410). 상기 클라우드 T가 Ccell이라면 삭제를 종료한다(S470). 상기 클라우드 T가 Ccell이 아니라면, 상기 클라우드 Y가 널 클라우드인지 확인한다(S420).
상기 클라우드 Y가 널 클라우드라면, 상기 클라우드 T의 모든 자식노드를 상기 클라우드 P로 이동시키고(S460), 삭제를 종료한다(S470). 상기 클라우드 Y가 널 클라우드가 아니라면, 상기 클라우드 T의 맏형노드 e를 선택하고, 상기 클라우드 T에서 상기 노드 e를 제거한다(S430).
상기 노드 e의 높이속성 eh와 상기 클라우드 Y의 높이 Yh를 비교한다(S440). 상기 eh가 상기 Yh보다 크다면, 상기 노드 e를 상기 클라우드 P로 이동시킨 (S450) 이후, 상기 S410 단계를 다시 시행한다.
상기 eh가 상기 Yh보다 작거나 같다면, 상기 클라우드 Y를 클라우드 P로 , 상기 클라우드 Y의 우측 클라우드 YR를 클라우드 Y로 재 명명한다(S441). 상기 재 명명된 클라우드 Y가 널 클라우드인지 확인한다(S442).
상기 클라우드 Y가 널 클라우드라면, 상기 노드 e를 상기 재 명명된 클라우드 P로 이동시키고(S443), 상기 클라우드 T의 모든 자식노드를 상기 클라우드 P로 이동시키고(S460), 삭제를 종료한다(S470).
상기 클라우드 Y가 널 클라우드가 아니라면, 상기 S440 단계를 다시 시행한다.
상기 단계들에 의해 설명된 삭제방법은, 삭제될 노드가 대표노드인 클라우드가 삭제되는 것으로 인해, 본 발명의 Constraint #1과 Constraint #2가 위배되지 않도록 클라우드필드를 재조정하는 일을 수행한다. 본 발명의 Constraint #2에 의해, 상기 클라우드 T의 자식노드들의 거리속성은 상기 클라우드 Y의 최대거리보다 항상 크다.
따라서 상기 자식노드들은 상기 클라우드 Y의 맏형노드가 되거나, 상기 클라우드 Y 대표노드의 형노드(다르게 표현하면, 상기 클라우드 P의 자식노드)가 되는데, 이러한 결정은 자식노드들의 높이속성에 따라 결정되며 이것은 Constraint #1을 위배하지 않도록 한다.
위의 그림은 새로운 노드를 클라우드필드에 삽입하는 방법의 예를 설명하기 위해 사용되었던 그림이다. 상기 삽입하는 방법의 예를 통해 추가되었던 거리속성이 18인 노드 d를 다시 삭제하여 본 발명의 클라우드필드에서 기존노드를 삭제하는 방법의 예를 설명한다.
먼저 거리속성이 18인 노드를 검색하여 그 과정 동안 클라우드 T, P, Y를 찾고 상기 클라우드 P 에서 d를 제거한다. 상기 클라우드 T가 클라우드 셀이 아니므로 삭제 과정은 계속 진행된다.
상기 클라우드 Y가 널 클라우드가 아니므로 상기 클라우드 T의 맏형노드 e(거리속성=25)를 선택하고, 상기 클라우드 T에서 상기 노드 e를 제거한다. 상기 노드 e의 높이속성 eh(=3)와 상기 클라우드 Y의 높이 Yh(=2)를 비교한다.
상기 eh가 상기 Yh보다 크므로, 상기 노드 e를 상기 클라우드 P로 이동시키고 도 4의 S410 단계를 다시 시행한다. 상기 클라우드 T가 아직 클라우드 셀이 아니므로 삭제 과정은 계속 진행된다.
상기 클라우드 Y가 널 클라우드가 아니므로 상기 클라우드 T의 맏형노드 e(거리속성=19)를 선택하고, 상기 클라우드 T에서 상기 노드 e를 제거한다. 상기 노드 e의 높이속성 eh(=1)와 상기 클라우드 Y의 높이 Yh(=2)를 비교한다.
상기 eh가 상기 Yh보다 작으므로, 도 4의 S441 단계를 시행하여 상기 클라우드 P는 C17로 상기 클라우드 Y는 YR(=NIL)로 재 명명한다. 상기 재 명명된 클라우드 Y가 널 클라우드이므로, 상기 노드 e와 상기 클라우드 T의 남아있는 모든 자식노드들(본 예에서는 남아있는 자식노드가 없음)을 상기 클라우드 P로 이동시킨 후 삭제 과정은 종료된다.
거리속성이 18인 노드 d의 삭제 결과 상기 노드 d가 추가되기 이전의 클라우드필드로 환원되었음을 확인할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷 을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 의하면 다양한 컴퓨터 응용의 개발 시에 메모리 효율적이고 빠른 검색이 가능한 자료구조를 제공하는 효과를 제공한다.
이러한 효과는 C# 언어를 사용하여 구현한 알고리즘들을 천만 레코드에 대해 비교 및 실험한 아래 결과(표1)를 통해 확인할 수 있다. (아래 알고리즘 비교평가는 실수형 데이터를 키(본 발명에서의 거리속성)로 사용했을 때임. Pentium 4 CPU 2.80GHz, 2GB RAM 환경). 아래 표는 천만 레코드에 대한 한 노드의 평균 검색/삽입/삭제 시간을 나타낸 것이다.
Implementation | Search | Insertion | Deletion |
Skip Clouds | 0.543 | 1.470 | 0.810 |
Skip Lists | 0.759 | 2.080 | 1.309 |
Non - recursive AVL trees | 0.731 | 1.696 | 1.229 |
또한 본 발명에 의한 스킵 클라우드 자료구조는, 도 1에서 설명한 바와 같이, 두 개의 포인터와 높이속성 및 거리속성을 표현할 수 있는 메모리만을 사용하여 표현 가능하므로, 본 발명에 따른 자료구조의 구현방법에 따라 약간의 차이는 있을 수 있으나, 다수의 리스트들을 관리하는 skip lists자료구조보다 메모리 효율적이며, 밸런싱 알고리즘이 적용된 트리기반 자료구조들(balanced tree data structures)보다 적거나 동일한 메모리를 사용하여 컴퓨터 응용 개발에 사용할 수 있는 장점을 제공한다.
Claims (20)
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색하는 방법에 있어서,(a) 특정키 값에 해당하는 노드에 존재하는 데이터에 대한 검색을 요청하는 단계;(b) 거리속성이 "0"이고 클라우드필드 내에 각 노드가 가질 수 있는 최대 높이속성을 가진 루트노드를 갖는 루트 클라우드로 이동하는 단계;(c) 상기 이동한 클라우드가 노드를 가지지 않은 널 클라우드인지 확인하는 단계; 및(d) 상기 (c)단계에서 상기 클라우드가 널 클라우드인 경우 상기 요청 받은 검색을 종료하는 단계;를 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 검색하는 방법.
- 제 10 항에 있어서,(e) 상기 (c)단계에서 상기 클라우드가 널 클라우드가 아닌 경우 상기 클라우드의 거리범위에 상기 특정키 값이 속하는지 확인하는 단계; 및(f) 상기 (e)단계에서 속하지 않을 경우 상기 클라우드의 우측에 인접한 클라우드로 이동하여 상기 (c)단계를 반복하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 검색하는 방법.
- 제 11 항에 있어서,(g) 상기 (e)단계에서 상기 클라우드의 거리범위에 상기 특정키 값이 속하는 경우 상기 클라우드에서 상기 특정키 값과 동일한 거리속성을 갖는 노드가 존재하는지 확인하는 단계;(h) 상기 (g)단계에서 상기 노드가 존재하는 경우 상기 노드를 반환하고 검색을 종료하는 단계; 및(i) 상기 (g)단계에서 상기 노드가 존재하지 않는 경우 상기 클라우드의 자식노드들 중 상기 특정키 값보다 작지만 가장 큰 거리속성을 갖는 노드를 대표노드로 갖는 클라우드로 이동하여 상기 (c)단계를 반복하는 단계;를 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 검색하는 방법.
- 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 저장하는 방법에 있어서,(a) 클라우드필드 내에 존재하는 노드의 거리속성으로 사용되지 않는 거리속성과 임의의 높이속성을 가지는 신규노드를 생성하고 신규노드를 대표노드로 갖는 클라우드를 생성하는 단계;(b) 상기 생성된 신규노드의 거리속성을 키로 이용하여 검색을 수행하면서 확인된 클라우드를 순서대로 스택에 저장하는 단계;(c) 상기 스택에 저장된 클라우드들에서 저장순서의 역순으로 하나를 선택하고 상기 선택된 클라우드의 높이와 상기 신규노드의 높이속성을 비교하는 단계; 및(d) 상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 작거나 같다면 상기 신규노드를 상기 클라우드에 추가하는 단계;를 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 저장하는 방법.
- 제 13 항에 있어서,(e) 상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 크다면 상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속하는지 확인하는 단계;(f) 상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속한다면 상기 클라우드를 상기 신규노드의 거리속성을 기준으로 분할하는 단계; 및(g) 상기 (e)단계에서 상기 신규노드의 거리속성이 상기 선택된 클라우드의 거리범위에 속하지 않거나 상기 (f)단계 이후 상기 (c)단계를 반복하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 저장하는 방법.
- 제 13 항에 있어서 상기 (d) 단계는,(d-1) 상기 (c)단계에서 상기 신규노드의 높이속성이 상기 선택된 클라우드의 높이보다 작거나 같다면 상기 선택된 클라우드의 자식노드들 중 거리속성이 상기 신규노드의 거리속성보다 크면서 높이속성이 상기 신규노드의 높이속성보다 작은 노드들을 검색하는 단계; 및(d-2) 상기 (d-1)단계에서 상기 검색된 노드들을 상기 신규노드를 대표노드로 갖는 클라우드에 이동하는 단계; 및(d-3) 상기 (d-1)단계에서 상기 선택된 클라우드에 상기 신규노드를 추가하고 저장요청을 종료하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 저장하는 방법.
- 특정시작점을 기준으로 한 수직면에 수직으로 도달하는 점까지의 거리를 나타내는 거리속성과 상기 특정시작점을 기준으로 한 수평면에 수직으로 도달하는 점까지의 거리를 나타내는 높이속성을 갖는 노드, 하나 이상의 인접한 상기 노드로 구성되는 클라우드 및 하나 이상의 인접한 상기 클라우드로 구성되는 클라우드필드를 포함하는 것을 특징으로 하는 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 삭제하는 방법에 있어서,(a) 클라우드필드 내에 존재하는 거리속성 k와 높이속성 h를 갖는 노드 d의 삭제요청을 받으면 상기 거리속성 k를 키로 이용해 검색을 수행하여 노드 d를 대표노드로 갖는 클라우드 T, 노드 d를 자식노드로 갖는 클라우드 P, 클라우드 P의 노드들 중 노드 d의 거리속성 k보다 작지만 그 중 가장 큰 거리속성을 갖는 노드를 대표노드로 갖는 클라우드 Y를 찾은 후 상기 클라우드 P에서 상기 노드 d를 제거하는 단계;(b) 상기 클라우드 T가 하나의 노드로 구성된 클라우드 셀인지 확인하는 단계; 및(c) 상기 확인 결과 상기 클라우드 T가 클라우드 셀인 경우 상기 삭제요청을 종료하는 단계;를 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 삭제하는 방법.
- 제 16 항에 있어서,(d) 상기 (b)단계에서 상기 클라우드 T가 클라우드 셀이 아닌 경우 상기 클라우드 Y가 노드를 가지지 않은 널 클라우드인지 확인하는 단계; 및(e) 상기 확인결과 상기 클라우드 Y가 널 클라우드인 경우 상기 클라우드 T에 존재하는 거리속성이 최소인 노드를 제외한 모든 노드를 상기 클라우드 P로 이동하고 상기 삭제요청을 종료하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 삭제하는 방법.
- 제 17 항에 있어서,(f) 상기 (b)단계에서 상기 클라우드 Y가 널 클라우드가 아닌 경우 상기 클라우드 T에 존재하는 노드에서 거리속성이 최대인 노드 e를 상기 클라우드 T에서 제거하는 단계;(g) 상기 노드 e의 높이속성 eh와 상기 클라우드 Y의 높이 Yh를 비교하는 단계; 및(h) 상기 eh가 상기 Yh보다 크다면 상기 노드 e를 상기 클라우드 P로 이동하고 상기 (b)단계를 반복하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 삭제하는 방법.
- 제 18 항에 있어서,(i) 상기 (g)단계에서 상기 eh가 상기 Yh보다 작거나 같다면 상기 클라우드 Y를 클라우드 P로 상기 클라우드 Y의 우측 클라우드 YR을 클라우드 Y로 명칭을 변경하는 단계;(j) 상기 명칭이 변경된 클라우드 Y가 널 클라우드인지 확인하는 단계; 및(k) 상기 확인결과 클라우드 Y가 널 클라우드라면 상기 노드 e 및 상기 (i)단계에서 명칭이 변경된 상기 클라우드 T에 존재하는 거리속성이 최소인 노드를 제외한 모든 노드를 클라우드 P로 이동하고 상기 삭제요청을 종료하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 삭제하는 방법.
- 제 19 항에 있어서,상기 (j)단계에서 상기 클라우드 Y가 널 클라우드가 아니라면 상기 (g)단계를 반복하는 단계;를 더 포함하는 것을 특징으로 하는 자료구조를 이용하여 데이터를 삭제하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060124133A KR100859710B1 (ko) | 2006-12-07 | 2006-12-07 | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060124133A KR100859710B1 (ko) | 2006-12-07 | 2006-12-07 | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080068665A Division KR100899817B1 (ko) | 2008-07-15 | 2008-07-15 | 데이터에 대한 검색을 수행하는 자료구조를 기록한컴퓨터로 읽을 수 있는 기록매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080052091A KR20080052091A (ko) | 2008-06-11 |
KR100859710B1 true KR100859710B1 (ko) | 2008-09-23 |
Family
ID=39806958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060124133A KR100859710B1 (ko) | 2006-12-07 | 2006-12-07 | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100859710B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100944756B1 (ko) * | 2009-10-29 | 2010-03-03 | 주식회사 이지마루 | 대용량 레파지토리 구성을 위한 데이터 저장 구조 |
US20150227414A1 (en) * | 2012-08-31 | 2015-08-13 | Pradeep Varma | Systems And Methods Of Memory And Access Management |
KR101510990B1 (ko) * | 2014-05-08 | 2015-04-15 | 중앙대학교 산학협력단 | 노드 오더링 방법 및 그 장치 |
CN104346462B (zh) * | 2014-11-07 | 2017-11-10 | 北京奇虎科技有限公司 | 保存网页元素的方法、装置和浏览器客户端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10301937A (ja) | 1997-04-23 | 1998-11-13 | Nippon Telegr & Teleph Corp <Ntt> | 多次元ベクトル空間内の近傍検索方法とそのプログラムの記録媒体 |
KR20030013619A (ko) * | 2001-08-08 | 2003-02-15 | 한국전자통신연구원 | 병렬 고차원 색인 구조의 데이터 삽입 및 탐색 방법 |
JP2003099809A (ja) | 2001-09-26 | 2003-04-04 | Mitsubishi Electric Corp | 3次元データ管理装置、方法およびその方法を実行させるプログラム、3次元データ検索装置、方法およびその方法を実行させるプログラム、並びに3次元データ管理・検索装置、方法およびその方法を実行させるプログラム |
US6859804B2 (en) | 2002-06-11 | 2005-02-22 | The Regents Of The University Of California | Using histograms to introduce randomization in the generation of ensembles of decision trees |
KR20060048716A (ko) * | 2004-09-30 | 2006-05-18 | 마이크로소프트 코포레이션 | 클릭 거리를 사용하여 검색 결과를 순위화하는 시스템 및방법 |
KR20060128740A (ko) * | 2005-06-09 | 2006-12-14 | 소니 가부시끼 가이샤 | 정보 처리 장치, 정보 처리 방법, 및 프로그램 |
-
2006
- 2006-12-07 KR KR1020060124133A patent/KR100859710B1/ko not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10301937A (ja) | 1997-04-23 | 1998-11-13 | Nippon Telegr & Teleph Corp <Ntt> | 多次元ベクトル空間内の近傍検索方法とそのプログラムの記録媒体 |
KR20030013619A (ko) * | 2001-08-08 | 2003-02-15 | 한국전자통신연구원 | 병렬 고차원 색인 구조의 데이터 삽입 및 탐색 방법 |
JP2003099809A (ja) | 2001-09-26 | 2003-04-04 | Mitsubishi Electric Corp | 3次元データ管理装置、方法およびその方法を実行させるプログラム、3次元データ検索装置、方法およびその方法を実行させるプログラム、並びに3次元データ管理・検索装置、方法およびその方法を実行させるプログラム |
US6859804B2 (en) | 2002-06-11 | 2005-02-22 | The Regents Of The University Of California | Using histograms to introduce randomization in the generation of ensembles of decision trees |
KR20060048716A (ko) * | 2004-09-30 | 2006-05-18 | 마이크로소프트 코포레이션 | 클릭 거리를 사용하여 검색 결과를 순위화하는 시스템 및방법 |
KR20060128740A (ko) * | 2005-06-09 | 2006-12-14 | 소니 가부시끼 가이샤 | 정보 처리 장치, 정보 처리 방법, 및 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
KR20080052091A (ko) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6028567B2 (ja) | データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法 | |
US10102253B2 (en) | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
US10783115B2 (en) | Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset | |
US7895211B2 (en) | Method and system for reinserting a chain in a hash table | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
CN112148680B (zh) | 一种基于分布式图数据库的文件系统元数据管理方法 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
JP5790755B2 (ja) | データベース管理装置及びデータベース管理方法 | |
KR100859710B1 (ko) | 데이터에 대한 검색을 수행하기 위한 자료구조를 이용하여 데이터를 검색, 저장, 삭제하는 방법 | |
US20090307214A1 (en) | Computer system for performing aggregation of tree-structured data, and method and computer program product therefor | |
CN113468080B (zh) | 一种全闪元数据的缓存方法、系统及相关装置 | |
CN109189343B (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
WO2012081165A1 (ja) | データベース管理装置及びデータベース管理方法 | |
KR101070738B1 (ko) | 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치 | |
CN115495462A (zh) | 批量数据更新方法、装置、电子设备和可读存储介质 | |
KR100899817B1 (ko) | 데이터에 대한 검색을 수행하는 자료구조를 기록한컴퓨터로 읽을 수 있는 기록매체 | |
KR100667741B1 (ko) | 특징 벡터 데이터 공간의 인덱싱 방법 | |
JP2008065716A (ja) | データ管理装置、データ管理方法及びデータ管理プログラム | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists | |
Нікітін et al. | Combined indexing method in nosql databases | |
US6076089A (en) | Computer system for retrieval of information | |
Pagh | Basic external memory data structures | |
KR102404174B1 (ko) | 비관계형 데이터베이스 관리 시스템의 메모리 자료구조, 노드를 삽입하는 방법 및 범위 질의를 처리하는 방법 | |
CN115438140A (zh) | 一种基于后缀索引的敏感词检索方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
A107 | Divisional application of patent | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |