KR102308667B1 - 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법 - Google Patents

배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법 Download PDF

Info

Publication number
KR102308667B1
KR102308667B1 KR1020200002672A KR20200002672A KR102308667B1 KR 102308667 B1 KR102308667 B1 KR 102308667B1 KR 1020200002672 A KR1020200002672 A KR 1020200002672A KR 20200002672 A KR20200002672 A KR 20200002672A KR 102308667 B1 KR102308667 B1 KR 102308667B1
Authority
KR
South Korea
Prior art keywords
subsequence
score
partition
array
subsequences
Prior art date
Application number
KR1020200002672A
Other languages
English (en)
Other versions
KR20210089476A (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 KR1020200002672A priority Critical patent/KR102308667B1/ko
Priority to US17/144,363 priority patent/US11657055B2/en
Publication of KR20210089476A publication Critical patent/KR20210089476A/ko
Application granted granted Critical
Publication of KR102308667B1 publication Critical patent/KR102308667B1/ko

Links

Images

Classifications

    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Abstract

배열 데이터에서의 상위 k(k는 자연수) 질의 처리 방법이 개시된다. 상위 k 질의 처리 방법은 적어도 프로세서를 포함하는 컴퓨팅 장치에서 수행되고, 복수의 셀(cell)들로 구성된 배열(array)을 복수의 파티션들(partitions)로 분할하는 단계 및 상기 배열 내에서 i번째 응답을 검색하는 단계를 포함한다.

Description

배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법{DEVICE AND METHOD FOR PROGRESSIVE TOP-K SUBARRAY QUERY PROCESSING IN ARRAY DATABASES}
본 발명은 데이터베이스에 대한 질의 처리 방법에 관한 것이며, 보다 상세하게는 배열 데이터베이스에서 효율적이면서 점진적으로 상위 k 개의 서브배열들을 찾아내는 질의 처리 방법에 관한 것이다.
현재 다양한 분야에서 전례없는 양의 다차원 배열 데이터(multidimensional array data)가 생성되고 있다. 다차원 배열 데이터에 대한 효율적인 관리의 필요성으로 인하여, 배열 데이터 모델(array data model)에 기반한 다양한 배열 관리 시스템들(array management systems)이 제안되고 있다.
상위 k 질의(top-k query)는 가장 높은 스코어(scores)를 갖는 k 개의 레코드들(records)을 출력한다. 이러한 상위 k 레코드들(상위 k 개의 레코드들)은 특정 측면에서 가능한 모든 응답들(answers) 중에서 가장 중요한 응답들을 나타낼 수 있다. 따라서, 사용자들은 이를 통해 데이터를 보다 용이하게 이해할 수 있다. 또한, 상위 k 질의들은 복잡한 데이터 분석 기법들을 적용하기 전에 기본적인 지식을 얻기 위해 이용될 수도 있다.
배열 데이터베이스들은 매우 큰 다차원 배열 데이터를 처리하기 때문에 데이터를 직감적으로 이해하거나 중요 영역들(important regions)을 추출하는 것은 쉽지 않다. 따라서, 방대한 배열 데이터를 효율적으로 분석하고 이해하기 위해, 배열 데이터베이스에서 상위 k 질의들을 지원할 필요가 있다. 상위 k 쿼리들에 대한 개념은 아래와 같이 다차원 배열 데이터베이스에 용이하게 적용될 수 있다.
Example 1: 기상학자들은 지구의 운량(cloudiness)과 그 특성들에 대하여 모니터링한다. 구름은 지구 에너지 균형에 영향을 미치기 때문에, 운량 모니터링은 기후 변화를 예측하는 데 있어 중요한 역할을 한다. 때때로, 기상학자들의 목적은 스코어링 함수(scoring function)에 의해 소팅된(sorted) k 개의 고정된 크기의 영역들(k fixed-sized regions)을 찾는 것이다. 도 1은 예시적인 맵(map)을 도시한다. 도 1에는 상위 2 개의 서브어레이들(subarrays)을 갖는 2차원 배열들이 도시되어 있다. 도 1에서 그늘진 영역들(shaded regions)은 주어진 스코어링 함수와 선택 조건들(selection conditions)에 따른 상위 2 개의 영역들을 의미한다. 기상학자들은 관심 영역들과 중요 영역들을 추출하고, 시간 흐름에 따라 k 개의 영역들의 변화를 연구하고, 이를 통하여 예상치 못한 변화들을 찾아낼 수 있다.
Example 2: 연구자들은 아마존(Amazon)의 삼림파괴 감지 시스템(deforestation detection system)을 만들고자 한다. 아마존은 전세계적인 환경생태현황(ecological conditions)에 엄청난 영향을 미친다. 따라서, 아마존에서의 삼림파괴를 모니터링하는 것은 매우 중요한 일이다. 연구자들은 NDVI(the Normalized Difference Vegetation Index)의 평균에 의해 스코어가 매겨진 상위 k 개의 고정된 크기의 영역들(top-k fixed-sized regions)을 추출한다. 연구자들은 또한 상위 k 영역들을 추출하고자 한다(여기서, 영역들은 NDVI에서 이웃하는 배열들(neighboring arrays) 사이에서 차이의 평균에 따라 스코어가 매겨진다).
상술한 예에서, 상위 k 개의 결과들은 k 개의 셀들(cells)이 아닌 k 개의 서브어레이들의 정렬된 시퀀스이다. 다차원 배열 데이터베이스에 대한 이러한 신규한 타입의 쿼리를 본 명에서에서는 상위 k 서브어레이 쿼리(top-k subarray query)라 명명하기로 한다. 상위 서브어레이 쿼리는 배열 데이터를 이해하고 배열 데이터의 의미를 찾는데 유용하다.
현재까지, 이러한 상위 k 서브어레이 쿼리를 해결하기 위한 효율적인 방법은 존재하지 않는다. 단순한 방법으로, 주어진 배열에서의 모든 서브어레이들의 스코어를 계산한 후 가장 높은 스코어를 갖는 k 개의 서브어레이들을 선택할 수 있다. 그러나, 이러한 방법은 두 가지의 문제점이 있다. 첫째, 방대한 배열에서 모든 서브어레이의 스코어를 계산하는 것은 매우 시간 소모적이다. 둘째, 모든 서브어레이들의 스코어를 계산하기까지 사용자는 응답을 알 수 없고, 이로 인하여 유용성이 매우 떨어진다.
본 발명에서는, 아래의 연구 방향들에 기초하여 배열 데이터베이스에 대한 상위 k 서브어레이 쿼리들에 대한 효율적인 처리 방법을 제안한다. 첫째, 상위 k 서브어레이들은 주어진 배열 내에서 모든 서브어레이들을 반드시 계산할 필요없이 검색되어야 한다. 둘째, 유용성이 향상되어야 한다. 셋째, 방대한 배열 데이터 내에서 쿼리를 처리하는 동안 메모리 오버플로우(memory overflow)를 방지하여야 한다. 넷째, 관리하여야 하는 매우 방대한 양의 배열 데이터로 인해 대부분의 배열 데이터베이스 시스템들은 기본적으로 분산 환경을 지원하기 때문에, 분산 처리가 지원되어야 한다.
우선, 배열 데이터베이스 내에서의 상위 k 서브배열(subarray) 쿼리를 정의한다. 서브배열들 각각은 다른 서브배열과 중첩되거나 중첩되지 않을 수 있다. 따라서, 두 개의 다른 타입(type)들의 상위 k 서브배열 질의(중첩이 허용되는 상위 k 서브배열 쿼리와 분리된(중첩이 허용되지 않는) 상위 k 서브배열 질의)가 정의될 수 있다. 중첩이 허용되는 상위 k 서브배열 쿼리(overlap-allowing top k subarray query)는 중첩과 상관없이 가장 높은 스코어를 갖는 서브배열들을 찾고자 하는 목적을 반영한 것이다. 어떤 경우에 있어서, 작은 영역이 매우 많은 속성 값들(attribute values)을 가진다면 대부분의 k 서브배열들은 다른 서브배열과 중첩될 수 있다. 이 경우, 서브배열들이 거의 동일한 위치에 위치하기 때문에, 결과의 의미가 반감될 수 있다. 따라서, 추가적인 상위 k 서브배열 쿼리, 즉 분리된(중첩이 허용되지 않는) 상위 k 서브배열 쿼리에 대한 정의가 필요하다. 분리된 상위 k 서브배열 쿼리는 서로가 분리된(격리된 또는 중첩되지 않은) 상위 k 서브배열들을 반환한다.
이러한 두 가지 유형의 상위 k 서브배열 쿼리들을 해결하기 위해, 배열 데이터에 대한 전처리(preprocess)가 수행될 수 있다. 첫째, 유용한 요약 정보를 추출하기 위해 배열은 분할된다. 본 발명에서는, PPTS라 불리는 상위 k 서브배열 쿼리 처리 방법을 제안한다. 제안 방법은 상위 k 서브배열들을 효율적으로 검색하기 위해 이러한 파티션들(partitions)을 이용하고 검색 공간을 가지친다(prune). 쿼리는 점진적으로(progressively) 풀이된다. 쿼리가 나머지 응답들을 찾는 동안에 사용자는 부분적으로 반환된 서브배열들을 이용하여 데이터 분석을 수행할 수 있기 때문에 점진적인 접근법은 유용성을 높인다. 다음으로, 본 발명에서는 분산된 점진적인 상위 k 서브배열 쿼리 처리 방법을 제안한다. 대규모의 데이터 분석에서 분산 처리를 지원하는 것은 중요한 이슈이다. 마지막으로, 제안된 방법을 위한 최적화 기법들을 소개한다.
대한민국 공개특허 제2017-0076541호 (2017.07.04. 공개) 대한민국 공개특허 제2017-0128666호 (2017.11.23. 공개) 일본국 공개특허 특개2015-232782호 (2015.12.24. 공개)
[1] Didan, K.. MOD13Q1 MODIS/Terra Vegetation Indices 16-Day L3 Global 250m SIN Grid V006. 2015, distributed by NASA EOSDIS LP DAAC, https://doi.org/10.5067/MODIS/MOD13Q1.006. [2] NASA VISIBLE EARTH. https://visibleearth.nasa.gov/view.php?id=92137. [3] Platnick, S., Ackerman, S., King, M., et al., 2015. MODIS Atmosphere L2 Cloud Product (06 L2). NASA MODIS Adaptive Processing System, Goddard Space Flight Center, USA: http://dx.doi.org/10.5067/MODIS/MOD06 L2.006. [4] Wan, Z., S. Hook, G. Hulley. MOD11A1 MODIS/Terra Land Surface Temperature/Emissivity Daily L3 Global 1km SIN Grid V006. 2015, distributed by NASA EOSDIS LP DAAC, https://doi.org/10.5067/MODIS/MOD11A1.006. [5] D. Amagata, T. Hara, and S. Nishio. Distributed top-k query processing on multi-dimensional data with keywords. In Proceedings of the 27th International Conference on Scientific and Statistical Database Management, page 10. ACM, 2015. [6] P. Baumann, A. Dehmel, P. Furtado, R. Ritsch, and N. Widmann. The multidimensional database system rasdaman. In Acm Sigmod Record, volume 27, pages 575-577. ACM, 1998. [7] P. G. Brown. Overview of scidb: large scale array storage, processing and analysis. In Proceedings of the 2010 ACM SIGMOD International Conference on Management of data, pages 963-968. ACM, 2010. [8] P. Cao and Z. Wang. E cient top-k query calculation in distributed networks. In Proceedings of the twenty-third annual ACM symposium on Principles of distributed computing, pages 206-215. ACM, 2004. [9] D.-W. Choi, C.-W. Chung, and Y. Tao. A scalable algorithm for maximizing range sum in spatial databases. PVLDB, 5(11):1088-1099, 2012. [10] P. Cudre-Mauroux, H. Kimura, K.-T. Lim, J. Rogers, S. Madden, M. Stonebraker, S. B. Zdonik, and P. G. Brown. Ss-db: A standard science dbms benchmark. Under submission, 2010. [11] R. Fagin, A. Lotem, and M. Naor. Optimal aggregation algorithms for middleware. Journal of computer and system sciences, 66(4):614-656, 2003. [12] K. Feng, G. Cong, S. S. Bhowmick, W.-C. Peng, and C. Miao. Towards best region search for data exploration. In Proceedings of the 2016 International Conference on Management of Data, pages 1055-1070. ACM, 2016. [13] J. Gray, S. Chaudhuri, A. Bosworth, A. Layman, D. Reichart, M. Venkatrao, F. Pellow, and H. Pirahesh. Data cube: A relational aggregation operator generalizing group-by, cross-tab, and sub-totals. Data mining and knowledge discovery, 1(1):29-53, 1997. [14] I. F. Ilyas, G. Beskales, and M. A. Soliman. A survey of top-k query processing techniques in relational database systems. ACM Computing Surveys (CSUR), 40(4):11, 2008. [15] L. Jiang, H. Kawashima, and O. Tatebe. Incremental window aggregates over array database. In Big Data (Big Data), 2014 IEEE International Conference on, pages 183-188. IEEE, 2014. [16] A. Kalinin, U. Cetintemel, and S. Zdonik. Searchlight: Enabling integrated search and exploration over large multidimensional data. PVLDB, 8(10):1094-1105, 2015. [17] A. Kalinin, U. Cetintemel, and S. Zdonik. Interactive search and exploration of waveform data with searchlight. In Proceedings of the 2016 International Conference on Management of Data, pages 2105-2108. ACM, 2016. [18] J. Liu, G. Yu, and H. Sun. Subject-oriented top-k hot region queries in spatial dataset. In Proceedings of the 20th ACM international conference on Information and knowledge management, pages 2409-2412. ACM, 2011. [19] S. Michel, P. Triantafillou, and G. Weikum. Klee: A framework for distributed top-k query algorithms. In Proceedings of the 31st international conference on Very Large Data Bases, pages 637-648. VLDB Endowment, 2005. [20] S. Papadopoulos, K. Datta, S. Madden, and T. Mattson. The tiledb array data storage manager. PVLDB, 10(4):349-360, 2016. [21] D. Skoutas, D. Sacharidis, and K. Patroumpas. E cient progressive and diversified top-k best region search. In Proceedings of the 26th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems, pages 299-308. ACM, 2018. [22] E. Soroush, M. Balazinska, and D. Wang. Arraystore: a storage manager for complex parallel array processing. In Proceedings of the 2011 ACM SIGMOD International Conference on Management of data, pages 253-264. ACM, 2011. [23] M. Stonebraker, P. Brown, A. Poliakov, and S. Raman. The architecture of scidb. In International Conference on Scientific and Statistical Database Management, pages 1-16. Springer, 2011. [24] R. Taft, M. Vartak, N. R. Satish, N. Sundaram, S. Madden, and M. Stonebraker. Genbase: A complex analytics genomics benchmark. In Proceedings of the 2014 ACM SIGMOD international conference on Management of data, pages 177-188. ACM, 2014. [25] G. Tsatsanifos, D. Sacharidis, and T. K. Sellis. Ripple: A scalable framework for distributed processing of rank queries. In EDBT, pages 259-270, 2014. [26] A. Vlachou, C. Doulkeridis, and K. Norvag. Distributed top-k query processing by exploiting skyline summaries. Distributed and Parallel Databases, 30(3-4):239-271, 2012. [27] A. Vlachou, C. Doulkeridis, K. Norvag, and M. Vazirgiannis. On e cient top-k query processing in highly distributed environments. In Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pages 753-764. ACM, 2008. [28] R. A. R. Zalipynis. Chronosdb: distributed, file based, geospatial array dbms. PVLDB, 11(10):1247-1261, 2018.
본 발명이 이루고자 하는 기술적인 과제는 배열 데이터베이스에서 점진적인 상위 k 질의 처리를 위한 장치 및 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 상위 k 질의 처리 방법은 적어도 프로세서를 포함하는 컴퓨팅 장치에서 수행되고, 복수의 셀(cell)들로 구성된 배열(array)을 복수의 파티션들(partitions)로 분할하는 단계 및 상기 배열 내에서
Figure 112020002190097-pat00001
Figure 112020002190097-pat00002
응답을 검색하는 단계를 포함한다.
본 발명의 실시 예에 따른 상위 k 질의 처리 장치 및 방법에 의할 경우, 주어진 배열 내에서 모든 서브배열들을 반드시 계산할 필요없이 상위 k 서브어레이들, 즉 응답을 검색할 수 있다.
또한, 본 발명에 의할 경우 점진적인 상위 k 질의 처리 방법을 제공할 수 있어 유용성이 향상될 수 있다.
또한, 방대한 배열 데이터 내에서 쿼리를 처리하는 동안 메모리 오버플로우(memory overflow)를 방지할 수 있으며, 분산 처리가 가능하다는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 예시적인 맵을 도시한다.
도 2는 단일의 속성을 갖는 2차원 배열과 상위 k 서브배열 쿼리의 예를 도시한다.
도 3은 파티션들의 예시를 도시한다.
도 4는 알고리즘 1을 도시한다.
도 5는 도 2와 도 3의 배열, 쿼리 및 파티션들을 이용한 상위 2 개의 서브배열 쿼리에 대한 응답을 나타낸다.
도 6은 2차원들과 3 개의 속성들을 갖는 배열에서의 정규 청크화를 도시한다.
도 7은 확장된 청크들을 도시한다.
도 8은 예시적인 시나리오를 도시한다.
도 9는 알고리즘 2를 도시한다.
도 10은 알고리즘 3을 도시한다.
도 11은 알고리즘 4를 도시한다.
도 12는 배열이 4개의 청크들로 분할되는 예를 도시한다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 '연결되어 있다'거나 '접속되어 있다'고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 '직접 연결되어 있다'거나 '직접 접속되어 있다'고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 '~사이에'와 '바로 ~사이에' 또는 '~에 이웃하는'과 '~에 직접 이웃하는' 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
우선, 본 명세서에서 사용되는 용어에 대하여 정의한다.
Definition 1.1 (Array, 배열).
차원
Figure 112020002190097-pat00003
가 범위
Figure 112020002190097-pat00004
에 속하는 연속 정수(consecutive integers)의 집합이라 하자. 즉,
Figure 112020002190097-pat00005
Figure 112020002190097-pat00006
이다. 여기서, 하계(lower bound)
Figure 112020002190097-pat00007
과 상계(upper bound)
Figure 112020002190097-pat00008
는 정수이고, 속성(attribute)
Figure 112020002190097-pat00009
는 실수(real numbers) 집합이다.
Figure 112020002190097-pat00010
개의 차원들
Figure 112020002190097-pat00011
Figure 112020002190097-pat00012
개의 속성들
Figure 112020002190097-pat00013
가 주어졌을 때,
Figure 112020002190097-pat00014
차원 배열
Figure 112020002190097-pat00015
는 함수
Figure 112020002190097-pat00016
에 의해 정의된다.
Figure 112020002190097-pat00017
내의 튜플(tuple)
Figure 112020002190097-pat00018
는 배열의 셀(cell)이라 불린다.
Definition 1.2 ( Subarray , 서브배열).
Figure 112020002190097-pat00019
에 의해 정의된 배열
Figure 112020002190097-pat00020
가 주어졌을 때, 배열
Figure 112020002190097-pat00021
의 서브배열
Figure 112020002190097-pat00022
Figure 112020002190097-pat00023
에 의해 정의된 배열이다. 여기서,
Figure 112020002190097-pat00024
Figure 112020002190097-pat00025
이고,
Figure 112020002190097-pat00026
Figure 112020002190097-pat00027
이고,
Figure 112020002190097-pat00028
내의 셀
Figure 112020002190097-pat00029
의 속성 값들(attribute values)은
Figure 112020002190097-pat00030
내의 속성 값들과 같다.
Figure 112020002190097-pat00031
은 서브배열의 시작 셀(starting cell)이고
Figure 112020002190097-pat00032
는 마지막 셀(ending cell)이다. 서브배열은
Figure 112020002190097-pat00033
로 표시된다.
서브배열들에 대한 랭킹(ranking, 순위)을 산출하고 상위 k 개를 검색하기 위하여, 서브배열의 셀들 내의 선택된 속성(측정 속성(measure attribute)이라 불림)의 값들을 집계하고(aggregates) 스코어 값(score value)을 생성하는 스코어링 함수
Figure 112020002190097-pat00034
가 서브배열에 적용된다. 본 발명에서는 속성 값들의 집합에 대한 부분적인 순서(partial order)와 관련하여 스코어링 함수는 엄격하게 증가하는 것으로 가정한다. 즉, 주어진 두 개의 속성 값들의 집합들
Figure 112020002190097-pat00035
Figure 112020002190097-pat00036
에 대하여,
Figure 112020002190097-pat00037
에 대하여
Figure 112020002190097-pat00038
가 성립하면,
Figure 112020002190097-pat00039
이 성립한다. 예시적인 스코어링 함수들은 Sum(총합을 산출하는 함수), Avg(평균을 산출하는 함수), Min(최솟값을 산출하는 함수), Max(최댓값을 산출하는 함수), 및 Median(중앙값을 산출하는 함수) 등이다.
Definition 1.3 (Top-k Subarray Query, 상위 k 서브배열 쿼리 ).
배열
Figure 112020002190097-pat00040
, 스코어링 함수
Figure 112020002190097-pat00041
, 선택 조건들
Figure 112020002190097-pat00042
, 서브배열의 크기
Figure 112020002190097-pat00043
, 및 정수
Figure 112020002190097-pat00044
가 주어졌을 때, 상위 k 서브배열 쿼리는 배열
Figure 112020002190097-pat00045
에서
Figure 112020002190097-pat00046
에 의해 획득된 가장 높은 스코어를 갖고
Figure 112020002190097-pat00047
를 만족하는 크기가
Figure 112020002190097-pat00048
인 k 개의 서브배열들을 검색한다.
상위 k 서브배열들은 분리되거나(중첩되지 않거나) 분리되지 않을(중첩될) 수 있다. 따라서, 두 가지 타입의 상위 k 서브배열 쿼리들, 즉 (1) 중복이 허용되는 상위 k 서브배열 쿼리와 (2) 분리된 상위 k 서브배열 쿼리를 고려하여야 한다. 중복이 허용되는 상위 k 서브배열 쿼리는 서브배열들 사이의 중첩 여부와 무관하게 Definition 1.3을 만족하는 서브배열들을 검색한다. 즉, k 개의 서브배열들은 다른 서브배열과 중첩되거나 중첩되지 않을 수 있다. 이로 인하여, 중첩이 허용되는 상위 k 서브배열 쿼리는 의미가 반감된 k 개의 서브배열들을 산출할 수 있다. 즉, 주어진 배열 내의 작은 영역이 측정 속성에 대한 매우 큰 값들을 갖는 셀들을 포함하고 있을 때, 대부분의 서브배열들이 다른 서브배열과 중첩될 가능성이 있다. 따라서, 분리된 상위 k 서브배열 쿼리들이 필요하다.
Definition 1.4 (Disjoint Top-k Subarray Query, 분리된 상위 k 서브배열 쿼리).
배열
Figure 112020002190097-pat00049
, 스코어링 함수
Figure 112020002190097-pat00050
, 선택 조건들
Figure 112020002190097-pat00051
, 서브배열의 크기
Figure 112020002190097-pat00052
, 및 정수
Figure 112020002190097-pat00053
가 주어졌을 때, 분리된 상위 k 서브배열 쿼리는 배열
Figure 112020002190097-pat00054
에서
Figure 112020002190097-pat00055
를 만족하고 다음 조건들을 만족하는 크기가
Figure 112020002190097-pat00056
인 k 개의 서브배열들, 즉
Figure 112020002190097-pat00057
를 검색한다.
·
Figure 112020002190097-pat00058
는 가장 높은 스코어를 갖는 서브배열이다.
·
Figure 112020002190097-pat00059
는 모든
Figure 112020002190097-pat00060
로부터 분리되고(즉, 모든
Figure 112020002190097-pat00061
와 중첩되지 않고) 가장 높은 스코어를 갖는 서브배열이다.
본 명세서에서는 중첩이 허용되는 상위 k 서브배열 쿼리들을 중첩이 허용되는 쿼리들(overlap-allowing queries)이라 명하고, 분리된 상위 k 서브배열 쿼리들을 분리된 쿼리들(disjoint queries)이라 명한다.
보통, 방대한 양의 다차원 배열 데이터에서 상위 k 서브배열들을 검색하기 위해서는 상당한 시간이 필요하다. 응답 시간을 감소시키고 유용성을 높이기 위해, 본 발명에서는 PPTS라 불리는, 상위 k 서브배열 쿼리를 처리하기 위한 점진적인 방법을 제안한다.
우선, 배열 데이터베이스에서 상위 k 서브배열 쿼리들을 처리하기 위한 가장 기초적인 방법을 설명한다. 이 방법은 모든 가능한 서브배열들의 스코어를 계산하고 상위 k 개의 결과들을 선택하다. 따라서, 이 방법은 점진적이지 않다. 중첩이 허용되는 쿼리들을 위한 본 발명은 주어진 배열 내에서 선택 조건들을 만족하고 주어진 서브배열 크기를 갖는 모든 서브배열들 계산하고 쿼리 처리 동안에 가장 높은 스코어를 갖는 오직 k 개의 서브배열들 저장한다. 만약 후보 서브배열들(candidate subarrays) 내의 k번째 서브배열의 스코어보다 높은 스코어를 갖는 새로운 서브배열이 검색된 경우, 새로운 서브배열은 상위 k 개의 응답들을 위한 새로운 후보가 되며 이전의 k번째 서브배열을 대체한다. 이 방법은 상위 k 개의 서브배열들 간의 중첩을 허용한다.
상술한 중첩이 허용되는 쿼리 처리 방법에 기초하여 분리된 쿼리를 위한 가장 기초적인 방법을 설명한다. 분리된 쿼리들에서, 선택된 서브배열들은 다른 서브배열과 분리되어야 한다(즉, 중첩이 허용되지 않는다). 이 방법 또한 주어진 배열 내의 모든 서브배열들의 스코어를 계산한다. 그러나, 중첩이 허용되는 쿼리와 분리된 쿼리의 차이점은, 분리된 쿼리는 서브배열들을 계산하는 동안에 서브배열이 상위 k 서브배열들 중 하나인지 여부를 결정할 수 없다는 것이다. 이는 모든 계산된 서브배열들이 유지되어야 함을 의미한다. 이에 관한 보다 구체적인 설명은 후술하기로 한다. 모든 서브배열들을 체크한 후에 스코어에 따라 소팅하고 Definition 1.4를 만족하는 분리된 상위 k 개의 서브배열들을 검색한다.
이하에서는, 본 발명에서 제안하는 PPTS 기법을 설명한다.
본 발명에서는 분할(파티션) 기반 점진적인 상위 k 서브배열 쿼리 처리 방법(PPTS : Partition-based Progressive Top-k Subarray Query Processing)을 제안한다.
상술한 기초적인 기법은 쿼리 타입과 무관하게 배열 내의 모든 가능한 서브배열들을 계산하여야 하기 때문에, 매우 큰 비용을 지출하여야 한다. 도 2를 예로 들면, 그늘진 셀들을 포함하는 서브배열들이 상위 k 개의 응답들에 속하지 않을 것 같음에도 불구하고, 이러한 서브배열들에 대한 계산이 수행되어야 한다. 게다가, 상술한 방법은 상위 k 개의 서브배열들을 점진적으로 제공하지 못한다. 이러한 문제들을 해결하기 위하여, 본 발명에서는 새로운 상위 k 서브배열 쿼리 처리 방법을 제안한다. 제안 기법은 2 개의 단계, 즉 배열을 분할하는 단계와 파티션들을 이용하여 상위 k 서브배열 쿼리들을 처리하는 단계로 구성된다.
전처리 - 배열 데이터에 대한 분할(Preprocessing - Partitioning over Array Data)
상위 k 서브배열 쿼리들에 대한 효율적인 처리를 위해, 주어진 배열 데이터를 분할하고 파티션들에 대한 유용한 정보를 계산하는 것을 제안한다. 제한하는 분할 기법은 배열 데이터에서 이웃하는 셀들(neighboring cells)은 유사한 속성 값들을 갖는 경향이 있음을 고려한 것이다. 분할 결과들은 상위 k 서브배열들을 검색하기 위한 검색 공간(search space)을 가지치는(prune) 과정에서 이용된다. m차원 배열 데이터의 차원에 대한 분할 크기들(partitioning sizes)
Figure 112020002190097-pat00062
이 주어지면, 전체 배열은 파티션들(partitions)이라 불리는 균일한 서브배열들(uniform subarrays)로 분할된다. 그러면, 각 파티션은 파티션 내에서 (속성 값을 가진) 모든 셀들을 포함할 수 있을 정도로 축소된다.
분할 알고리즘은 다음과 같다. 첫째, 주어진 배열은 파티션 크기 파라미터들(partition size parameters)
Figure 112020002190097-pat00063
에 따라 균일하게(uniformly) 분할되고, 파티션들은 축소되고, 각 파티션의 최대 값(maximum values, 즉 해당 파티션 내에서 가장 큰 측정 속성 값)과 측정 속성에 대한 값을 갖는 셀의 개수(cell counts)가 계산된다. 둘째, 파티션들은 최대 값들의 내림차순으로(in descending order of maximum values) 소팅(sort) 또는 배열된다. 마지막으로, 시작 셀(starting cell, 예컨대 파티션의 좌측 상단 셀의 위치 정보), 마지막 셀(ending cell, 예컨대 파티션의 우측 하단 셀의 위치 정보), 최대 값, 및 셀의 개수를 포함하는 파티션들에 대한 정보가 저장 장치에 파티션 테이블(partition table)로 저장될 수 있다. 도 3은 주어진 예시적인 배열에서 파티션 크기 파라미터들이 {2, 3}, 즉
Figure 112020002190097-pat00064
이 2이고
Figure 112020002190097-pat00065
가 3일 때의 분할의 결과가 도시되어 있다. 주어진 파티션 크기 파라미터들에 의해 초기 파티션은 2×3 행렬 또는 2×3의 셀 집합으로 구성될 수 있다. 즉, 파티션 크기 파라미터들은 초기 파티션 내에 포함되는 셀들의 행의 크기와 열의 크기를 규정한다.
파티션 계산의 시간 복잡도(time complexity)는
Figure 112020002190097-pat00066
Figure 112020002190097-pat00067
이다. 여기서
Figure 112020002190097-pat00068
은 주어진 배열 내 셀이 개수이고,
Figure 112020002190097-pat00069
은 생성되는 파티션의 개수이다. 전체 배열 데이터를 스캔하고 생성된 파티션들을 소팅할 필요가 있기 때문이다. 만약, 측정 속성이 다른 속성으로 변경된다면, 분할은 새로운 측정 속성에 대하여 재차 수행되어야 한다.
이하에서는, 기본적인 분할 기반 점진적인 상위 k 서브배열 쿼리의 처리 방법(Basic Partition-based Progressive Top-k Subarray Query Processing)에 대하여 설명한다.
우선, MVS(Maximal virtual subarray)와 UBS(upper bound score)에 대해 설명한다.
Definition 2.1 (Maximal Virtual Subarray , MVS (최대 가상 서브배열)).
파티션
Figure 112020002190097-pat00070
와 서브배열의 크기
Figure 112020002190097-pat00071
가 주어졌을 때,
Figure 112020002190097-pat00072
의 MVS(최대 가상 서브배열)은
Figure 112020002190097-pat00073
내의 모든 셀들이 측정 속성의 최대 값을 갖는 크기가
Figure 112020002190097-pat00074
인 서브배열이다.
Definition 2.2 (Upper Bound Score, USB(상계 스코어)).
파티션
Figure 112020002190097-pat00075
와 스코어링 함수
Figure 112020002190097-pat00076
이 주어졌을 때,
Figure 112020002190097-pat00077
의 UBS(상계 스코어)는
Figure 112020002190097-pat00078
이다.
Lemma 2.1.
스코어링 함수
Figure 112020002190097-pat00079
와 배열에 대하여 최대 값들(maximum values)의 내림차순으로 정렬된 파티션들의 시퀀스
Figure 112020002190097-pat00080
가 있다고 가정하자. 서브배열
Figure 112020002190097-pat00081
Figure 112020002190097-pat00082
와 중첩되지만
Figure 112020002190097-pat00083
내의 어떠한 파티션과도 중첩되지 않는다면,
Figure 112020002190097-pat00084
이 성립한다.
PROOF.
Figure 112020002190097-pat00085
일 때,
Figure 112020002190097-pat00086
은 전체 배열에서 가장 큰 값(maximum value)으로 구성된다. 따라서,
Figure 112020002190097-pat00087
이다.
Figure 112020002190097-pat00088
(
Figure 112020002190097-pat00089
)에 대하여,
Figure 112020002190097-pat00090
라 가정하자. 서브배열
Figure 112020002190097-pat00091
내에는
Figure 112020002190097-pat00092
의 최대 값
Figure 112020002190097-pat00093
보다 큰 값을 갖는 적어도 하나의 셀
Figure 112020002190097-pat00094
이 존재한다.
Figure 112020002190097-pat00095
내의 모든 셀 값들은
Figure 112020002190097-pat00096
보다 작거나 같기 때문에,
Figure 112020002190097-pat00097
Figure 112020002190097-pat00098
에 속하지 않는다. 그러면,
Figure 112020002190097-pat00099
는 최대 값이 명백하게
Figure 112020002190097-pat00100
의 값보다 크거나 같은 다른 파티션
Figure 112020002190097-pat00101
에 속하여야 한다. 이는
Figure 112020002190097-pat00102
Figure 112020002190097-pat00103
에 속하고,
Figure 112020002190097-pat00104
Figure 112020002190097-pat00105
내의 파티션과 중첩됨을 의미한다. 이는 가정에 모순된다.
Corollary 2.1. 스코어링 함수
Figure 112020002190097-pat00106
와 배열에 대한 파티션들 집합
Figure 112020002190097-pat00107
가 주어졌을 때, 서브배열
Figure 112020002190097-pat00108
가 파티션들의 부분집합(subset)
Figure 112020002190097-pat00109
와 중첩되고,
Figure 112020002190097-pat00110
내의 파티션들 중에서 파티션
Figure 112020002190097-pat00111
는 가장 높은 최대 값을 갖는다. 결국,
Figure 112020002190097-pat00112
이다.
PROOF.
Figure 112020002190097-pat00113
Figure 112020002190097-pat00114
과는 중첩되나
Figure 112020002190097-pat00115
보다 큰 최대 값을 갖는 어떤 파티션과도 중첩되지 않는다. 따라서, Lemma 2.1에 의하여
Figure 112020002190097-pat00116
이다.
Figure 112020002190097-pat00117
를 획득할 때 선택 조건들
Figure 112020002190097-pat00118
를 고려한다면,
Figure 112020002190097-pat00119
는 낮춰질 수 있다. 그러나,
Figure 112020002190097-pat00120
가 커지는 것을 불가능하며, 이는
Figure 112020002190097-pat00121
가 여전히 동작 중임을 의미한다.
이전의 definitions과 lemma에 기초할 때, 주어진 배열 내의 모든 서브배열들을 체크할 필요없이 상위 k 서브배열들은 점진적으로 안전하게 반환될 수 있다. 알고리즘 1(도 4 참조)에 기재된 파티션 기반 점진적인 분리된 상위 k 서브배열 쿼리 처리에 대하여 상세하게 설명하기로 한다. 주어진 배열 내에서
Figure 112020002190097-pat00122
응답
Figure 112020002190097-pat00123
을 찾기 위하여, 알고리즘은 소팅된(배열된) 순서 내에서 파티션들을 연속적으로(serially) 선택하고, 각 파티션과 연관된(즉, 파티션에 포함된 셀들 중 적어도 하나의 셀을 포함하는) 서브배열들(체크되지 않은 모든 서브배열들)의 스코어를 계산한다. 파티션들은 최대 값의 내림 차순으로 정렬되어 있다. 따라서, 알고리즘은 가장 큰 최대 값을 갖는 파티션들을 우선적으로 검색하고, 이는 높은 스코어를 갖는 서브배열이 우선적으로 고려됨을 의미한다. 알고리즘 1의
Figure 112020002190097-pat00124
은 가장 유력한
Figure 112020002190097-pat00125
응답 후보인 서브배열과 그 스코어를 유지한다. 알고리즘은
Figure 112020002190097-pat00126
내에서 체크되지 않은 첫번째 파티션을 체크하고, 파티션에 대한 과정
Figure 112020002190097-pat00127
를 호출한다. 파티션과 중첩되는 체크되지 않은 서브배열들의 집합
Figure 112020002190097-pat00128
내의 각 서브배열에 대하여, 선택 조건들이 만족되면 알고리즘은 스코어를 계산한다(Lines 26-27).
Figure 112020002190097-pat00129
를 찾기 위하여, 각 서브배열이 이미 체크되었는지 여부를 결정하기 위해 알고리즘은 불리언 배열(Boolean array)을 이용한다(Line 24). 서브배열의 스코어가
Figure 112020002190097-pat00130
의 스코어보다 작거나 같으면, 알고리즘은 서브배열을
Figure 112020002190097-pat00131
에 삽입한다(Line 34). 그렇지 않고,
Figure 112020002190097-pat00132
내의 모든 서브배열들로부터 분리되어 있다면(중첩되지 않는다면),
Figure 112020002190097-pat00133
Figure 112020002190097-pat00134
는 서브배열로 업데이트된다(Lines 28-32).
Figure 112020002190097-pat00135
는 쿼리에 대한 응답이 될 수 있는 서브배열들의 집합을 유지하기 위해 이용된다.
파티션을 처리한 후, 알고리즘은 다음 파티션으로 이동하고 응답-반환 조건(answer-returning condition)을 체크한다(Lines 6-8).
Figure 112020002190097-pat00136
의 스코어가 파티션의 상계 스코어(upper bound score)보다 크다면,
Figure 112020002190097-pat00137
은 안전하게
Figure 112020002190097-pat00138
응답으로 리턴될 수 있다(Line 14). 파티션들은 최대 값의 내림차순으로 체크되기 때문에, 각 파티션의 UBS는 파티션과 중첩되며 체크되지 않은 서브배열이 가질 수 있는 가능한 최대 스코어(maximal score)이다. 따라서,
Figure 112020002190097-pat00139
이 응답-리턴 조건을 만족한다면,
Figure 112020002190097-pat00140
보다 높은 스코어를 갖는 남은 파티션들 중에 체크되지 않은 서브배열은 존재하지 않는다.
Figure 112020002190097-pat00141
Figure 112020002190097-pat00142
에 삽입되어야 하고 기존의 응답들과 중첩되는 후보 서브배열들(candidate subarrays)을 필터링하는데 사용된다(Line 15).
Figure 112020002190097-pat00143
응답을 리턴한 후, 알고리즘은
Figure 112020002190097-pat00144
에서 불필요한 서브배열들을 제거하고,
Figure 112020002190097-pat00145
내에서 가장 높은 스코어를 갖는 서브배열을 새로운
Figure 112020002190097-pat00146
으로 선택한다(Lines 16-21). 즉,
Figure 112020002190097-pat00147
에서
Figure 112020002190097-pat00148
응답과 중첩되는 서브배열들은 삭제될 수 있다.
중첩을 허용하는 쿼리 처리 알고리즘은 분리된 쿼리들을 위한 알고리즘 1과 유사하지만, 두 가지 큰 차이점이 있다. 첫째,
Figure 112020002190097-pat00149
응답을 반환한 후, 알고리즘은 중첩을 고려하지 않고
Figure 112020002190097-pat00150
내에서 가장 높은 스코어를 갖는 서브배열을 새로운
Figure 112020002190097-pat00151
으로 선택한다. 둘째, 서브배열의 스코어를 계산한 후(Line 27), 중첩을 허용하는 쿼리는 분리 조건(disjoint condition)을 고려하지 않는다. 만약 서브배열이 선택 조건들을 만족한다면,
Figure 112020002190097-pat00152
내로 삽입된다. 서브배열의 스코어가
Figure 112020002190097-pat00153
의 스코어보다 크다면, 해당 서브배열은 중첩을 고려하지 않고 새로운
Figure 112020002190097-pat00154
이 된다. 본 명세서에서의 선택 조건들은 속성, 셀, 배열 등에 대한 세부 조건들이 될 수 있으며, 특별히 미리 정해진 선택 조건들은 존재하지 않을 수도 있다.
PPTS 기반의 예시적인 배열과 쿼리는 도 2에 도시되어 있고, 파티션들은 도 3에 도시되어 있다. 또한, 도 5에는 도 2와 도 3의 배열, 쿼리 및 파티션들을 이용한 상위 2 개의 서브배열 쿼리에 대한 응답이 도시되어 있다.
쿼리가 분리된 상위 2 개의 서브배열들을 찾는 것임을 가정하자. 쿼리는 첫번째 파티션
Figure 112020002190097-pat00155
를 방문(고려)한다.
Figure 112020002190097-pat00156
의 시작 셀(starting cell)은
Figure 112020002190097-pat00157
이다. 파티션과 중첩되는 모든 서브배열들이 계산된 후,
Figure 112020002190097-pat00158
Figure 112020002190097-pat00159
이다. 쿼리는 다음 파티션
Figure 112020002190097-pat00160
를 리드(reads)한다.
Figure 112020002190097-pat00161
의 UBS는 60이고, 따라서
Figure 112020002190097-pat00162
은 응답-반환 조건을 만족한다. 세번째 파티션
Figure 112020002190097-pat00163
을 방문한 후,
Figure 112020002190097-pat00164
Figure 112020002190097-pat00165
이 된다.
Figure 112020002190097-pat00166
의 스코어는 네번째 파티션
Figure 112020002190097-pat00167
의 UBS(즉, 44)보다 크다. 쿼리는 남은 서브배열들을 계산하지 않고
Figure 112020002190097-pat00168
을 두번째 응답으로 반환한다.
Theorem 2.1 스코어링 함수
Figure 112020002190097-pat00169
, 배열에 대하여 최대 값들의 내림차순으로 정렬된 파티션들의 시쿼스
Figure 112020002190097-pat00170
, 및 상위 k 서브배열 쿼리가 주어졌을 때, 파티션들의 집합
Figure 112020002190097-pat00171
Figure 112020002190097-pat00172
이 제안된 알고리즘들에 의해 처리된다고 가정하자.
Figure 112020002190097-pat00173
를 다음 응답을 위한 후보들인 체크된 모든 서브배열들 중 가장 큰 스코어를 갖는 서브배열이라 하자.
Figure 112020002190097-pat00174
의 스코어가 파티션
Figure 112020002190097-pat00175
의 UBS보다 크다면,
Figure 112020002190097-pat00176
의 스코어보다 큰 스코어를 갖는 체크되지 않은 서브배열은 없다.
PROOF.
Figure 112020002190097-pat00177
의 스코어보다 큰 스코어를 갖는 체크되지 않은 서브배열
Figure 112020002190097-pat00178
이 존재한다고 가정하자, 즉
Figure 112020002190097-pat00179
이다.
Figure 112020002190097-pat00180
내의 파티션들과 중첩되는 모든 서브배열들은 계산되었기 때문에,
Figure 112020002190097-pat00181
Figure 112020002190097-pat00182
내의 어떤 파티션과도 중첩되지 않는 반면에, 서브배열
Figure 112020002190097-pat00183
Figure 112020002190097-pat00184
내의 적어도 하나의 파티션과 중첩된다. 일반성을 잃지 않고,
Figure 112020002190097-pat00185
Figure 112020002190097-pat00186
와 중첩되는
Figure 112020002190097-pat00187
내의 파티션이라 하고 가장 큰 최대 값을 갖는다고 가정하자. 이는
Figure 112020002190097-pat00188
Figure 112020002190097-pat00189
와는 중첩되지만
Figure 112020002190097-pat00190
와는 중첩되지 않음을 의미한다. Lemma 2.1에 의하여,
Figure 112020002190097-pat00191
이고, 파티션들의 정렬 순서에 의하여
Figure 112020002190097-pat00192
이다. 따라서,
Figure 112020002190097-pat00193
이라면,
Figure 112020002190097-pat00194
이 성립하게 되고, 이는 가정에 모순된다.
분산 처리(DISTRIBUTED PROCESSING)
상위 k 서브배열 쿼리에 대한 처리를 위한 분산 처리에 대한 구체적인 설명에 앞서, 배열 데이터베이스에 대한 청크화(chunking) 개념을 설명한다. 배열이 너무 방대하여 하나의 노드(컴퓨팅 장치)에 저장되기 힘들다면, 배열 데이터베이스는 멀티플 노드들(multiple nodes)로 분산되어야 한다. 이를 위해, 배열 데이터베이스는 배열을 멀티플 청크들(multiple chunks)로 분할한다(비특허문헌 6, 7, 20, 22, 28 참조). 청크화는 배열 데이터베이스에서 분산 처리를 지원하기 위한 기본 원칙이다. 청크(chunk)는 I/O와 네트워크 전송의 단위가 된다. SciDB(비특허문헌 7 참조), the de facto standard array database는 배열을 각각이 동일한 차원 크기(same dimension sizes)를 갖는 정규 청크들(regular chunks)로 분할한다. SciDB는 사용자로 하여금 청크들을 위한 차원 크기를 입력하도록 한다. ArrayStore(비특허분헌 22 참조)는 정규 청크화(regular chunking), 비정규 청크화(irregular chunking), 및 정규 또는 비정규 방식의 2-레벨 청크화(two-level chunking)를 제공한다. 비정규 청크화는 각 청크가 상이한 차원 사이즈를 갖도록 한다. 청크들은 비어있지 않은 셀들의 개수(the number of non-empty cells)가 동일해야 한다는 것과 같은 상이한 조건들을 만족한다. 본 발명에서는 정규 청크화를 이용하지만, 본 발명의 범위가 이에 제한되는 것은 아니다. 제안 기법은 비정규 청크화로 용이하게 확장될 수 있다.
각 속성의 값들을 별개의 청크들로 저장하는 컬럼 스토어 배열 데이터베이스를 가정한다.
즉, 배열이
Figure 112020002190097-pat00195
개의 속성들
Figure 112020002190097-pat00196
을 갖는다면, 셀의 속성 값들은 분리된
Figure 112020002190097-pat00197
개의 청크들에 저장되고, 이는 하나의 노드에 저장된다.
도 6은 2차원들
Figure 112020002190097-pat00198
과 3 개의 속성들
Figure 112020002190097-pat00199
을 갖는 배열에서의 정규 청크화를 도시한다.
Figure 112020002190097-pat00200
Figure 112020002190097-pat00201
에 대한 청크 크기는 4이다. 청크들은 2 개의 노드들에 분산되고, 각 노드는 6개의 청크들을 갖는다.
배열의 청크들이 멀티플 노드들에 분산되어 있는 경우, 청크의 경계에 위치하는 모든 경계 서브배열들(boundary subarrays)은 단일의 노드에서 계산될 수 없다. 예컨대, 도 6에서 Node 1은 (3,4)와 (4,3)에 위치한 셀들을 가지고 있지 않기 때문에 (3.3)이 시작 셀인 2×2 서브배열의 스코어를 계산할 수 없다. 경계 서브배열들을 계산하기 위해서, 청크들은 주어진 서브배열의 크기에 따라 다른 청크들로부터의 추가적인 셀들을 포함한다. 서브배열 크기
Figure 112020002190097-pat00202
가 주어진 경우, 모든 경계 서브배열들을 계산하기 위해서 각 차원
Figure 112020002190097-pat00203
에서
Figure 112020002190097-pat00204
의 중첩 크기를 갖는 청크가 필요하다.
Definition 3.1 (Chunk Overlap, 청크 중복).
중첩 크기들의 집합
Figure 112020002190097-pat00205
,
Figure 112020002190097-pat00206
차원 배열, 시작 셀
Figure 112020002190097-pat00207
과 끝 셀
Figure 112020002190097-pat00208
, 및 청크가 주어진 경우, 청크의 시작 셀은
Figure 112020002190097-pat00209
이고 끝 셀은
Figure 112020002190097-pat00210
이고 셀들의 집합
Figure 112020002190097-pat00211
를 가지며, 청크는
Figure 112020002190097-pat00212
에 의해 시작 셀
Figure 112020002190097-pat00213
와 끝 셀
Figure 112020002190097-pat00214
를 갖도록 확장된다. 확장된 청크가 셀들의 집합
Figure 112020002190097-pat00215
를 가질 때, 청크 중첩은
Figure 112020002190097-pat00216
를 의미한다.
2×2 서브배열들을 계산한다면, 경계 서브배열들에 대한 계산을 수행하기 위해서 도 7에 도시된 바와 같이 각 청크는 {1,1}-크기의 중첩이 필요하다. 즉, 도 7은 서브배열의 사이즈가 2×2일 때, 속성에 대하여 {1,1}-크기의 중첩을 갖는 청크들을 도시한다. {1,1}-크기의 중첩으로 인하여 각 청크로부터 모든 경계 서브배열들을 계산할 수 있다. 보다 큰 중첩이 있는 경우에도 그러하지만, 위 크기 이상의 중첩은 불필요하다. SciDB(비특허문헌 7 참조)는 윈도우 집속(window aggregates)을 처리할 때 청크 중첩 메커니즘(chunk overlap mechanism)을 채용한다. 각 청크의 중첩이 미리 정의될 수 있음에도 불구하고, 상위 k 서브배열 쿼리가 주어지기 전에, 각 청크는 필요한 중첩의 정확한 크기를 알 수 없음을 인지하여야 한다.
기초적인 기법의 분산 처리에 대해 설명한다.
청크화(chunking)와 청크 중첩(chunk overlaps)에 기초하여, 분산 배열 데이터베이스에 적용될 수 있는 기초적인 기법을 설명한다. 중첩이 허용되는 쿼리를 처리하기 위해서, 쿼리는 주어진 서브배열의 크기에 기초하여 청크 중첩의 크기를 결정하고 청크 중첩들을 달성하기 위하여 노드들 사이에서 셀들을 전송한다. 그런 다음, 각 노드는 선택 조건들을 만족하는 모든 서브배열들의 스코어를 계산하고, 가장 높은 스코어를 갖는 k 개의 서브배열들을 유지한다. k 개의 서브배열들은 다른 서브배열과 중복될 수 있다. 본 명세서에서는, 각 노드에서 가능한 모든 서브배열들 계산한 후의 k 개의 서브배열들을 지역 상위 k 서브배열들(local top-k subarrays)이라 부른다. 각 노드는 자신의 지역 상위 k 서브배열들을 마스터 노드로 전송한다. 알고리즘은 서브배열들을 소팅하고 가장 높은 스코어를 갖는 k 개의 서브배열들을 글로벌 상위 k 서브배열들(global top-k subarrays)로 선택한다.
분리된 쿼리를 위한 기초적인 방법의 분산 처리는 중첩이 허용되는 쿼리를 위한 처리와 거의 유사하다. 중요한 차이점은, 분리된 쿼리에서 각 슬레이브 노드(slave node)는 지역 상위 k 서브배열들 보다는 모든 계산된 서브배열들을 스코어의 내림차순으로 유지한다는 것이다. 마스터 노드는 글로벌 상위 k 서브배열들을 결정할 수 있을 때까지 모든 슬레이브 노드들로부터 서브배열들을 수신한다. 즉, 모든 슬레이브 노드들로부터의 지역 상위 k 결과들의 집속(aggregation)은 마스터 노드가 글로벌 상위 k 결과들을 결정하기에 충분하지 않다.
Lemma 3.1.
Figure 112020002190097-pat00217
노드들에 대하여, 스코어링 함수
Figure 112020002190097-pat00218
와 주어진 서브배열 크기에 따른 청크 중복들을 갖는 멀티플 청크들을 갖는 배열
Figure 112020002190097-pat00219
에 대한 분리된 상위 k 서브배열 쿼리
Figure 112020002190097-pat00220
가 주어졌을 대, (1)
Figure 112020002190097-pat00221
를 노드
Figure 112020002190097-pat00222
에서
Figure 112020002190097-pat00223
의 부분집합이라 하고(
Figure 112020002190097-pat00224
), (2)
Figure 112020002190097-pat00225
Figure 112020002190097-pat00226
로부터의 분리된 상위 k 서브배열들의 집합이라 하고(
Figure 112020002190097-pat00227
내에 분리된 서브배열들이 존재하지 않는다면,
Figure 112020002190097-pat00228
는 k 보다 작을 수 있다), (3)
Figure 112020002190097-pat00229
Figure 112020002190097-pat00230
에 속하는 최대 정수(maximum integer)라 하자. 그러면,
Figure 112020002190097-pat00231
Figure 112020002190097-pat00232
는 항상 성립하는 것은 아니다.
PROOF.
Figure 112020002190097-pat00233
Figure 112020002190097-pat00234
이 항상 성립한다고 가정하자. 서브배열
Figure 112020002190097-pat00235
와 서브배열
Figure 112020002190097-pat00236
Figure 112020002190097-pat00237
가 서로 중첩되는 예가 있을 수 있고, 노드
Figure 112020002190097-pat00238
Figure 112020002190097-pat00239
를 계산할 수 없다.
Figure 112020002190097-pat00240
Figure 112020002190097-pat00241
중 적어도 하나
Figure 112020002190097-pat00242
는 글로벌 상위 k 서브배열들의 멤버(member)가 될 수 없음이 명백하다. (1)
Figure 112020002190097-pat00243
이고, (2)
Figure 112020002190097-pat00244
Figure 112020002190097-pat00245
과 중첩되기 때문에,
Figure 112020002190097-pat00246
또는
Figure 112020002190097-pat00247
의 멤버(member)로써 선택되지 않은 실제의 글로벌 응답
Figure 112020002190097-pat00248
이 있을 수 있다. (1) 어떤
Figure 112020002190097-pat00249
Figure 112020002190097-pat00250
도 서로로부터 항상 분리되지 않으며 (2)
Figure 112020002190097-pat00251
Figure 112020002190097-pat00252
가 서로 중첩되지 않을 때, 노드
Figure 112020002190097-pat00253
또는 노드
Figure 112020002190097-pat00254
는 각각
Figure 112020002190097-pat00255
Figure 112020002190097-pat00256
가 존재함을 모를 수 있기 때문에, 이러한 경우가 발생하지 않을 것임을 보장할 수 없다.
Figure 112020002190097-pat00257
의 크기와 무관하게, 이러한 경우에서
Figure 112020002190097-pat00258
Figure 112020002190097-pat00259
을 포함할 수 없다. 이러한 예는 가정에 모순되고, 이는 분리된 상위 k 서브배열 쿼리가 전체론적 문제(holistic problem)임을 의미한다.
도 8은 예시적인 시나리오를 도시한다. 도 8의 예에서 각 노드는 오직 하나의 청크만을 포함하고 서브배열들은 스코어의 내림차순으로 숫자가 매겨져 있다. 도 8(a)에서, 서브배열의 크기가 2×2이기 때문에, 청크 중첩의 크기는 {1,1}이다. 노드 2로부터의 분리된 상위-2 서브배열들 SA1와 SA4, 노드 1로부터의 분리된 상위-2 서브배열들 SA2와 SA5은 실제의 응답 SA3를 포함하지 않는다. 청크들이 보다 큰 중첩들을 가질 수 있음에도 불구하고, 도 8(b)에 도시된 바와 같이 문제는 해결되지 않는다. 도 8(b)에서 노드는 오직 상위-3 개의 분리된 서브배열들을 유지한다. 따라서, 배열이 매우 커서 노드들이 모든 계산된 서브배열들을 메인 메모리(main memory)에 저장할 수 없을 때에는, 분리된 상위-k 쿼리들에 대한 기초적인 방법은 실용적이지 않다.
이하에서는, 파티션 기반의 점진적인 상위-k 서브배열 쿼리의 처리 방법에 대해 설명한다.
상위 k 서브배열 쿼리들이 처리되기 전에, 배열은 분할된다. 분산된 배열 데이터베이스에서, 청크들은 측정 속성에 대하여 서로 독립적으로 분할된다. 미래의 상위 k 서브배열 쿼리들을 처리하기 위하여 결과들은 청크들을 갖는 동일한 노드에 저장된다. 미래의 서브배열 크기를 알 수 없기 때문에, 분할은 청크 중복(또는 청크 중첩)을 고려하지 않는다.
알고리즘 2(도 9 참조)와 알고리즘 3(도 10 참조)을 통해 분산된 환경(distributed envirnomnets)에서의 PPTS 기법을 소개한다. 배열 데이터의 청크들이 저장된
Figure 112020002190097-pat00260
개의 슬레이브 노드들(slave nodes)이 있다고 가정하자. 마스터 노드는 알고리즘 2를 실행하고, 각 슬레이브 노드는 알고리즘 3을 실행한다. 슬레이브 노드에서의 각 청크를 위한 파티션들은 최대 값들의 내림차순으로 정렬(또는 소팅)된다.
주어진 상위 k 서브배열 쿼리에 대하여, 슬레이브 노드들은 주어진 서브배열의 크기에 기초하여 청크 중첩의 크기를 계산하고, 청크들이 충분한 중첩을 갖지 않는다면 청크 중첩을 형성하기 위하여 셀들을 다른 슬레이브 노드로 전송한다.
Figure 112020002190097-pat00261
응답을 결정하기 위해서, 마스터 노드는 초기에 모든 슬레이브 노드들을 포함하는 슬레이브 노드들
Figure 112020002190097-pat00262
에게 새로운 지역 응답들(new local answers)을 요청한다. 요청을 수신한 각 슬레이브 노드는 청크들 내에서 체크되지 않는 다음의 파티션들의 UBS의 내림차순으로 정렬된 자신의 청크들을 처리한다. 이는 각 노드가 높은 UBS 값들을 갖는 파티션들을 갖는 청크들을 우선적으로 방문하도록 한다. 이는 높은 스코어를 갖는 지역 응답을 빠르게 찾을 가능성이 높아짐을 의미한다. 현재 지역 응답의 스코어가 청크의 UBS보다 높다면(Line 14, Algorithm 3), 알고리즘은 청크를 탐색할 필요가 없고, 따라서 불필요한 청크 I/O를 피할 수 있다. 이러한 조건이 만족되지 않지만 하나 이상의 파티션을 체크한 후에 청크가 Line 19(Algorithm 3)를 만족한다면, 쿼리는 다음 청크를 처리할 수 있다. 파티션을 체크할 때, 현재 청크의 파티션과 중첩되며 체크되지 않은 모든 서브배열들(경개 서브배열들을 포함함)은 Algorithm 1(Line 22, Algorithm 3)에서 정의된 절차를 이용하여 계산된다. 현재 지역 응답이 슬레이브 노드 내의 모든 청그들에 대하여 Algorithm 3의 Line 14 또는 Line 19를 만족한다면, 슬레이브 노드의 지역 응답으로 결정되고 마스터 노드로 전송된다(Line 25, Algorithm 3). 마스터 노드가
Figure 112020002190097-pat00263
내의 모든 슬레이브 노드들로부터 지역 응답들을 수신하면(Lines 4-6, Algorithm 2), 마스터 노드는 가장 놓은 응답, 즉 지역 응답들 중에서 가장 높은 스코어를 갖는 응답을 선택한다. 선택된 응답을 글로벌
Figure 112020002190097-pat00264
응답으로써 반환한 후, 마스터 노드는 글로벌 응답을
Figure 112020002190097-pat00265
내의 모든 슬레이브 노드들에게 전송한다(Lines 7-10, Algorithm 2). 각 슬레이브 노드는 글로벌 응답을 수신한다(Line 27, Algorithm 3).
Figure 112020002190097-pat00266
응답으로 결정된 바로 직후에 글로벌 응답이 모든 슬레이브 노드들에게 전송되지 않는다면, 다음의 글로벌 응답들을 결정하는 과정에서 슬레이브 노드들은 글로벌 응답과 중첩되는 잘못된 지역 응답들을 선택할 수 있다. 마스터 노드는 슬레이브 노드들의 집합
Figure 112020002190097-pat00267
와 글로벌 응답과 중첩되는 현재 지역 응답을 식별하고(Line 11, Algorithm 2),
Figure 112020002190097-pat00268
내의 슬레이브 노드들에게 다음 지역 응답들을 요청한다.
마스터 노드가 글로벌 응답을 결정한 이후에 모든 슬레이브 노드들은 글로벌 응답들을 즉시 공유한다. 따라서, 분리된 쿼리들을 위한 기초적인 기법의 분산 버전에서의 무제는 피할 수 있다. 도 8(a)에서, 노드 1은 SA2를 지역 응답으로 선택하고, 노드 2는 알고리즘 3을 이용하여 SA1을 형성한다. 마스터 노드는 노드 1과 노드 2의 지역 응답들을 수신하고 SA1을 글로벌 상위 응답으로 결정한다. SA1의 스코어가 SA2의 스코어보다 높기 때문이다. 마스터 노드는 노드 1과 노드 2에게 글로벌 응답을 전송한다. SA2
Figure 112020002190097-pat00269
로부터 제거되기 때문에, 노드 1은 SA3을 다음 지역 응답으로 선택할 수 있다. 노드 2는 SA4를 다음 지역 응답으로 선택할 수 있다. 지역 응답의 송/수신이 완료된 후, SA3이 다음 글로벌 응답으로 선택된다.
청크 중첩에 대한 고려없이 생성된 파티션과 중첩되는 서브배열들이 계산될 때, 경계 서브배열들(존재한다면) 또한 계산된다. 파티션들이 청크 중첩 내의 셀들을 포함하지 않을지라도, PPTS는 청크들의 경계에 위치한 글로벌 응답들이 체크되었음을 보장할 수 있다.
Lemma 3.2. 일련의 파티션들과
Figure 112020002190097-pat00270
개의 노드들 사이에서 분산된 청크들을 갖는 배열에 대한 상위 k 서브배열 쿼리에 대하여, 쿼리에 대하여
Figure 112020002190097-pat00271
로 높은 스코어를 갖는 응답인 경계 서브배열
Figure 112020002190097-pat00272
가 존재한다고 가정하자.
Figure 112020002190097-pat00273
는, 제안된 점진적인 알고리즘이 쿼리에 대한
Figure 112020002190097-pat00274
응답을 찾을 때,
Figure 112020002190097-pat00275
와 중첩되는 청크를 포함하고 있는 슬레이브 노드들
Figure 112020002190097-pat00276
중에서 하나의 노드에 의해서 지역 응답으로 선택된다.
PROOF.
Figure 112020002190097-pat00277
Figure 112020002190097-pat00278
내의 어느 노드에 의해서도 지역 응답으로 선택되지 않는다고 가정하자. 두 가지 경우가 가능하다. (1)
Figure 112020002190097-pat00279
가 어떤 노드에 의해서도 체크되지 않은 경우와 (2)
Figure 112020002190097-pat00280
에 어떤 노드에 의해 체크되지만 지역 응답으로 선택되지 않은 경우이다. 우선, (1)의 경우는,
Figure 112020002190097-pat00281
에서,
Figure 112020002190097-pat00282
에 중첩되는 파티션들 중에서 가장 높은 UBS를 갖는 파티션
Figure 112020002190097-pat00283
가 처리되지 않음을 의미한다. Corollary 2.1에 의해, 이는
Figure 112020002190097-pat00284
을 의미한다. 쿼리에 대한
Figure 112020002190097-pat00285
응답을 검색할 때, 노드
Figure 112020002190097-pat00286
에서 알고리즘 3은 지역 응답
Figure 112020002190097-pat00287
을 글로벌
Figure 112020002190097-pat00288
응답을 위한 후보로 선택한다.
Figure 112020002190097-pat00289
가 노드
Figure 112020002190097-pat00290
에 의해 처리되지 않기 때문에,
Figure 112020002190097-pat00291
이다. 따라서,
Figure 112020002190097-pat00292
이다. 알고리즘 2를 실행하는 마스터 노드가 모든 슬레이브 노드들로부터의 지역 응답들 중에서 하나를
Figure 112020002190097-pat00293
글로벌 응답으로 선택하기 때문에,
Figure 112020002190097-pat00294
가 쿼리에 대한
Figure 112020002190097-pat00295
응답이라는 가정에 모순이 발생한다. (2)의 경우에, 중첩이 허용되는 쿼리와 분리된 쿼리를 개별적으로 살펴볼 필요가 있다. SA보다 높은 스코어를 갖고 선택 조건들을 만족하며 SN 내의 슬레이브 노드의 지역 응답으로 선택된 서브배열 SAwrong이 존재한다. 중첩이 허용되는 쿼리에서, 지역 응답들 중에서 가장 높은 스코어를 갖는 서브배열은 중첩과 무관하게 글로벌 응답으로 선택되기 때문에, lemma의 가정에 모순이 생긴다. 분리된 쿼리에서, SAwrong의 존재는 SN 내의 노드가 이전에 선택된 적어도 하나의 글로벌 응답
Figure 112020002190097-pat00296
을 갖고 있지 않음을 의미한다. 지역 응답이 마스터 노드에 의해 글로벌 응답의 하나로 선택된 후에 응답은 모든 슬레이브 노드들 사이에서 즉시 공유된다. 알고리즘 2와 알고리즘 3은
Figure 112020002190097-pat00297
응답을 찾기 전에
Figure 112020002190097-pat00298
와 중복되는 후보 서브배열들 삭제한다. 또한, 알고리즘 1의 절차는 서브배열들이
Figure 112020002190097-pat00299
과 중복되어 후보가 되는 것을 허용하지 않는다. SAwrong
Figure 112020002190097-pat00300
와 분리되는 것은 불가능하며, 이는 (2)의 경우는 발생하지 않음을 의미한다. 따라서, SA는 SN 내의 노드의 지역 응답으로써 안전하게 선택된다.
경계 서브배열들은 몇몇 청크들에 의해 과다하게 평가될 수 있다. 그러나, (1) 경계 서브배열들의 개수가 서브배열들의 전체 개수에 비해 작고 (2) 경계 서브배열 내의 모든 속성의 값들이 모든 인접한 청크들이 이를 체크할 만큼 충분히 큰 몇몇 케이스가 존재하기 때문에, 이러한 경우는 실험적으로 드물게 발생한다.
이하에서는, 최적화 기법을 설명한다.
파티션과 중첩되는 서브배열들의 스코어를 효율적으로 계산함으로써 최적화하는 기법이 고려될 수 있다. 소코어링 함수가
Figure 112020002190097-pat00301
또는
Figure 112020002190097-pat00302
와 같이 분산적(distributive)이고 대수적(algebraic)이라면, 서브배열을 가장 마이너한 차원(most minor dimension)
Figure 112020002190097-pat00303
에 의해 몇몇의 유닛들(units)로 분할하고 연이은 서브배열들의 스코어를 계산할 수 있다. 도 2의 예를 이용하여 최적화 기법을 설명한다. SA((0,3),2×2)를 체크할 때, 서브배열은 (0,3)과 (0,4)가 시작 셀인 2개의 유닛들 {U1, U2}로 분할할 수 있다. 유닛들의 스코어는 계산되고 서브배열의 스코어를 획득하기 위하여 합산된다. 다음 서브배열 SA((0,4),2×2)의 스코어를 계산하기 위하여, U2의 스코어를 다시 계산할 필요가 없다. (0,5)가 시작 셀인 유닛 U3의 스코어만이 필요하다. 첫번째 서브배열의 스코어에서 U1의 스코어를 차감하고 U3의 스코어를 합산함으로써 두번재 서브배열의 스코어를 획득할 수 있다. 이와 같이, 전체 배열이 아닌 파티tus과 중첩되는 서브배열들에 대한 점진적인 계산이 적용될 수 있다.
앞서 언급한 바와 같이, 파티션
Figure 112020002190097-pat00304
의 UBS(Upper Bound Score)는
Figure 112020002190097-pat00305
내에서 모든 셀들이 측정 속성의 최대 값을 갖는 MVS(Maximal Virtual Subarray)로부터 도출된다. 그러나, UBS는 파티션과 중첩되는 실제 서브배열들의 스코어보다 매우 높을 수 있기 때문에, 밀도가 낮은 배열들(sparse arrays)의 경우에서 UBS를 이용한 쿼리의 처리는 매우 비효율적일 수 있다. 따라서, 쿼리 처리 중에 최대 밀도 추정(maximal density estimation)에 기반한 최적화 기법을 제안한다. 최적화는 스코어링 함수 SF가 조건(주어진 속성 값의 집합 C={c1, c2, …, cm}에 대하여,
Figure 112020002190097-pat00306
)을 만족할 때에 적용이 가능하다. 서브배열 크기 SS를 갖는 상위 k 서브배열 쿼리가 주어졌을 때, 사이즈가 SS인 서브배열이 가질 수 있는 각 청크의 최대 밀도(maximal density)를 추정한다. 쿼리를 처리하는 도중에 UBS는 추정된 밀도를 갖는 MVS로부터 계산된다.
최대 밀도 추정의 기본 개념은 처리 결과들, 즉 파티션들이 활용되는 것이다. 파티션들은 비어있지 않은 셀들의 개수를 갖고, 따라서, 특정 서브배열의 최대 셀 개수를 유추할 수 있다.
알고리즘 4(도 11)의 최대 밀도 추정에 대하여 기술한다. 간략화를 위해, 차원의 파티션 크기는 대응하는 차원의 청크 크기의 약수(submultiples)로 가정한다. 알고리즘에서, 도 12에 도시된 바와 같이 파티션들은 일시적으로 파티션 경계까지 확장된다. 도 12에는 배열이 4개의 청크들로 분할되는 예가 도시되어 있다. 도 12의 좌측에 도시된 바와 같이, 주어진 3×3 크기의 서브배열은 최대한으로 2×2 파티션들과 중첩될 수 있고, 이는 새로운 서브배열 크기가 2×2가 됨을 의미한다(Line 6). 배열은 복수의 청크들로 구성되기 때문에, 청크 중첩이 고려되어야 한다. 도 12에서, (4,4)의 셀에서 시작하는 청크의 최대 밀도를 추정하기 위해서, {1,1} 크기의 청크 중첩을 획득하기 위해 파티션들의 셀의 개수가 전달된다(Line 9). 그런 다음, 도 12의 우측에 도시된 바와 같이, 스코어링 함수 sum을 갖는 파티션들에 대한 2×2 크기의 상위 1 서브배열 쿼리가 처리된다(Line 11). 파티션들의 파티션은 고려되지 않기 때문에, 모든 서브배열들의 스코어가 계산된다. 파티션들의 개수는 보통 오리지널 배열 내의 셀들의 개수보다 매우 작다. 따라서, 상위 1 퀄리의 처리는 기초적인 방법에 기초하는 것은 합리적이다. 상위 1 응답의 스코어는 2이다. 그러면, 오리지널 배열의 청크 내에서 오리지널 서브배열의 가능한 최대 밀도는 9/2로 추정된다(Line 12). UBS는 파티션의 2/9 셀들이 최대 값을 갖고 나머지 셀들은 비어있는 MVS로부터 획득될 수 있다.
이상에서 설명된 방법은 적어도 프로세서를 포함하는 컴퓨팅 장치에 의해 수행될 수 있다. 컴퓨팅 장치는 각종 연산 처리 및 신호 생성이 가능한 적어도 하나의 전자 장치를 포함할 수 있다. 여기서, 적어도 하나의 전자 장치는 프로세서 및/또는 프로세서가 설치된 컴퓨팅 장치를 포함할 수 있다. 여기서, 프로세서는, 예를 들어, 중앙 처리 장치(CPU, Central Processing Unit), 마이크로 컨트롤러 유닛(MCU, Micro Controller Unit), 마이컴(Micom, Micro Processor), 애플리케이션 프로세서(AP, Application Processor), 전자 제어 유닛(ECU, Electronic Controlling Unit), 그래픽 처리 장치(GPU, Graphic Processing Unit) 및/또는 각종 연산 처리 및 제어 신호의 생성이 가능한 처리 장치 등을 포함할 수 있다. 이들 처리 장치는 예를 들어 하나 또는 둘 이상의 반도체 칩 및 관련 부품을 이용하여 구현될 수 있다. 또한, 컴퓨팅 장치는 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 컴퓨터, 이외 정보 처리 기능을 수행할 수 있는 적어도 하나의 전자 장치를 포함할 수 있다.
또한, 컴퓨팅 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 집합으로 구현될 수 있다. 예를 들어, 실시 예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(Digital Signal Processor), 마이크로컴퓨터, FPA(Field Programmable array), PLU(Programmable Logic Unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(Operation System, OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술 분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(Processing Element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(Parallel Processor)와 같은, 다른 처리 구성(Processing Configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(Computer Program), 코드(Code), 명령(Instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(Collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(Component), 물리적 장치, 가상 장치(Virtual Equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(Signal Wave)에 영구적으로, 또는 일시적으로 구체화(Embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 좋ㅂ하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-optical Media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성 요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (8)

  1. 삭제
  2. 적어도 프로세서를 포함하는 컴퓨팅 장치에서 수행되는, 배열 데이터에서의 상위 k(k는 자연수) 질의 처리 방법에 있어서,
    복수의 셀(cell)들로 구성된 배열(array)을 복수의 파티션들(partitions)로 분할하는 단계; 및
    상기 배열 내에서
    Figure 112021078305909-pat00325
    Figure 112021078305909-pat00326
    응답을 검색하는 단계를 포함하고,
    상기 복수의 파티션들로 분할하는 단계는,
    각 파티션에 대하여, 파티션 내에 포함된 셀들의 속성(attribute) 값들 중 최대 값, 속성 값을 갖는 셀의 개수, 파티션의 시작 셀(starting cell)의 위치, 및 파티션의 마지막 셀(ending cell)의 위치를 포함하는 파티션 정보를 저장하는 단계; 및
    상기 복수의 파티션들을 최대 값의 내림차순으로 정렬하는 단계를 포함하는,
    상위 k 질의 처리 방법.
  3. 제2항에 있어서,
    상기
    Figure 112020002190097-pat00309
    Figure 112020002190097-pat00310
    응답을 검색하는 단계는,
    상기 복수의 파티션들 중 가장 큰 최대 값을 갖는 제1 파티션을 선택하는 단계;
    상기 제1 파티션에 포함된 셀들 중 적어도 하나를 포함하는 서브배열(subarray)들 각각의 스코어(score)를 계산하는 단계;
    스코어가 계산된 서브배열의 스코어와 미리 계산된 스코어들 중 가장 높은 스코어를 갖는 서브배열의 스코어를 비교하는 단계; 및
    상기 스코어가 계산된 서브배열의 스코어가 상기 가장 높은 스코어를 갖는 서브배열의 스코어보다 큰 경우, 상기 스코어가 계산된 서브배열이 상기 상위 k 질의에 대한 응답으로 미리 결정된 적어도 하나의 서브배열과 중첩되는지 여부를 판단하고, 상기 스코어가 계산된 서브배열이 상기 적어도 하나의 서브배열과 중첩되지 않는 경우, 상기 스코어가 계산된 서브배열로 상기 가장 높은 스코어를 갖는 서브배열을 대체하고, 상기 스코어가 계산된 서브배열을 상기 상위 k 질의에 대한 응답의 후보군으로 결정하는 단계를 포함하는,
    상위 k 질의 처리 방법.
  4. 제3항에 있어서,
    상기 스코어가 계산된 서브배열의 스코어가 상기 가장 높은 스코어를 갖는 서브배열의 스코어보다 크지 않는 경우, 상기 스코어가 계산된 서브배열을 상기 후보군으로 결정하는 단계를 더 포함하는,
    상위 k 질의 처리 방법.
  5. 제3항 또는 제4항에 있어서,
    상기 복수의 파티션들 중에서 상기 제1 파티션을 제외한 파티션들 중 가장 큰 최대값을 제2 파티션을 선택하는 단계; 및
    상기 가장 높은 스코어를 갖는 서브배열의 스코어가 상기 제2 파티션의 상계 스코어(upper bound score, UBS) 보다 큰 경우, 상기 가장 높은 스코어를 갖는 서브배열을 상기
    Figure 112020002190097-pat00311
    응답으로 결정하는 단계를 더 포함하는,
    상위 k 질의 처리 방법.
  6. 제5항에 있어서,
    상기 상계 스코어(UBS)는 상기 제2 파티션의 최대 값과 서브배열에 포함되는 셀의 개수를 곱한 값인,
    상위 k 질의 처리 방법.
  7. 제5항에 있어서,
    상기 후보군에 포함된 서브배열들 중 상기
    Figure 112020002190097-pat00312
    응답으로 결정된 서브배열과 중첩되는 서브배열을 삭제하는 단계를 더 포함하는,
    상위 k 질의 처리 방법.
  8. 제2항에 있어서,
    파티션은 미리 정해진 초기 파티션 크기보다 같거나 작은 크기를 갖는 직사각형 형태로 분할되고,
    상기 시작 셀은 파티션의 좌측 상단에 위치하는 셀을 의미하며,
    상기 마지막 셀은 파티션의 우측 하단에 위치하는 셀을 의미하는,
    상위 k 질의 처리 방법.
KR1020200002672A 2020-01-08 2020-01-08 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법 KR102308667B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200002672A KR102308667B1 (ko) 2020-01-08 2020-01-08 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법
US17/144,363 US11657055B2 (en) 2020-01-08 2021-01-08 Device and Method for progressive top-k subarray query processing in array databases

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200002672A KR102308667B1 (ko) 2020-01-08 2020-01-08 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210089476A KR20210089476A (ko) 2021-07-16
KR102308667B1 true KR102308667B1 (ko) 2021-10-05

Family

ID=76654010

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200002672A KR102308667B1 (ko) 2020-01-08 2020-01-08 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US11657055B2 (ko)
KR (1) KR102308667B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175471A (ja) 2015-08-28 2019-10-10 スワールズ,インコーポレイテッド ネットワーク内の分散データベースのための方法及び装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760724B1 (en) * 2000-07-24 2004-07-06 Lucent Technologies Inc. Approximate query processing using wavelets
US7624118B2 (en) * 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US20120303633A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Systems and methods for querying column oriented databases
US9513806B2 (en) * 2014-05-01 2016-12-06 Microsoft Technology Licensing, Llc Dimension based load balancing
JP6190324B2 (ja) 2014-06-09 2017-08-30 日本電信電話株式会社 検索装置、検索方法および検索プログラム
US9761204B1 (en) * 2014-09-30 2017-09-12 Cadence Design Systems, Inc. System and method for accelerated graphic rendering of design layout having variously sized geometric objects
US10108509B2 (en) * 2015-07-16 2018-10-23 Texas Instruments Incorporated Dynamic enabling of redundant memory cells during operating life
US10162857B2 (en) * 2015-08-31 2018-12-25 Qatar Foundation For Education, Science And Community Optimized inequality join method
KR20170128666A (ko) 2016-05-12 2017-11-23 한국전자통신연구원 질의 처리 방법 및 시스템
KR101918662B1 (ko) 2016-10-06 2018-11-14 한국과학기술정보연구원 대용량 과학 데이터 즉시 분석 방법 및 장치
AU2018329244A1 (en) * 2017-09-11 2020-03-12 Farmers Edge Inc. Generating a yield map for an agricultural field using classification and regression methods
US20200333662A1 (en) * 2019-04-19 2020-10-22 Sysview Technology, Inc. Alignment cells for modulating both amplitude and phase in spatial light modulators

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019175471A (ja) 2015-08-28 2019-10-10 スワールズ,インコーポレイテッド ネットワーク内の分散データベースのための方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
허준석, 요약된 Partitioned-Layer Index: Partitioned-Layer Index의 임의 접근 횟수를 줄이는 Top-k 질의 처리 방법. 멀티미디어학회논문지 13(9), 2010.09, 1299-1313페이지. 1부.*

Also Published As

Publication number Publication date
US11657055B2 (en) 2023-05-23
US20210209111A1 (en) 2021-07-08
KR20210089476A (ko) 2021-07-16

Similar Documents

Publication Publication Date Title
KR101938953B1 (ko) 빅 데이터 질의 엔진을 위한 플래시 최적화된 열 데이터 배치 및 데이터 액세스 처리 알고리즘
Battle et al. Dynamic reduction of query result sets for interactive visualizaton
US11132388B2 (en) Efficient spatial queries in large data tables
US7272593B1 (en) Method and apparatus for similarity retrieval from iterative refinement
JP3113861B2 (ja) 多次元データを表現する方法及びプログラム記憶装置
EP3602351A1 (en) Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps
US7324991B1 (en) Sampling in a multidimensional database
US20180096006A1 (en) Workload-driven recommendations for columnstore and rowstore indexes in relational databases
US20120191702A1 (en) Intelligent adaptive index density in a database management system
CN106933511B (zh) 考虑负载均衡与磁盘效率的空间数据存储组织方法及系统
Su et al. Indexing and parallel query processing support for visualizing climate datasets
Choi et al. Progressive top-k subarray query processing in array databases
Aydin et al. Mining spatiotemporal co-occurrence patterns in non-relational databases
KR102308667B1 (ko) 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법
Liang et al. Scalable 3d spatial queries for analytical pathology imaging with mapreduce
Ghosh et al. Aid*: a spatial index for visual exploration of geo-spatial data
Hong et al. Aquadexim: highly efficient in-memory indexing and querying of astronomy time series images
Weng et al. Servicing range queries on multidimensional datasets with partial replicas
Zhang et al. PARROT: pattern-based correlation exploitation in big partitioned data series
An et al. Toward an accurate analysis of range queries on spatial data
Feng et al. Effective optimizations of cluster-based nearest neighbor search in high-dimensional space
Narayanan et al. A runtime framework for partial replication and its application for on-demand data exploration
Roselius Toward Effective High-throughput Georeferencing over Voluminous Observational Data in the Domain of Precision Agriculture
Mohamed et al. Fast large-scale multimedia indexing and searching
Polyntsov et al. Implementing the comparison-based external sort

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant