KR20190127541A - Kvssd 내 데이터 분석 장치 및 방법 - Google Patents

Kvssd 내 데이터 분석 장치 및 방법 Download PDF

Info

Publication number
KR20190127541A
KR20190127541A KR1020190021972A KR20190021972A KR20190127541A KR 20190127541 A KR20190127541 A KR 20190127541A KR 1020190021972 A KR1020190021972 A KR 1020190021972A KR 20190021972 A KR20190021972 A KR 20190021972A KR 20190127541 A KR20190127541 A KR 20190127541A
Authority
KR
South Korea
Prior art keywords
kvssd
data
container
analysis
key
Prior art date
Application number
KR1020190021972A
Other languages
English (en)
Other versions
KR102443699B1 (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 삼성전자주식회사
Publication of KR20190127541A publication Critical patent/KR20190127541A/ko
Application granted granted Critical
Publication of KR102443699B1 publication Critical patent/KR102443699B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/221Column-oriented storage; Management thereof
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Automatic Analysis And Handling Materials Therefor (AREA)
  • Photoreceptors In Electrophotography (AREA)

Abstract

장치와 방법이 제공된다. 본 장치는 적어도 하나의 KVSSD 데이터 컨테이너 및 적어도 하나의 KVSSD 데이터 컨테이너 중 적어도 하나와 관련된 적어도 하나의 KVSSD 분석 컨테이너를 포함하는 KVSSD(Key-Value Solid State Device)를 포함한다.

Description

KVSSD 내 데이터 분석 장치 및 방법{APPARATUS AND METHOD OF DATA ANALYTICS IN KEY-VALUE SOLID STATE DEVICE(KVSSD)}
본 개시는 일반적으로 데이터 분석에 관한 것이며, 보다 구체적으로는 KVSSD에서의 데이터 분석에 관한 것이다.
KVSSD는 키이-밸류 쌍들에 데이터를 저장한다. KVSSD는 기본적으로 키이-밸류 쌍들에 저장된 데이터 기록들을 저장, 검색 및 관리하기 위한 데이터 저장 장치일 수 있다. 이러한 기록들은 고유하게 기록을 식별하는 키이를 사용하여 저장 및 검색되며, 이는 저장장치 내에서 데이터를 신속하게 찾아내는데 사용된다. KVSSD는 종래의 소프트웨어 키이-밸류 저장장치(key-value store)에 의해 이용되는 인터페이스와 유사한 인터페이스를 사용한다. KVSSD는 "get", "put", "lookup", "fetch", "store" 및 "find data"등의 연산들을 포함하는 인터페이스를 지원한다.
RocksDB는 신속 저장을 위한 내장형 영구 키이-밸류 저장장치를 의미한다. 하지만, 본 개시는 RocksDB에 적용되는 것으로 한정되지 않으며 임의의 적합한 어플리케이션에 적용될 수 있다.
종래기술들은 데이터 분석을 수행하기 위한 호스트 CPU를 사용하는데, 이는 CPU 처리라는 면에서 고비용이다.
본 발명이 이루고자 하는 기술적 과제는 KVSSD를 이용하여 종래의 분석 기술들의 단점을 극복하고, 저장 비용을 감소시키며 데이터의 분석 효율을 향상시키는데 있다.
본 개시의 일 실시 예에 따른 본 장치는 적어도 하나의 KVSSD 데이터 컨테이너를 포함하고 상기 적어도 하나의 KVSSD 데이터 컨테이너 중 적어도 하나와 관련된 적어도 하나의 KVSSD 분석 컨테이너를 포함한다.
본 개시의 일 실시 예에 따른 본 방법은 KVSSD 내의 적어도 하나의 KVSSD 데이터 컨테이너에 데이터를 저장하는 단계, 및 상기 적어도 하나의 KVSSD 데이터 컨테이너와 관련된 적어도 하나의 KVSSD 데이터 분석 컨테이너에 의해 상기 적어도 하나의 KVSSD 데이터 컨테이너에 저장된 적어도 하나의 데이터를 분석하는 단계를 포함한다.
본 개시에 따른 실시 예들에 따르면, KVSSD 및 이를 구비하는 데이터 분석 컨테이너를 통해 데이터의 분석 효율을 향상시키고, 비용을 감소시킬 수 있다.
본 개시에 따른 실시 예들의 과제는 이상에서 언급한 과제에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시 예에 따른 분석을 위한 KVSSD 컨테이너들을 구비한 전자장치의 블록도이다.
도 2는 일 실시 예에 따른 분석을 위한 KVSSD 데이터 컨테이너의 블록도이다.
도 3은 일 실시 예에 따른 분석을 위한 KVSSD 분석 컨테이너의 블록도이다.
도 4는 일 실시 예에 따른 분석을 위한 층을 이룬 KVSSD 컨테이너들을 포함하는 전자장치(400)의 블록도 및 데이터 흐름도이다.
도 5는 일 실시 예에 따른 분석을 위한 KVSSD 컨테이너의 I/O 경로에 대한 블록도 및 데이터 흐름도이다.
도 6은 일 실시 예에 따른 네트워크 환경에서의 전자장치에 대한 블록도이다.
이하에, 본 개시의 실시 예들이 첨부도면을 참조하여 상세하게 설명된다. 동일한 요소들이 다른 도면에 도시되더라도 동일한 참조번호가 표기되는 점을 유의해야 한다. 이하의 설명에서, 상세한 구성 및 요소 등의 구체적인 세부사항들은 주로 본 개시의 실시 예들에 대한 전반적인 이해를 돕기 위해 제공된다. 따라서, 본 명세서에 기재된 실시 예들의 다양한 변형예들 및 변경예들이 본 개시의 범위에서 벗어나지 않고 이루어질 수 있음은 당업자에게 있어 명백하다. 또한, 간결성 및 명확성을 위해 공지되어 있는 기능들 및 구성들에 대한 설명은 생략한다. 후술하는 용어들은 본 개시의 기능을 고려하여 정의되는 용어이며, 실시자, 실시자의 의도 또는 관습에 따라 달라질 수 있다. 따라서, 용어들의 정의는 본 명세서 전반의 내용을 기반으로 결정되어야 한다.
본 개시는 다양한 변형예 및 다양한 실시 예들을 가질 수 있으며, 그 중 일부 실시 예들이 참조도면들을 참조하여 이하에 상세하게 설명된다. 하지만, 본 개시는 하기 실시 예들에 한정되는 것이 아니라 본 개시의 범위 내에서 모든 변경, 등가물 및 대안을 포함하는 점을 이해해야 한다.
제 1, 제 2 등의 서수를 포함하는 용어가 다양한 요소를 설명하기 위해 사용될 수 있지만, 구조적 요소는 이러한 용어들에 의해 제한되지 않는다. 이러한 용어들은 한 요소가 다른 요소와 구별되도록 사용될 뿐이다. 예를 들면, 본 개시의 범위를 벗어나지 않는다면, 제 1 구조적 요소는 제 2 구조적 요소로서 지칭될 수 있다. 이와 유사하게, 제 2 구조적 요소는 제 1 구조적 요소로서 지칭될 수도 있다. 본 명세서에 사용된 바와 같이, "및/또는"이라는 용어는 하나 이상의 관련 사항들의 모든 및 임의의 조합을 포함한다.
본 명세서에 사용된 용어들은 주로 본 개시의 다양한 실시 예들을 기술하기 위해 사용되지만, 본 개시를 한정하는 것으로 의도되지는 않는다. 문맥상 명백하게 달리 나타내지 않는 한, 단수 형태는 복수 형태를 포함하는 것으로 의도된다. 본 개시에 있어서, "포함하다" 또는 "갖다"라는 용어는 특징, 수, 단계, 연산, 구조적 요소, 부품 또는 이들의 조합의 존재를 나타내며, 하나 이상의 다른 특징, 수, 단계, 연산, 구조적 요소, 부품 또는 이들의 조합의 존재 또는 부가 가능성을 배제하지 않는 다는 점을 이해해야 한다.
달리 정의하지 않는 한, 본 명세서에 사용된 모든 용어들은 본 개시가 속하는 기술 분야에서 당업자에 의해 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의된 것과 같은 용어는 관련 기술 분야의 문맥상 의미와 동일한 의미를 갖는 것으로 해석되어야 하며, 본 개시에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 공식적인 의미를 갖는 것으로 해석되어서는 안 된다.
일 실시 예에 있어서, 데이터 분석은 저장장치(예: KVSSD)에서 수행된다.
일 실시 예에 있어서, 데이터 분석은 KVSSD의 컨테이너 디비전들에서 수행된다.
일 실시 예에 있어서, 데이터 처리 및 검색은 FPGAs(Field Programmable Gate Arrays)와 관련된 컨테이너들에 의해 수행된다.
일 실시 예에 있어서, 데이터 분석은 층을 이룬 컨테이너들에서 수행된다.
일 실시 예에 있어서, KVSSD에서의 데이터 분석은 어플리케이션 프로그래밍 인터페이스(APIs: Application Programming Interfaces)의 이용을 통해 수행된다.
일 실시 예에 있어서, 사용자 콘텐트는 컨테이너들에서의 데이터 분석을 용이하게 하기 위해 각각의 컨테이너들에서 분석되며 분리된다.
일 실시 예에 있어서, 데이터 컨테이너들 및 분석 컨테이너들은 다른 유형의 데이터를 저장한다.
일 실시 예에 있어서, FPGA는 데이터 분석을 가속화시키기 위한 분석 모듈을 작동시키는데 이용될 수 있다.
소프트웨어 API's는 KVSSD에서의 데이터 분석을 통합하기 위한 RocksDB 또는 임의의 다른 어플리케이션에 제공될 수 있다.
일 실시 예에 있어서, KVSSD 컨테이너들은 데이터 분석을 지원하기 위해 이용된다.
KVSSD는 데이터를 키이-밸류 쌍들에 저장한다. KVSSD 내의 데이터는 컨테이너 안에 조직화될 수 있다. 컨테이너들은 가상화 층으로 작용하며, 단일 KVSSD를 다수의 KVSSD로서 또는 상기 단일 KVSSD의 별도의 하위 디비전들로서 노출시킬 수 있다. 컨테이너들 내 데이터는 키이-밸류 쌍들에도 저장될 수 있다. 특히, 2개의 컨테이너들이 동일한 키이를 가질 수 있다.
일 실시 예에 있어서, 데이터 분석은 컨테이너들이 서로 층을 이룬 KVSSD들에서 수행된다. 컨테이너들(및 이들의 층)은 데이터의 통찰(insights)을 제공한다. 데이터 분석의 예시로서, 하나는 데이터 패턴을 "검색"할 수 있으며 이러한 검색결과를 보유하도록 컨테이너들을 구성할 수 있다. 구체적인 예시로서, 데이터 분석 컨테이너는 데이터 컨테이너에 저장된 데이터 세트에 저장된 모든 URLs(Uniform Resource Locators)을 캡처하도록 구성될 수 있다. 더 나아가, 분석 컨테이너들은 다단계 분석을 수행하는 시스템들을 용이하게 구성할 수 있도록 보다 높은 레벨의 분석 컨테이너들을 위한 데이터 컨테이너들로서 동작할 수 있다.
일 실시 예에 있어서, 어플리케이션(예: RocksDB)을 위한 API가 KVSSD에 데이터 분석을 가능하게 할 수 있다.
도 1은 일 실시 예에 따른 분석을 위한 KVSSD 컨테이너들을 구비한 전자장치(100)의 블록도이다.
도 1을 참조하면, 전자장치(100)는 제 1 KVSSD 컨테이너(101) 및 제 2 KVSSD 컨테이너(103)를 포함한다. KVSSD 컨테이너는 물리적 KVSSD 내부에 논리적 KVSSD로 볼 수 있다. 여기서, KVSSD 컨테이너들은 데이터 컨테이너 및 분석 컨테이너의 2가지 유형일 수 있다.
제 1 KVSSD 컨테이너(101)는 키이-밸류 쌍들(105)의 적어도 하나의 그룹(105)을 포함한다. 상기 적어도 하나의 그룹(105)은 적어도 하나의 키이-밸류 쌍의 제 1 세트(107) 및 적어도 하나의 키이-밸류 쌍의 제 2 세트(109)를 포함한다.
제 2 KVSSD 컨테이너(103)는 적어도 하나의 그룹(111) 및 그룹핑되지 않을 수 있는 적어도 하나의 키이-밸류 쌍(113)의 일 세트를 포함한다. 상기 그룹(111)은 복수의 키이-밸류 쌍들을 포함할 수 있다(상기 그룹(105)과 유사함).
도 2는 일 실시 예에 따른 분석을 위한 KVSSD 데이터 컨테이너(200)의 블록도이다.
도 2를 참조하면, KVSSD 데이터 컨테이너(200)는 키이-밸류 쌍들(예: 제 1 키이-밸류 쌍(201), 제 2 키이-밸류 쌍(203) 및 제 n 키이-밸류 쌍(205))을 보유한다. 키이는 데이터에 대한 사용자(또는, 어플리케이션)-규정의 식별자이며, 키이-밸류 쌍의 밸류 부분에는 사용자 데이터를 저장한다. KVSSD 데이터 컨테이너(200)는 종래의 KVSSD 컨테이너로서 연산할 수 있지만, 반드시 필수적인 것은 아니다.
도 3은 일 실시 예에 따른 분석을 위한 KVSSD 분석 컨테이너(300)의 블록도이다.
도 3을 참조하면, KVSSD 분석 컨테이너(300)는 키이-밸류 쌍들(예: 제 1 키이-밸류 쌍(301), 제 2 키이-밸류 쌍(303) 및 제 n 키이-밸류 쌍(305))에 분석 데이터를 보유한다. 하지만, 분석 컨테이너들에서 키이에는 컨테이너 식별자(ID), 오프셋 및 사용자-규정 키이를 저장할 수 있다. 후술되는 키이-밸류 쌍의 밸류 부분에는 헤더(header) 및 분석 관련 데이터를 저장한다.
KVSSD 분석 컨테이너(300)는 데이터의 분석결과를 저장한다. KVSSD 분석 컨테이너(300)에 저장된 데이터의 분석결과들은 키이-밸류 쌍들로서 저장된다. KVSSD 분석 컨테이너(300)는 하나 이상의 KVSSD 데이터 컨테이너들(예: KVSSD 데이터 컨테이너(200))와 관련되며, 이는 분석 키이들의 컨테이너 ID를 통해 수행될 수 있다.
키이는 데이터 컨테이너 ID, 데이터 컨테이너들의 데이터의 논리 오프셋 및 사용자/어플리케이션 키이를 포함하며, 이는 대응되는 데이터 컨테이너의 키이일 수도 있다.
밸류는 헤더(예: 데이터의 초기 부분에 저장되는 고정된 크기의 헤더)를 포함한다. 분석정보는 헤더 뒤에 저장된다. 밸류의 데이터 부분에서 발견된 분석정보의 유형은 헤더에 의해 표시된다. 예를 들면, "유형 0"을 표시하는 헤더를 갖는 밸류는 분석과 관련된 사용자 데이터(예: 검색과 일치하도록 발견된 사용자 데이터)를 저장할 수 있다. 또는, "유형 1"을 표시하는 헤더를 갖는 밸류는 키이가 저장되는 관련된 데이터 컨테이너 내의 블록 위치들을 보유할 수 있으며, 이는 분석에 관한 데이터를 검색하는데 사용될 수 있다(예: 유형 0은 실제 데이터를 포함하고, 유형 1은 데이터를 보유한 KVSSD 데이터 컨테이너의 블록에 대한 레퍼런스를 저장함). 예를 들면, KVSSD 분석 컨테이너(300)가 HTTP(HyperText Transfer Protocol) 요청들을 검색하도록 구성된 경우, 전체 URL은 데이터에 저장될 수 있다.
도 4는 일 실시 예에 따른 분석을 위해 층을 이룬 KVSSD컨테이너를 포함하는 전자장치(400)의 블록도 및 데이터 흐름도이다.
도 4를 참조하면, 전자장치(400)는 KVSSD 데이터 컨테이너(401), KVSSD 밸류 기반의 컨테이너-0(403) 및 KVSSD 패턴 인식 컨테이너-1(405)를 포함한다.
KVSSD 컨테이너들은 도 4에 도시된 바와 같이 층들로 구성된다. 상층은 KVSSD 데이터 컨테이너(401)이며, 이는 키이-밸류 쌍들에 사용자 데이터를 지속적으로 저장한다. 관리자 또는 어플리케이션은 KVSSD 분석 컨테이너들을 구성하여 이들을 데이터 컨테이너들과 관련시킨다. 예를 들면, KVSSD 분석 컨테이너는 하나 이상의 데이터 컨테이너와 관련될 수 있다. KVSSD 분석 컨테이너들은 KVSSD 데이터 컨테이너들에 저장된 데이터로부터 취한 검색결과 데이터를 보유할 수 있다. 분석정보는 KVSSD 분석 컨테이너들 내 키이-밸류 쌍들에 저장될 수도 있다.
RocksDB를 위한 API는 분석 컨테이너들을 포함하기 위해 향상될 수 있다. 하지만, 본 개시는 임의의 적합한 API에 적용될 수 있지만, 이에 한정되지 않는다. 예를 들면, RocksDB의 API는 예를 들어 (밸류 기반의)HTTP 요청들을 위한 분석 컨테이너를 생성하고 이를 KVSSD 데이터 컨테이너(예: KVSSD 데이터 컨테이너(401))와 관련시키도록 KVSSD와 통신할 수 있다. KVSSD(예: 전자장치(400))는 분석 컨테이너(예: 밸류 기반의 KVSSD 컨테이너-0(403))을 포함하며, 분석 컨테이너를 데이터 컨테이너(예: KVSSD 데이터 컨테이너(401))와 관련시킨다. 또한, 분석 컨테이너는 이전의 분석의 결과에 대한 추가 분석을 수행하기 위한 기본(base) 데이터 컨테이너들로서 다른 분석 컨테이너들을 활용할 수 있다. 즉, 분석 컨테이너는 다른 분석 컨테이너들에 의해 데이터 컨테이너로서 사용될 수 있으며, 분석 컨테이너들 내의 데이터는 일부 추가 목적(예: 패턴 인식을 위한 패턴 인식 컨테이너-1(405) 및 반복되는(recurrent) HTTP 정보의 저장 등)을 위해 분석될 수 있다.
도 5는 일 실시 예에 따른 분석을 위한 KVSSD 컨테이너의 I/O 경로에 대한 블록도 및 데이터 흐름도이다.
도 5를 참조하면, 로깅 모듈(501)은 KVSSD 컨테이너들을 걸친 데이터 트랜잭션(transaction)이 최저 레벨의 디테일(즉, 아토믹(atomic))임을 보장하기 위해 지속적으로 SRAM(Static Random Access Memory)에 사용자 데이터를 기록한다.
사용자 기록 데이터를 처리하기 위해 KVSSD 데이터 컨테이너(503)와 FPGA(505)에 사용자 기록 데이터가 제공된다. KVSSD 데이터 컨테이너(503)는 데이터 블록들을 디스크에 할당할 수 있으며, 데이터 컨테이너 내 키이-밸류 쌍들에 데이터를 지속적으로 저장할 수 있다. 블록 포인터 또는 식별된 데이터에 대한 레퍼런스는 지속적 데이터 분석 모듈(507)로 전달될 수 있다. FPGA(505)는 보다 빠른 데이터 검색(lookup)을 가능하게 하며, KVSSD 상에 또는 인접하게 위치될 수 있다.
지속적 데이터 분석 모듈(507)은 FPGA(505)로부터 정보를 모아 KVSSD 분석 컨테이너들에 저장한다. 즉, FPGA(505)는 KVSSD 데이터 컨테이너 내 데이터에서 특정 분석 연산을 수행하며, 데이터가 저장되거나 참조될 여부와 관계없이 분석 유형, 데이터 유형을 기초로 한 포멧으로 분석 컨테이너에 키이-밸류 쌍으로써 그 결과들을 저장한다. 이후에, 사용자 기록 데이터는 사용자 기록 데이터 해제 모듈(release module)(509)에 의해 해제된다.
복귀 모듈(511)은 로깅 모듈(501)에 관련된 데이터 구조를 해제하며, 여기서 데이터는 디스크에 지속적으로 저장된다.
가상 또는 비가상 KVSSD 분석 컨테이너들은 질의들(queries)에 대한 반응성을 향상시킬 수 있다. 예를 들면, 관리자는 논리연산을 나타내기 위해 2개 이상의 KVSSD 분석 컨테이너들 위에 가상 KVSSD 컨테이너들을 생성할 수 있다. 예를 들면, 가상 KVSSD 컨테이너는 다수의 KVSSD 컨테이너들에 저장된 모든 데이터에 "OR"연산의 결과를 표시하기 위해 생성될 수 있다. 가상 KVSSD 컨테이너는 "OR"연산을 수행하는데 FPGA(505)를 사용할 수 있다.
일 실시 예에 있어서, KVSSD들을 사용하여 분석을 수행하기 위해 4개의 API가 RocksDB(또는 이와 유사한 어플리케이션들)를 위해 제공된다.
제 1 API는 관리자가 KVSSD 분석 컨테이너를 생성하고 이를 KVSSD 데이터 컨테이너와 관련시킬 수 있게 하는 KVSSD 분석을 구성하기 위한 것일 수 있다.
제 2 API는 KVSSD 분석 컨테이너를 KVSSD 데이터 컨테이너와 관련시키지 않는 "KVSSD 컨테이너 삭제 API"이다. KVSSD 데이터 컨테이너는 검색하기 위해 질의를 받을 수 있다.
제 3 API는 KVSSD 분석 컨테이너를 종료시키는 "KVSSD 파괴 API"이다. 종료되는 KVSSD 분석 컨테이너에 저장된 데이터 분석이 제거되어 저장공간이 복구된다.
제 4 API는 관리자가 KVSSD 분석 컨테이너 또는 다른 가상 KVSSD 컨테이너 위에 가상 KVSSD 컨테이너를 생성할 수 있게 하는 "가상 KVSSD 컨테이너 생성 API"이다. 예를 들어 질의 최적화를 위해 가상 KVSSD 컨테이너가 생성될 수 있으며, 여기서 가상 KVSSD 컨테이너는 데이터를 반드시 저장할 필요는 없지만, 데이터를 처리하는데 FPGA를 사용할 수 있다.
도 6은 일 실시 예에 따른 네트워크 환경에서의 전자장치(601)에 대한 블록도이다.
도 6을 참조하면, 네트워크 환경(600)에서의 전자장치(601)는 제 1 네트워크(698)(예: 단거리의 무선통신 네트워크)를 통해 전자장치(602)와 통신하거나 제 2 네트워크(699)(예: 장거리 무선통신 네트워크)를 통해 전자장치(604) 또는 서버(608)와 통신할 수 있다. 일 실시 예에 따르면, 전자장치(601)는 서버(608)를 통해 전자장치(604)와 통신할 수 있다. 전자장치(601)는 프로세서(620), 메모리(630)(예: 데이터 컨데이너들과 분석 컨테이너들을 갖는 KVSSD), 입력장치(650), 음향 출력장치(655), 화면표시장치(660), 오디오 모듈(670), 센서 모듈(676), 인터페이스(677), 햅틱 모듈(679), 카메라 모듈(680), 전원관리 모듈(688), 배터리(689), 통신 모듈(690), 가입자 식별 모듈(SIM: Subscriber Identification Module)(696) 또는 안테나 모듈(697)을 포함할 수 있다. 일 실시 예에 있어서, 구성요소들 중 적어도 하나(예: 화면표시장치(660) 또는 카메라 모듈(680))는 전자장치(601)에서 생략될 수 있거나, 하나 이상의 다른 구성요소들이 전자장치(601)에 추가될 수 있다. 일 실시 예에 있어서, 일부 구성요소들은 단일 집적회로(IC)로 구현될 수 있다. 예를 들면, 센서 모듈(676)(예: 지문인식 센서, 홍채인식 센서 또는 조도센서)은 화면표시 장치(660)(예: 디스플레이)에 내장될 수 있다.
예를 들면, 프로세서(620)는 프로세서(620)와 결합된 전자장치(601)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어하도록 소프트웨어(예: 프로그램(640))를 실행할 수 있으며, 다양한 데이터 처리 또는 계산을 수행할 수 있다. 일 실시 예에 따르면, 데이터 처리 또는 계산의 적어도 일부로서, 프로세서(620)는 휘발성 메모리(632) 내 다른 구성요소(예: 센서 모듈(676) 또는 통신 모듈(690)로부터 수신된 명령 또는 데이터를 로딩하고, 휘발성 메모리(632)에 저장된 명령 또는 데이터를 처리하고, 그 결과 데이터를 비휘발성 메모리(634)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(620)는 메인 프로세서(621)(예: 중앙처리장치(CPU) 또는 어플리케이션 프로세서(AP)), 및 메인 프로세서(621)와 독립적으로 또는 함께 연산될 수 있는 보조 프로세서(623)(예: 그래픽처리장치(GPU), 이미지처리 프로세서(ISP: Image Signal Processor), 센서 허브 프로세서 또는 통신 프로세서(CP))를 포함할 수 있다. 추가적이거나 대안적으로, 보조 프로세서(623)는 메인 프로세서(621)보다 낮은 전력을 소비하거나 특정 기능을 실행하도록 적용될 수 있다. 보조 프로세서(623)는 메인 프로세서(621)와 별개로 또는 일부로 구현될 수 있다.
보조 프로세서(623)는, 메인 프로세서(621)가 비활성상태(예: 슬립 상태)에 있는 동안에는 메인 프로세서(621) 대신에 또는 메인 프로세서(621)가 활성상태(예: 어플리케이션을 실행하는 상태)에 있는 동안에는 메인 프로세서(621)와 함께 전자장치(601)의 구성요소들 중 적어도 하나의 구성요소(예: 화면표시장치(660), 센서 모듈(676) 또는 통신 모듈(690))에 관한 기능들 또는 상태들 중 적어도 일부를 제어할 수 있다. 일 실시 예에 따르면, 보조 프로세서(623)(예: 이미지 신호 프로세서 또는 통신 프로세서)는 보조 프로세서(623)와 기능적으로 관련된 다른 구성요소(예: 카메라 모듈(680) 또는 통신 모듈(690))의 일부로서 구현될 수 있다.
메모리(630)(예: 데이터 컨테이너들과 분석 컨테이너들을 구비한 KVSSD)는 전자장치(601)의 적어도 하나의 구성요소(예: 프로세서(620) 또는 센서 모듈(676)에 의해 사용된 다양한 데이터를 저장할 수 있다. 다양한 데이터는 예를 들어 소프트웨어(예: 프로그램(640)) 및 그와 관련된 명령어들에 대한 입출력데이터를 포함할 수 있다. 메모리(630)는 휘발성 메모리(632) 또는 비휘발성 메모리(634)를 포함할 수 있다.
프로그램(640)은 소프트웨어로서 메모리(630)에 저장될 수 있으며, 예를 들어 운영체제(OS: Operating System)(642), 미들웨어(644) 또는 어플리케이션(646)을 포함할 수 있다.
입력장치(650)는 전자장치(601)의 외부(예: 사용자)로부터 전자장치(601)의 다른 구성요소(예: 프로세서(620))에 의해 사용될 명령어 또는 데이터를 수신할 수 있다. 입력장치(650)는 예를 들어 마이크(microphone), 마우스 또는 키보드를 포함할 수 있다.
음향 출력장치(655)는 전자장치(601)의 외부로 음향신호를 출력한다. 음향 출력장치(655)는 예를 들어 스피커 또는 수신기를 포함할 수 있다. 스피커는 멀티미디어를 재생하거나 또는 녹음하는 것과 같이 일반적인 목적으로 사용될 수 있으며, 수신기는 착신호출을 수신하는데 사용될 수 있다. 일 실시 예에 따르면, 수신기는 스피커와 별개로 또는 스피커의 일부로서 구현될 수 있다.
화면표시장치(660)는 전자장치(601)의 외부(예: 사용자)에 정보를 시각적으로 제공할 수 있다. 화면표시장치(660)는 예를 들어 디스플레이, 홀로그램 장치 또는 프로젝터, 및 디스플레이, 홀로그램 장치와 프로젝터 중 대응되는 하나를 제어하기 위한 제어회로를 포함할 수 있다. 일 실시 예에 따르면, 화면표시장치(660)는 터치를 감지하도록 적용된 터치 회로 또는 터치에 의해 발생되는 터치의 강도를 측정하도록 적용된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(670)은 음향신호를 전기신호로, 전기신호를 음향신호로 전환시킬 수 있다. 일 실시 예에 따르면, 오디오 모듈(670)은 입력장치(650)를 통해 음향을 획득할 수 있거나 음향 출력장치(655) 또는 전자장치(601)와 직접(예: 유선) 또는 무선으로 결합된 외부 전자장치(예: 전자장치(602))의 헤드폰을 통해 음향을 출력할 수 있다.
센서 모듈(676)은 전자장치(601)의 활성상태(예: 전원 또는 온도) 또는 전자장치(601) 외부의 환경 상태(예: 사용자의 상태)를 검출하여 검출된 신호에 대응되는 전기신호 또는 데이터 값을 생성할 수 있다. 일 실시 예에 따르면, 센서 모듈(676)은 예를 들어 동작인식 센서(gesture sensor), 자이로 센서, 기압 센서, 자기 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, 적외선(IR) 센서, 생체인식 센서, 온도 센서, 습도 센서 또는 조도 센서를 포함할 수 있다.
인터페이스(677)는 외부 전자장치(예: 전자장치(602))와 직접(예: 유선) 또는 무선으로 결합될 전자장치(601)에 사용되도록 한개 이상의 특정 프로토콜들을 지원할 수 있다. 일 실시 예에 따르면, 인터페이스(677)는 예를 들어 고화질 멀티미디어 인터페이스(HDMI: High Definition Multimedia Interface), USB 인터페이스, SD 카드 인터페이스 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(678)는 전자장치(601)가 외부 전자장치(예: 전자장치(602))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시 예에 따르면, 연결 단자(678)는 예를 들어 HDMI 커넥터, USB 커넥터, SD 카드 커넥터 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(679)은 전기신호를, 촉각 또는 운동감각을 통해 사용자에 의해 인지될 수 있는 기계적 자극(예: 진동 또는 움직임) 또는 전기적 자극으로 변환시킬 수 있다. 일 실시 예에 따르면, 햅틱 모듈(679)은 예를 들어 모터, 압전소자 또는 전기자극기를 포함할 수 있다.
카메라 모듈(680)은 정지 화면 또는 움직이는 화면들을 캡처할 수 있다. 일 실시 예에 따르면, 카메라 모듈(680)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 신호 프로세서들 또는 플래시들을 포함할 수 있다.
전원관리 모듈(688)은 전자장치(601)에 공급되는 전원을 관리할 수 있다. 일 실시 예에 따르면, 전원관리 모듈(688)은 예를 들어 전원관리 집적회로(PMIC: Power Management Integrated Circuit)의 적어도 일부로서 구현될 수 있다.
배터리(689)는 전자장치(601)의 적어도 하나의 구성요소에 전원을 공급할 수 있다. 일 실시 예에 따르면, 배터리(689)는 예를 들어 재충전되지 못하는 1차전지, 재충전되는 2차전지 또는 연료전지를 포함할 수 있다.
통신 모듈(690)은 전자장치(601)와 외부 전자장치(예: 전자장치(602), 전자장치(604) 또는 서버(608)) 사이에 직접(예: 유선) 통신 채널 또는 무선 통신 채널을 설정하여, 설정된 통신 채널을 통해 통신을 행하는 것을 지원할 수 있다. 통신 모듈(690)은, 프로세서(620)(예: AP)와 독립적으로 동작가능하고 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 통신 프로세서를 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(690)은 무선 통신 모듈(692)(예: 이동통신 모듈, 근거리 무선통신 모듈 또는 글로벌 위성 항법 시스템(GNSS: Global Navigation Satellite System) 통신 모듈) 또는 유선 통신 모듈(694)(예: 근거리 통신망(LAN) 통신 모듈 또는 전력선 통신(PLC) 모듈)을 포함할 수 있다. 이들 통신 모듈들 중 대응되는 하나는 제 1 네트워크(698)(예: 이동통신 네트워크, 인터넷 또는 컴퓨터 네트워크(예: 블루투스TM, 와이파이(Wi-Fi) 다이렉트 또는 적외선 통신(IrDA: Infrared Data Association)과 같은 근거리 통신 네트워크) 또는 제 2 네트워크(699)(예: 무선통신 네트워크, 인터넷 또는 컴퓨터 네트워크(예: LAN 또는 광역망(WAN: Wide Area Network)와 같은 장거리 통신 네트워크)를 통해 외부 전자장치와 통신할 수 있다. 이러한 다양한 유형의 통신 모듈들은 단일 구성요소(예: 단일 IC)로서 구현될 수 있거나, 서로 별개인 복합 구성요소들(예: 복합 ICs)로서 구현될 수 있다. 무선 통신 모듈(692)은 가입자 식별 모듈(696)에 저장된 가입자 정보(예: 국제 이동 가입자 식별(IMSI: International Mobile Subscriber Identity))를 사용하여 제 1 네트워크(698)와 제 2 네트워크(699)와 같은 통신 네트워크에서 전자장치(601)를 식별하고 입증할 수 있다.
안테나 모듈(697)은 전자장치(601)의 외측(예: 외부 전자장치)으로 신호 또는 전력을 송신하거나 외측으로부터 신호 또는 전력을 수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(697)은 하나 이상의 안테나들을 포함할 수 있으며, 이로부터 제 1 네트워크(698) 또는 제 2 네트워크(699)와 같은 통신 네트워크에 사용되는 통신 방식에 적합한 적어도 하나의 안테나는 예를 들어 통신 모듈(690)(예: 무선통신 모듈(692))에 의해 선택될 수 있다. 이후에 신호 또는 전력은 선택된 적어도 하나의 안테나를 통해 통신 모듈(690)과 외부 전자장치(602 또는 604) 사이에서 송수신될 수 있다.
상술한 구성요소들 중 적어도 일부는 상호 결합될 수 있으며, 이 사이에서 상호-주변장치 통신 방식(예: 버스, GPIO(General Purpose Input and Output), 직렬 주변장치 인터페이스(SPI: Serial Peripheral Interface) 또는 MIPI(Mobile Industry Processor Interface))을 통해 신호(예: 명령어들 또는 데이터)들을 통신할 수 있다.
일 실시 예에 따르면, 명령어들 또는 데이터는 제 2 네트워크(699)와 결합된 서버(608)를 통해 전자장치(601)와 외부 전자장치(604) 사이에서 송수신될 수 있다. 전자장치들(602 및 604) 각각은 전자장치(601)와 동일한 유형 또는 상이한 유형의 장치일 수 있다. 일 실시 예에 따르면, 전자장치(601)에서 실행될 연산들 모두 또는 일부는 하나 이상의 외부 전자장치들(602, 604 또는 608)에서 실행될 수 있다. 예를 들면, 전자장치(601)가 자동으로 기능 또는 서비스를 수행해야 하거나, 사용자 또는 다른 장치로부터 요청에 응답하여 기능 또는 서비스를 수행해야 하는 경우, 전자장치(601)는 기능 또는 서비스를 실행하는 대신에 또는 이에 추가하여 기능 또는 서비스의 적어도 일부를 수행할 한 개 이상의 외부 전자장치들(602, 604 또는 608)을 요청할 수 있다. 이러한 요청을 받은 하나 이상의 외부 전자장치들(602, 604 또는 608)은 요청된 기능 또는 서비스의 적어도 일부 또는 이러한 요청과 관련된 추가 기능 또는 추가 서비스를 수행할 수 있으며, 전자장치(601)에 대한 수행 결과를 이송할 수 있다. 전자장치(601)는 결과를 추가처리 하거나 추가처리 없이 결과에 대한 응답의 일부로서 결과를 제공할 수 있다. 이를 위해, 예를 들어 클라우드 컴퓨팅, 분산 컴퓨팅, 클라이언트-서버 컴퓨팅 기술이 사용될 수 있다.
일 실시 예에 따른 전자장치는 다양한 유형의 전자장치들 중 하나일 수 있다. 전자장치들은 예를 들어 휴대용 통신장치(예: 스마트폰), 컴퓨터, 휴대용 멀티미디어 장치, 휴대용 의료장치, 카메라, 웨어러블 장치 또는 가정용 전자제품을 포함할 수 있다. 본 개시의 일 실시 예에 따르면, 전자장치는 상술한 전자장치들에 한정되지 않는다.
본 개시에 사용된 용어들은 해당 실시 예에 대한 다양한 변화들, 등가물들 또는 대체물들을 포함하도록 의도되지만 본 개시를 한정하는 것으로는 의도되지 않는다. 첨부도면의 설명과 관련하여, 유사한 참조번호는 유사하거나 관련된 요소들을 지칭하는데 사용될 수 있다. 일 항목과 대응되는 단수형태의 명사는 명백하게 달리 표현되지 않는 한 하나 이상의 것들을 포함할 수 있다. 본 명세서에서 사용된 바와 같이, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나" 및 "A, B 또는 C 중 적어도 하나"와 같은 이러한 어구들 각각은 함께 열거된 항목들의 가능한 모든 조합들을 포함할 수 있다. 본 명세서에서 사용된 바와 같이, "첫 번째", "두 번째", "제 1" 및 "제 2"와 같은 용어들은 대응되는 구성요소를 다른 구성요소와 구별하는데 사용될 수 있지만, 다른 측면(예: 중요도 또는 순서)에 구성요소들을 한정하는 것으로 의도되지는 않는다. 일 요소(예: 제 1 요소)가 타 요소(예: 제 2 요소)"와 결합된", "에 결합된", "와 연결된" 또는 "에 연결된"이라는 용어들과 같이 "작동적으로 연결된(operatively)", "통신적으로"라는 용어와 함께 또는 없이 지칭되는 경우, 이러한 요소는 타 요소와 직접(예: 유선), 무선 또는 제 3 요소를 통해 결합될 수 있음을 의미한다.
본 명세서에서 사용된 바와 같이, "모듈"이라는 용어는 하드웨어, 소프트웨어 또는 펌웨어에서 구현되는 유닛을 포함할 수 있으며, 예를 들어 "논리", "논리 블록", "부품" 및 "회로"의 다른 용어들과 상호호환적으로 사용될 수 있다. 모듈은 하나 이상의 기능들을 수행하도록 적용된 단일 통합 구성요소이거나 최소 유닛 또는 그의 부품일 수 있다. 예를 들어 일 실시 예에 따르면, 모듈은 주문형 집적회로(ASIC: Application-Specific Integrated Circuit)의 한 형태로 구현될 수 있다.
일 실시 예는 기계(예: 전자장치(601))에 의해 판독 가능한 저장 매체(예: 내부 메모리(636) 또는 외부 메모리(638))에 저장된 하나 이상의 지시들을 포함하는 소프트웨어(예: 프로그램(640))으로서 구현될 수 있다. 예를 들면, 기계(예: 전자장치(601))의 프로세서(예: 프로세서(620))는 프로세서의 제어 하에 하나 이상의 구성요소들을 사용하거나 사용하지 않고 저장 매체에 저장된 하나 이상의 지시들 중 적어도 하나를 호출하여 이를 실행시킬 수 있다. 따라서, 기계는 호출된 적어도 하나의 지시에 따른 적어도 하나의 기능을 수행하도록 동작될 수 있다. 하나 이상의 지시들은 컴플라이어(complier)에 의해 생성된 코드 또는 인터프리터(interpreter)에 의해 실행가능한 코드를 포함할 수 있다. 기계 판독형 저장 매체는 비일시적 저장 매체의 형태로 제공될 수 있다. "비일시적"이라는 용어는 저장 매체가 형태가 있는 장치임을 의미하며 신호(예: 전자파)를 포함하지 않지만, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되거나 일시적으로 저장되는 것을 구별하지 않는다.
일 실시 예에 따르면, 본 개시의 방법적 요소가 포함될 수 있으며, 상기 방법적 요소는 컴퓨터 프로그램 제품에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 판매자와 구매자 사이의 제품으로서 거래될 수 있다. 컴퓨터 프로그램 제품은 기계 판독형 저장 매체(예: CD-ROM)의 형태로 배포되거나, 어플리케이션 스토어(예: Play StoreTM)를 통해 또는 2대의 사용자 장치들(예: 스마트폰) 사이에 직접 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인으로 배포된다면, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버 또는 릴레이 서버(relay server)의 메모리와 같은 기계 판독형 저장 매체에 일시적으로 생성되거나 적어도 일시적으로 저장될 수 있다.
일 실시 예에 따르면, 상술한 구성요소들 중 각각의 구성요소(예: 모듈 또는 프로그램)는 단일체(single entity) 또는 복합체를 포함할 수 있다. 일 실시 예에 따르면, 하나 이상의 상술한 구성요소들이 생략될 수 있거나, 하나 이상의 다른 구성요소들이 추가될 수 있다. 대안적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈들 또는 프로그램들)은 단일 구성요소로 통합될 수 있다. 이러한 경우에, 통합된 구성요소는 통합되기 이전에 복수의 구성요소들 중 대응되는 하나에 의해 수행되는 것과 동일하거나 유사한 방식으로 복수의 구성요소들 각각의 하나 이상의 기능들을 여전히 수행할 수 있다. 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 연산은 순차적으로, 병렬적으로, 반복적으로 또는 경험적으로 수행될 수 있거나, 하나 이상의 연산들은 다른 순서로 실행되거나 생략될 수 있거나, 또는 하나 이상의 다른 연산들이 추가될 수 있다.
본 개시의 특정 실시 예들이 발명의 상세한 설명에 기재되어 있지만, 본 개시는 본 개시의 범위에서 벗어나지 않고 다양한 형태로 변경될 수 있다. 따라서, 본 개시의 범위는 단지 기재된 실시 예들을 기반으로 결정되어서는 안되며, 첨부된 청구항들 및 이의 등가물들을 기반으로 결정되어야 한다.
100. 전자장치 101. 제 1 KVSSD 컨테이너
103. 제 2 KVSSD 컨테이너 105. 그룹
107. 제 1 세트 109. 제 2 세트
111. 그룹 113. 키이-밸류 쌍
200. KVSSD 데이터 컨테이너 201. 제 1 키이-밸류 쌍
203. 제 2 키이-밸류 쌍 205. 제 n 키이-밸류 쌍
300. KVSSD 분석 컨테이너 301. 제 1 키이-밸류 쌍
303. 제 2 키이-밸류 쌍 305. 제 n 키이-밸류 쌍
400. 전자장치 401. KVSSD 데이터 컨테이너
403. 밸류 기반의 KVSSD 컨테이너-0
405. KVSSD 패턴 인식 컨테이너-1
501. 로깅 모듈 503. KVSSD 데이터 컨테이너
505. FPGA 507. 지속적 데이터 분석 모듈
509. 사용자 기록 데이터 해제 모듈
511. 복귀 모듈 601. 전자장치
602. 전자장치 604. 전자장치
608. 서버 620. 프로세서
621. 메인 프로세서 623. 보조 프로세서
630. 메모리 632. 휘발성 메모리
634. 비휘발성 메모리 636. 내부 메모리
638. 외부 메모리 640. 프로그램
642. 운영체제(OS) 644. 미들웨어
646. 어플리케이션 650. 입력장치
655. 음향 출력장치 660. 화면표시장치
670. 오디오 모듈 676. 센서 모듈
677. 인터페이스 678. 연결 단자
679. 햅틱모듈 680. 카메라 모듈
688. 전원관리 모듈 689. 배터리
690. 통신 모듈 692. 무선 통신 모듈
694. 유선 통신 모듈 696. 가입자 식별 모듈
697. 안테나 모듈 698. 제 1 네트워크
699. 제 2 네트워크

Claims (20)

  1. 적어도 하나의 KVSSD 데이터 컨테이너를 포함하는 KVSSD(Key-Value Solid State Device); 및
    적어도 하나의 KVSSD 데이터 컨테이너 중 적어도 하나와 관련된 적어도 하나의 KVSSD 분석 컨테이너를 포함하는, 장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 KVSSD 데이터 컨테이너는 데이터를 키이-밸류 쌍들에 저장하도록 구성되는, 장치.
  3. 제 1 항에 있어서,
    상기 장치는 상기 적어도 하나의 KVSSSD 분석 컨테이너 중 적어도 하나와 관련된 적어도 하나의 가상 분석 컨테이너를 더 포함하는, 장치.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 가상 분석 컨테이너 각각은 다수의 컨테이너들에 저장된 데이터에 대한 논리 연산을 수행하도록 구성되는, 장치.
  5. 제 4 항에 있어서,
    상기 적어도 하나의 가상 분석 컨테이너 각각은 논리 연산을 수행하기 위해 FPGA(Field Programmable Gate Array)를 활용하도록 구성되는, 장치.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너는 키이-밸류 쌍들에 데이터 분석 결과들을 저장하도록 구성되는, 장치.
  7. 제 6 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너에 저장된 상기 키이-밸류의 키이는 KVSSD 데이터 컨테이너 식별자(ID), 상기 KVSSD 데이터 컨테이너 ID와 관련된 KVSSD 데이터 컨테이너 내 데이터에 대한 논리 오프셋, 및 상기 KVSSD 데이터 컨테이너 ID와 관련된 KVSSD 데이터 컨테이너 내 키이기도 한 사용자 키이를 포함하는, 장치.
  8. 제 6 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너에 저장된 상기 키이-밸류의 밸류는 데이터의 초기 부분에 저장되는 고정된 크기의 헤더 및 상기 헤더에 저장된 유형에 따른 분석결과 정보를 포함하는, 장치.
  9. 제 8 항에 있어서,
    상기 헤더에 표시된 상기 유형은 분석과 관련된 사용자 데이터의 저장을 표시하는 제 1 유형 및 상기 키이가 기록된 상기 적어도 하나의 KVSSD 데이터 컨테이너 내 보유 레퍼런스들을 표시하는 제 2 유형을 포함하는, 장치.
  10. 제 1 항에 있어서,
    상기 적어도 하나의 KVSSD 데이터 컨테이너에 수신되고 저장된 데이터를 수신하고, 상기 데이터에 분석 연산을 수행하고, 및 상기 분석 연산의 결과들을 키이-밸류 내 상기 적어도 하나의 KVSSD 분석 컨테이너에 저장하도록 구성된 FPGA를 더 포함하는, 장치.
  11. KVSSD 내 적어도 하나의 KVSSD 데이터 컨테이너에 데이터를 저장하는 단계;
    적어도 하나의 KVSSD 분석 컨테이너와 관련된 상기 적어도 하나의 KVSSD 데이터 컨테이너 중 적어도 하나를 상기 적어도 하나의 KVSSD 분석 컨테이너로 분석하는 단계를 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 KVSSD 데이터 컨테이너 내 키이-밸류에 데이터를 저장하는 단계를 더 포함하는, 방법.
  13. 제 11 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너 중 적어도 하나와 적어도 하나의 가상 분석 컨테이너를 관련시키는 단계를 더 포함하는, 방법.
  14. 제 13 항에 있어서,
    상기 적어도 하나의 가상 분석 컨테이너 중 적어도 하나로 다수의 컨테이너들에 저장된 데이터에 대한 논리 연산을 수행하는 단계를 더 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 적어도 하나의 가상 분석 컨테이너 중 적어도 하나에 포함된 FPGA로 상기 논리 연산을 수행하는 단계를 더 포함하는, 방법.
  16. 제 11 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너 내 키이-밸류 쌍들에 데이터 분석결과들을 저장하는 단계를 더 포함하는, 방법.
  17. 제 16 항에 있어서,
    KVSSD 데이터 컨테이너 식별자(ID), 상기 KVSSD 데이터 컨테이너 ID와 관련된 KVSSD 데이터 컨테이너 내 데이터에 대한 논리 오프셋 및 상기 적어도 하나의 KVSSD 분석 컨테이너에 저장된 키이-밸류 쌍 내 키의 상기 KVSSD 데이터 컨테이너 ID와 관련된 상기 KVSSD 데이터 컨테이너의 키이 이기도 한 사용자 키이를 포함하는 단계를 더 포함하는, 방법.
  18. 제 16 항에 있어서,
    상기 적어도 하나의 KVSSD 분석 컨테이너에 저장된 상기 키이-밸류 쌍 내 밸류의 상기 헤더에 저장된 유형에 따른 데이터의 초기 부분 및 분석결과 정보에 저장되는 고정된 크기의 헤드를 포함하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서,
    분석과 관련된 사용자 데이터의 저장을 표시하는 제 1 유형 및 상기 키이가 상기 헤더에 표시된 상기 제 1 유형에 기록된 상기 적어도 하나의 KVSSD 데이터 컨테이너 내 보유 레퍼런스들을 표시하는 제 2 유형을 포함하는 단계를 더 포함하는, 방법.
  20. 제 11 항에 있어서,
    상기 적어도 하나의 KVSSD 데이터 컨테이너에 수신되고 저장된 데이터를 FPGA에서 수신하는 단계, 상기 데이터에 분석 연산을 수행하는 단계 및 상기 분석 연산의 결과들을 키이-밸류 쌍 내 상기 적어도 하나의 KVSSD 분석 컨테이너에 저장하는 단계를 더 포함하는, 방법.
KR1020190021972A 2018-05-03 2019-02-25 Kvssd 내 데이터 분석 장치 및 방법 KR102443699B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862666283P 2018-05-03 2018-05-03
US62/666,283 2018-05-03
US15/975,314 US10579606B2 (en) 2018-05-03 2018-05-09 Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers
US15/975,314 2018-05-09

Publications (2)

Publication Number Publication Date
KR20190127541A true KR20190127541A (ko) 2019-11-13
KR102443699B1 KR102443699B1 (ko) 2022-09-16

Family

ID=68384908

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190021972A KR102443699B1 (ko) 2018-05-03 2019-02-25 Kvssd 내 데이터 분석 장치 및 방법

Country Status (3)

Country Link
US (1) US10579606B2 (ko)
KR (1) KR102443699B1 (ko)
CN (1) CN110442569B (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120310982A1 (en) * 2011-06-06 2012-12-06 International Business Machines Corporation Scalable, distributed containerization across homogenous and heterogeneous data stores
KR20160047938A (ko) * 2014-10-23 2016-05-03 주식회사 나라시스템 데이터 처리장치
US20160328176A1 (en) * 2014-09-24 2016-11-10 International Business Machines Corporation Providing access information to a storage controller to determine a storage tier for storing data
US20170316028A1 (en) * 2017-04-26 2017-11-02 Samsung Electronics Co., Ltd. Key value file system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090102789A (ko) * 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US7827201B1 (en) 2007-04-27 2010-11-02 Network Appliance, Inc. Merging containers in a multi-container system
US8429114B2 (en) * 2010-09-29 2013-04-23 Nokia Corporation Method and apparatus for providing low cost programmable pattern recognition
CN105094707B (zh) 2015-08-18 2018-03-13 华为技术有限公司 一种数据存储、读取方法及装置
WO2017044047A1 (en) 2015-09-08 2017-03-16 Agency For Science, Technology And Research Highly scalable computational active ssd storage device
JP2017076264A (ja) 2015-10-15 2017-04-20 日本電気株式会社 ファイルアクセスシステム、方法及びプログラム
US20170139594A1 (en) 2015-11-17 2017-05-18 Samsung Electronics Co., Ltd. Key-value integrated translation layer
KR102495652B1 (ko) 2016-01-14 2023-02-06 삼성전자주식회사 전자 장치 및 전자 장치에서의 컨테이너 기반의 데이터 관리 방법
US9990146B2 (en) 2016-02-03 2018-06-05 Sandisk Technologies Llc Apparatus and method of data sequencing
US11301422B2 (en) 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10387302B2 (en) 2016-04-18 2019-08-20 Samsung Electronics Co., Ltd. Managing database index by leveraging key-value solid state device
CN106886375B (zh) * 2017-03-27 2019-11-05 百度在线网络技术(北京)有限公司 存储数据的方法和装置
US10678768B2 (en) * 2017-06-30 2020-06-09 Intel Corporation Logical band-based key-value storage structure
US11436353B2 (en) * 2017-09-13 2022-09-06 Vmware, Inc. Merge updates for key value stores
US10545696B2 (en) * 2017-11-14 2020-01-28 Samsung Electronics Co., Ltd. Data deduplication using KVSSD
US10572161B2 (en) * 2017-11-15 2020-02-25 Samsung Electronics Co., Ltd. Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120310982A1 (en) * 2011-06-06 2012-12-06 International Business Machines Corporation Scalable, distributed containerization across homogenous and heterogeneous data stores
US20160328176A1 (en) * 2014-09-24 2016-11-10 International Business Machines Corporation Providing access information to a storage controller to determine a storage tier for storing data
KR20160047938A (ko) * 2014-10-23 2016-05-03 주식회사 나라시스템 데이터 처리장치
US20170316028A1 (en) * 2017-04-26 2017-11-02 Samsung Electronics Co., Ltd. Key value file system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
프레젠테이션 1 *

Also Published As

Publication number Publication date
CN110442569A (zh) 2019-11-12
KR102443699B1 (ko) 2022-09-16
US20190340270A1 (en) 2019-11-07
CN110442569B (zh) 2021-08-03
US10579606B2 (en) 2020-03-03

Similar Documents

Publication Publication Date Title
KR102337509B1 (ko) 컨텐츠 제공 방법 및 그 전자 장치
KR102560635B1 (ko) 컨텐트 인식 장치 및 그 동작 방법
WO2020048392A1 (zh) 应用程序的病毒检测方法、装置、计算机设备及存储介质
US10853024B2 (en) Method for providing information mapped between a plurality of inputs and electronic device for supporting the same
CN111694834A (zh) 图数据的入库方法、装置、设备及可读存储介质
US11487377B2 (en) Electronic device acquiring user input when in submerged state by using pressure sensor, and method for controlling electronic device
KR20200014094A (ko) 팩토리 데이터 리셋 기능에 의해 제거된 어플리케이션을 복원하는 장치 및 방법
KR102368847B1 (ko) 객체에 대응하는 콘텐트를 출력하기 위한 방법 및 그 전자 장치
US11501069B2 (en) Electronic device for inputting characters and method of operation of same
CN113742366B (zh) 数据处理方法、装置、计算机设备及存储介质
CN111949680A (zh) 数据处理方法、装置、计算机设备及存储介质
KR20190132875A (ko) 계정 그룹 기반으로 콘텐츠를 공유하는 방법 및 이를 제공하는 전자 장치
US10185724B2 (en) Method for sorting media content and electronic device implementing same
KR20200034354A (ko) 멀티미디어 콘텐트를 캡쳐하는 전자 장치 및 방법
US11645387B2 (en) Electronic device for classifying malicious code and operation method thereof
US20200344196A1 (en) Method for controlling notification and electronic device therefor
CN114298123A (zh) 聚类处理方法、装置、电子设备及可读存储介质
KR20200072727A (ko) 웹 콘텐츠를 ar모드에서 표시하는 전자 장치 및 방법
KR20200068391A (ko) 캐릭터를 포함하는 동영상을 생성하기 위한 전자 장치 및 그에 관한 방법
US20210026807A1 (en) Method for managing data associated with application and electronic device therefor
KR102443699B1 (ko) Kvssd 내 데이터 분석 장치 및 방법
CN113361376B (zh) 获取视频封面的方法、装置、计算机设备及可读存储介质
CN111522798B (zh) 数据同步方法、装置、设备及可读存储介质
KR102567368B1 (ko) 사용 이력을 표시하는 방법 및 이를 수행하는 전자 장치
WO2019206302A1 (zh) 一种获取数据库类型的方法及装置

Legal Events

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