KR20190021773A - 전자 장치 및 그의 데이터 운용 방법 - Google Patents

전자 장치 및 그의 데이터 운용 방법 Download PDF

Info

Publication number
KR20190021773A
KR20190021773A KR1020170106959A KR20170106959A KR20190021773A KR 20190021773 A KR20190021773 A KR 20190021773A KR 1020170106959 A KR1020170106959 A KR 1020170106959A KR 20170106959 A KR20170106959 A KR 20170106959A KR 20190021773 A KR20190021773 A KR 20190021773A
Authority
KR
South Korea
Prior art keywords
data
file
validity
database
electronic device
Prior art date
Application number
KR1020170106959A
Other languages
English (en)
Other versions
KR102405593B1 (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 KR1020170106959A priority Critical patent/KR102405593B1/ko
Priority to PCT/KR2018/006006 priority patent/WO2019039706A1/ko
Priority to US16/640,475 priority patent/US11379458B2/en
Publication of KR20190021773A publication Critical patent/KR20190021773A/ko
Application granted granted Critical
Publication of KR102405593B1 publication Critical patent/KR102405593B1/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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 다양한 실시 예에 따른 전자 장치는, 데이터베이스 및 상기 데이터베이스를 변경하기 위한 적어도 하나의 변경 데이터를 포함하는 파일을 저장하는 메모리; 및 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 데이터베이스의 사용을 종료하는 경우, 상기 파일의 헤더(header)에 포함된, 상기 적어도 하나의 변경 데이터의 유효성을 판단하기 위한 제1 유효성 데이터를 제외한 적어도 하나의 데이터를 초기화하고, 상기 데이터베이스의 사용이 종료된 후 상기 데이터베이스의 사용을 개시하는 경우, 상기 파일의 헤더에 포함된 제1 유효성 데이터를 변경할 수 있다. 그 외에 다양한 실시 예들이 가능하다.

Description

전자 장치 및 그의 데이터 운용 방법{ELECTRONIC DEVICE AND METHOD FOR OPERATING DATA OF THE SAME}
본 발명의 다양한 실시 예들은 전자 장치 및 그의 데이터 운용 방법에 관한 것이다.
최근 기술의 발달과 함께, PDA(personal digital assistant), 전자수첩, 스마트 폰(smart phone), 태블릿 PC(personal computer) 등의 다양한 전자 장치들이 출시되고 있고, 사용자에게 다양한 기능을 제공할 수 있는 어플리케이션들이 개발되고 있다.
최근에는 전자 장치에서 실행되는 어플리케이션과 관련된 데이터들을 관리 및 운용하기 위한 다양한 기술들이 개발되고 있다. 예를 들면, 어플리케이션과 관련된 데이터들이 포함된 데이터베이스(data base, DB)를 적어도 하나의 파일로 구성하여 전자 장치에서 관리하는 데이터베이스 관리 시스템이 개발되고 있다. 한편, 전자 장치에서 어플리케이션이 제대로 실행되기 위해서는, 데이터베이스에 포함된 데이터를 보호하고, 데이터베이스에 항상 정상인 데이터를 유지하는 데이터 무결성(data integrity)이 요구되며, 데이터베이스에 대한 트랜잭션(transaction)의 원자성(atomicity)을 보장할 필요가 있다. 여기서, 원자성이란, 하나의 트랜잭션과 관련된 모든 연산들의 결과가 데이터베이스에 모두 반영되거나 전혀 반영되지 않는 것을 의미한다.
데이터베이스 관리 시스템들은 데이터베이스에 대한 트랜잭션의 원자성을 보장하기 위해서 다양한 방법들을 사용할 수 있다. 예를 들면, 데이터베이스 관리 시스템 중 하나인 SQLite는 다양한 방법들 중에서 WAL(write-ahead logging) 방식을 사용함으로써 트랜잭션의 원자성을 보장할 수 있다. 여기서, WAL 방식이란, 트랜잭션에 따라 데이터베이스에 데이터를 저장하거나, 데이터베이스에 저장된 데이터를 삭제 및/또는 변경하기 전에 별도의 파일을 생성하고, 트랜잭션의 연산 처리 결과들을 별도의 파일에 먼저 저장한 후, 일정한 조건을 만족하는 경우 별도의 파일에 저장된 연산 처리 결과들을 데이터베이스에 반영하여 데이터베이스에 데이터를 저장하거나, 데이터베이스에 저장된 데이터를 삭제 및/또는 변경하는 방식을 의미하며, 이때 트랜잭션과 관련된 연산 처리 결과들이 저장되는 별도의 파일을 WAL 파일이라고 할 수 있다. WAL 방식을 사용하는 경우, 트랜잭션의 연산 처리 결과들이 WAL 파일에 저장되는 도중에 오류가 발생하는 경우에도 데이터베이스는 여전히 정상인 데이터들을 유지할 수 있어 데이터 무결성을 확보할 수 있다. 여기서, WAL 파일에 저장된 연산 처리 결과들을 데이터베이스에 반영하는 동작을 체크포인트(checkpoint)라고 할 수 있다.
한편, 일반적으로 WAL 방식은 데이터베이스의 사용을 종료하는 경우, WAL 파일을 삭제하거나, WAL 파일의 크기를 0으로 변경시키는 동작(truncate)을 수행할 수 있는데, 이 경우 파일 시스템의 메타 데이터가 변경되고, 파일 시스템의 데이터 영역에서 WAL 파일이 삭제된 영역이 정리될 수 있다. 그러나 파일 시스템의 메타 데이터를 변경하고, WAL 파일이 삭제된 영역을 정리하는 동작을 반복하게 되면, 파일 시스템의 단편화를 초래할 수 있고, 저장 장치에 대한 수많은 디스크 I/O가 발생하게 되어 저장 장치의 수명이 저하될 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는, 데이터베이스 및 상기 데이터베이스를 변경하기 위한 적어도 하나의 변경 데이터를 포함하는 파일을 저장하는 메모리; 및 상기 메모리와 전기적으로 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 데이터베이스의 사용을 종료하는 경우, 상기 파일의 헤더(header)에 포함된, 상기 적어도 하나의 변경 데이터의 유효성을 판단하기 위한 제1 유효성 데이터를 제외한 적어도 하나의 데이터를 초기화하고, 상기 데이터베이스의 사용이 종료된 후 상기 데이터베이스의 사용을 개시하는 경우, 상기 파일의 헤더에 포함된 제1 유효성 데이터를 변경할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법은, 데이터베이스의 사용을 종료하는 경우, 상기 데이터베이스를 변경하기 위한 적어도 하나의 변경 데이터를 포함하는 파일의 헤더(header)에 포함된, 상기 적어도 하나의 변경 데이터의 유효성을 판단하기 위한 제1 유효성 데이터를 제외한 적어도 하나의 데이터를 초기화하는 동작; 및 상기 데이터베이스의 사용이 종료된 후 상기 데이터베이스의 사용을 개시하는 경우, 상기 파일의 헤더에 포함된 제1 유효성 데이터를 변경하는 동작을 포함할 수 있다.
본 발명의 다양한 실시 예에 따르면, 데이터베이스의 사용을 종료하는 경우, WAL 파일을 삭제하거나 WAL 파일의 크기를 0으로 변경시키지 않고, WAL 파일 헤더의 적어도 일부분을 초기화함으로써 WAL 파일을 재사용할 수 있고, WAL 파일의 재사용을 통해 파일 시스템의 단편화 및 저장 장치의 수명 저하를 방지할 수 있다.
본 발명의 다양한 실시 예에 따르면, WAL 파일을 재사용함에 있어서, WAL 파일의 헤더가 초기화되기 이전에 저장된 프레임과 WAL 파일의 헤더가 초기화된 이후에 저장된 프레임을 구분함으로써, WAL 파일에 저장된 적어도 하나의 프레임에 대한 유효성 판단을 보다 정확하고 빠르게 수행할 수 있다.
도 1은 본 발명의 다양한 실시 예들에 따른 네트워크 환경 내의 전자 장치의 블록도이다
도 2는 본 발명의 다양한 실시 예에 따른 프로그램의 블록도이다.
도 3은 본 발명의 다양한 실시 예에 따른 프로그램 및 비휘발성 메모리에 관한 블록도이다.
도 4a는 본 발명의 다양한 실시 예에 따른 WAL 파일의 구성에 관한 예시를 나타낸 도면이다.
도 4b는 본 발명의 다양한 실시 예에 따른 WAL 파일의 헤더의 구성에 관한 예시를 나타낸 도면이다.
도 4c는 본 발명의 다양한 실시 예에 따른 WAL 파일의 프레임의 구성에 관한 예시를 나타낸 도면이다.
도 5는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 관한 흐름도이다.
도 6은 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 따라 초기화된 WAL 파일의 헤더에 관한 예시를 나타낸 도면이다.
도 7은 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 관한 흐름도이다.
도 8은 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 관한 흐름도이다.
도 9는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 따라 변경되는 WAL 파일의 헤더에 포함된 유효성 데이터에 관한 예시를 나타낸 도면이다.
도 10a는 본 발명의 다양한 실시 예에 따른 WAL 파일의 구성에 관한 예시를 나타낸 도면이다.
도 10b는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터 운용 방법에 따라 변경되는 WAL 파일의 프레임에 관한 예시를 나타낸 도면이다.
도 11a는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터베이스 및 WAL 파일과 관련된 동작의 예시를 나타낸 도면이다.
도 11b는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터베이스 및 WAL 파일과 관련된 다른 동작의 예시를 나타낸 도면이다.
도 1은, 다양한 실시 예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시 예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시 예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 및 안테나 모듈(197)을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나 다른 구성 요소가 추가될 수 있다. 어떤 실시 예에서는, 예를 들면, 표시 장치(160)(예: 디스플레이)에 임베디드된 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)의 경우와 같이, 일부의 구성요소들이 통합되어 구현될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 구동하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다.
프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하여 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 운영되고, 추가적으로 또는 대체적으로, 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화된 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 여기서, 보조 프로세서(123)는 메인 프로세서(121)와 별개로 또는 임베디드되어 운영될 수 있다.
이런 경우, 보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 수행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부 구성 요소로서 구현될 수 있다. 메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 저장되는 소프트웨어로서, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신하기 위한 장치로서, 예를 들면, 마이크, 마우스, 또는 키보드를 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력하기 위한 장치로서, 예를 들면, 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용되는 스피커와 전화 수신 전용으로 사용되는 리시버를 포함할 수 있다. 일 실시 예에 따르면, 리시버는 스피커와 일체 또는 별도로 형성될 수 있다.
표시 장치(160)는 전자 장치(101)의 사용자에게 정보를 시각적으로 제공하기 위한 장치로서, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시 예에 따르면, 표시 장치(160)는 터치 회로(touch circuitry) 또는 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서를 포함할 수 있다.
오디오 모듈(170)은 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 일 실시 예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 유선 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)(예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 내부의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 외부 전자 장치(예: 전자 장치(102))와 유선 또는 무선으로 연결할 수 있는 지정된 프로토콜을 지원할 수 있다. 일 실시 예에 따르면, 인터페이스(177)는 HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102))를 물리적으로 연결시킬 수 있는 커넥터, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시 예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈, 이미지 센서, 이미지 시그널 프로세서, 또는 플래시를 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리하기 위한 모듈로서, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구성될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급하기 위한 장치로서, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 유선 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되는, 유선 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함하고, 그 중 해당하는 통신 모듈을 이용하여 제 1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 상술한 여러 종류의 통신 모듈(190)은 하나의 칩으로 구현되거나 또는 각각 별도의 칩으로 구현될 수 있다.
일 실시 예에 따르면, 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 사용자 정보를 이용하여 통신 네트워크 내에서 전자 장치(101)를 구별 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부로 송신하거나 외부로부터 수신하기 위한 하나 이상의 안테나들을 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(190)(예: 무선 통신 모듈(192))은 통신 방식에 적합한 안테나를 통하여 신호를 외부 전자 장치로 송신하거나, 외부 전자 장치로부터 수신할 수 있다.
상기 구성요소들 중 일부 구성요소들은 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input/output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되어 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시 예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시 예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 외부 전자 장치에서 실행될 수 있다. 일 실시 예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 외부 전자 장치에게 요청할 수 있다. 상기 요청을 수신한 외부 전자 장치는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치 중 적어도 하나를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
본 문서의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램(140))로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(101))를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서(120))에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일 실시 예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
도 2는 다양한 실시 예에 따른 프로그램(140)의 블록도(200)이다. 일 실시 예에 따르면, 프로그램(140)은 전자 장치(101)의 하나 이상의 리소스들을 제어하기 위한 운영 체제(142), 미들 웨어(144), 또는 상기 운영 체제(142) 상에서 실행 가능한 어플리케이션(146)을 포함할 수 있다. 운영 체제(142)는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램(140) 중 적어도 일부 프로그램은, 예를 들면, 제조 시에 전자 장치(101)에 프리로드되거나, 또는 사용자의 사용 환경에서 외부 전자 장치(예: 전자 장치(102 또는 104), 또는 서버(108))로부터 다운로드되거나 갱신 될 수 있다.
운영 체제(142)는 전자 장치(101)의 시스템 리소스 (예: 프로세스, 메모리, 또는 전원)를 제어(예: 할당 또는 회수)할 수 있다. 운영 체제(142)는, 추가적으로 또는 대체적으로, 전자 장치(101)의 다른 하드웨어 디바이스, 예를 들면, 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 구동하기 위한 하나 이상의 드라이버 프로그램들을 포함할 수 있다.
미들 웨어(144)는 어플리케이션(146)이 전자 장치(101)의 하나 이상의 리소스들이 제공하는 기능 또는 정보를 사용할 수 있도록 다양한 기능들을 어플리케이션(146)으로 제공할 수 있다. 미들 웨어(144)는, 예를 들면, 어플리케이션 매니저(201), 윈도우 매니저(203), 멀티미디어 매니저(205), 리소스 매니저(207), 파워 매니저(209), 데이터베이스 매니저(211), 패키지 매니저(213), 커넥티비티 매니저(215), 노티피케이션 매니저(217), 로케이션 매니저(219), 그래픽 매니저(221), 시큐리티 매니저(223), 통화 매니저(225), 또는 음성 인식 매니저(227)를 포함할 수 있다. 어플리케이션 매니저(201)는, 예를 들면, 어플리케이션(146)의 생명 주기를 관리할 수 있다. 윈도우 매니저(203)는, 예를 들면, 화면에서 사용되는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저(205)는, 예를 들면, 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱을 이용하여 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(207)는, 예를 들면, 어플리케이션(146)의 소스 코드 또는 메모리의 공간을 관리할 수 있다. 파워 매니저(209)는, 예를 들면, 배터리의 용량, 온도 또는 전원을 관리하고, 이 중 해당 정보를 이용하여 전자 장치(101)의 동작에 필요한 전력 정보를 결정 또는 제공할 수 있다. 일 실시 예에 따르면, 파워 매니저(209)는 바이오스(BIOS: basic input/output system)와 연동할 수 있다. 데이터베이스 매니저(211)는, 예를 들면, 어플리케이션(146)에서 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(213)는, 예를 들면, 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다. 커넥티비티 매니저(215)는, 예를 들면, 전자 장치(101)와 외부 전자 장치 간의 무선 또는 유선 연결을 관리할 수 있다. 노티피케이션 매니저(217)는, 예를 들면, 발생된 이벤트(예: 통화, 메시지, 또는 알람)를 사용자에게 알리기 위한 기능을 제공할 수 있다. 로케이션 매니저(219)는, 예를 들면, 전자 장치(101)의 위치 정보를 관리할 수 있다. 그래픽 매니저(221)는, 예를 들면, 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 시큐리티 매니저(223)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 통화(telephony) 매니저(225)는, 예를 들면, 전자 장치(101)의 음성 통화 또는 영상 통화 기능을 관리할 수 있다. 음성 인식 매니저(227)는, 예를 들면, 사용자의 음성 데이터를 서버(108)로 전송하고, 해당 음성 데이터에 기반하여 전자 장치(101)에서 수행될 기능에 대응하는 명령어(command) 또는 해당 음성 데이터에 기반하여 변환된 문자 데이터를 수신할 수 있다. 일 실시 예에 따르면, 미들 웨어(244)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. 일 실시 예에 따르면, 미들 웨어(144)의 적어도 일부는 운영 체제(142)의 일부로 포함되거나, 또는 운영 체제(142)와는 별도의 소프트웨어로 구현될 수 있다.
어플리케이션(146)은, 예를 들면, 홈(251), 다이얼러(253), SMS/MMS(255), IM(instant message)(257), 브라우저(259), 카메라(261), 알람(263), 컨택트(265), 음성 인식(267), 이메일(269), 달력(271), 미디어 플레이어(273), 앨범(275), 와치(277), 헬스(279)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보(281)(예: 기압, 습도, 또는 온도 정보) 어플리케이션을 포함할 수 있다. 일 실시 예에 따르면, 어플리케이션(146)은 전자 장치(101)와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션(미도시)을 더 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치로 지정된 정보 (예: 통화, 메시지, 또는 알람)를 전달하기 위한 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리 어플리케이션을 포함할 수 있다. 노티피케이션 릴레이 어플리케이션은, 예를 들면, 전자 장치(101)의 다른 어플리케이션(예: 이메일 어플리케이션(269))에서 발생된 이벤트(예: 메일 수신)에 대응하는 알림 정보를 외부 전자 장치로 전달하거나, 또는 외부 전자 장치로부터 알림 정보를 수신하여 전자 장치(101)의 사용자에게 제공할 수 있다. 장치 관리 어플리케이션은, 예를 들면, 전자 장치(101)와 통신하는 외부 전자 장치 또는 그 일부 구성 요소(예: 표시 장치(160) 또는 카메라 모듈(180))의 전원(예: 턴-온 또는 턴-오프) 또는 기능(예: 표시 장치(160) 또는 카메라 모듈(180)의 밝기, 해상도, 또는 포커스)을 제어할 수 있다. 장치 관리 어플리케이션은, 추가적으로 또는 대체적으로, 외부 전자 장치에서 동작하는 어플리케이션의 설치, 삭제, 또는 갱신을 지원할 수 있다.
도 3은 본 발명의 다양한 실시 예에 따른 프로그램(140) 및 비휘발성 메모리(134)에 관한 블록도(300)이다.
도 3을 참조하면, 비휘발성 메모리(134)는, 예를 들면, 메타 데이터(metadata)(330), WAL 파일(340) 및/또는 데이터베이스(350)를 저장할 수 있다.
메타 데이터(330)는, 예를 들면, 파일 시스템(320)에 의해 관리되는 데이터에 관한 구조화된 데이터로서 다른 데이터를 설명해 주는 데이터를 의미할 수 있고, 데이터 크기, 데이터 명칭, 데이터의 저장 위치 등과 같은 다른 데이터에 대한 정보를 포함하는 데이터를 의미할 수 있다.
WAL 파일(340)은 데이터베이스 매니저(211) 및 WAL 관리 모듈(310)에 의해 관리되는 파일로서, 데이터베이스(350)를 변경하기 위한 적어도 하나의 데이터를 포함하는 파일을 의미할 수 있고, 예를 들면, 데이터베이스(350)에 데이터를 변경하기 전, 데이터 변경 로그(log)를 기록하는 파일을 의미할 수 있다. WAL 파일(340)은 데이터베이스 저널 파일(journal file), 저널 데이터(journal data) 등의 용어로 명명될 수도 있다.
데이터베이스(350)는 데이터베이스 매니저(211)에 의해 관리되는 파일로서, 예를 들면, 어플리케이션(146)과 관련된 데이터들을 포함하는 파일을 의미할 수 있다.
다양한 실시 예에 따르면, 프로그램(140)은 운영 체제(142), 미들웨어(144) 및/또는 어플리케이션(146)을 포함할 수 있다.
운영 체제(142)는, 예를 들면, 메모리(130) 및 메모리(130)에 저장되는 데이터를 관리할 수 있는 파일 시스템(320)을 포함할 수 있다.
미들웨어(144)에 포함된 데이터베이스 매니저(211)는, 예를 들면, WAL 관리 모듈(310)을 포함할 수 있다.
데이터베이스 매니저(211)는 데이터베이스(350)를 여는(open) 동작, 데이터베이스(350)를 닫는(close) 동작 및/또는 데이터베이스(350)에 데이터를 기록하는(write) 동작을 수행할 수 있다. 데이터베이스 매니저(211)는, 예를 들면, API(application programming interface)를 통해 어플리케이션(146)으로부터 명령을 수신할 수 있다. 여기서, API는, 예를 들면, 어플리케이션(146)이 미들웨어(144)에서 제공되는 기능을 제어할 수 있도록 제공되는 인터페이스를 의미할 수 있으며, 예를 들면, 데이터베이스 제어를 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
WAL 관리 모듈(310)은, 예를 들면, WAL 파일(340) 및/또는 데이터베이스(350)와 관련된 동작을 수행할 수 있다. 예를 들면, WAL 관리 모듈(310)은, WAL 파일(340)을 생성하는 동작, WAL 파일(340)을 삭제하는 동작, WAL 파일(340)을 초기화하는 동작, WAL 파일(340)에 포함된 구성들의 값을 변경하는 동작, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)에 추가하는 동작, 데이터베이스(350)를 여는(open) 동작, 데이터베이스(350)를 닫는(close) 동작 및/또는 데이터베이스(350)에 데이터를 기록하는(write) 동작을 수행할 수 있다.
WAL 관리 모듈(310)은, 예를 들면, WAL 파일(340)의 프레임 개수가 기설정된 개수(예: 1000개)에 해당하는 경우, 체크포인트 동작을 수행할 수 있다. WAL 관리 모듈(310)은, 예를 들면, 데이터베이스(350)와 관련된 어플리케이션(146)에서 체크포인트 메시지가 발생하는 경우, 체크포인트 동작을 수행할 수도 있다.
한편, 데이터베이스 매니저(211)는 다양한 데이터베이스 관리 시스템을 포함할 수 있으며, SQLite는 다양한 데이터베이스 관리 시스템 중 어느 하나를 의미할 수 있다.
도 4a는 본 발명의 다양한 실시 예에 따른 WAL 파일(340)의 구성에 관한 예시를 나타낸 도면이고, 도 4b는 본 발명의 다양한 실시 예에 따른 WAL 파일(340)의 헤더(410)의 구성에 관한 예시를 나타낸 도면이고, 도 4c는 본 발명의 다양한 실시 예에 따른 WAL 파일(340)의 프레임의 구성에 관한 예시를 나타낸 도면이다.
도 4a를 참조하면, WAL 파일(340)은, 예를 들면, 헤더(header)(410) 및 데이터베이스(350)를 변경하기 위한 데이터가 포함된 적어도 하나의 프레임(frame)(420, 430, 440)을 포함할 수 있다. 일 실시 예에 따르면, WAL 파일(340)에 포함된 각 프레임을 제1 프레임(420), 제2 프레임(430) 및 제3 프레임(440)으로 명명할 수 있다. 일 실시 예에서, 데이터베이스(350)가 일정한 크기의 데이터 집합으로 구분되어 관리되는 경우, 데이터베이스(350)의 데이터 집합 각각을 페이지(page)라고 할 수 있으며, 전자 장치(101)는 데이터베이스(350)의 각 페이지에 페이지 번호를 할당하여 관리할 수 있다. 한편, 프레임(frame)은 데이터베이스(350)에 페이지를 추가하거나, 데이터베이스(350)에 포함된 적어도 하나의 페이지 중 어느 하나를 변경하기 위한 데이터를 포함하는 WAL 파일(340)의 구성을 의미할 수 있으며, 프레임은 데이터베이스(350)를 변경하기 위한 변경 데이터로 명명될 수도 있다.
도 4b를 참조하면, 헤더(410)는, 예를 들면, 매직 넘버(magic number)(411), 파일 유형(file format)(412), 페이지 사이즈(database page size)(413), 체크포인트(checkpoint)(414), Salt-1(415), Salt-2(416) 및 체크 섬(checksum)(417)을 포함할 수 있다.
매직 넘버(411)는, 예를 들면, WAL 파일(340)을 나타내는 고유 값을 포함하는 헤더(410)의 구성을 의미할 수 있다. 예를 들면, 매직 넘버(411)는 WAL 파일(340)을 나타내는 고유 값으로 16진수 값인 0x377f0682 또는 0x377f0683을 포함할 수 있다.
파일 유형(412)은, 예를 들면, WAL 파일(340)의 버전(version)을 나타내는 데이터를 포함하는 헤더(410)의 구성을 의미할 수 있다.
페이지 사이즈(413)는, 예를 들면, 데이터베이스(350)에 포함된 페이지의 크기에 대한 데이터를 포함하는 헤더(410)의 구성을 의미할 수 있다.
체크포인트(414)는, 예를 들면, 데이터베이스(350)의 사용이 개시된 후 종료되기 전까지 WAL 파일(340)에 기초하여 데이터베이스(350)를 변경한 횟수, 즉 체크포인트 동작이 수행된 횟수에 대한 데이터를 포함하는 헤더(410)의 구성을 의미할 수 있다. 예를 들면, 전자 장치(101)는, 데이터베이스(350)의 사용이 개시된 후 종료되기 전까지 체크포인트 동작에 따라 데이터베이스(350)를 변경할 때마다 체크포인트(414)에 포함된 값을 0부터 1씩 증가할 수 있다. 한편, 일 실시 예에 따르면, 체크포인트 동작은 커밋(commit) 동작으로 명명될 수도 있다.
Salt-1(415) 및 Salt-2(416)는, 예를 들면, WAL 파일(340)에 포함된 적어도 하나의 프레임(420, 430, 440)에 대한 유효성 판단의 기준이 되는 유효성 데이터를 포함하는 헤더(410)의 구성을 의미할 수 있다. 이때, Salt-1(415) 및 Salt-2(416)는 서로 다른 데이터를 포함할 수 있다. Salt-1(415) 및 Salt-2(416)에 포함된 유효성 데이터는, 예를 들면, 체크포인트 동작이 수행될 때마다 기 설정된 기준에 따라 변경될 수 있다. 예를 들면, 전자 장치(101)는, 데이터베이스의 사용이 개시되는 경우, 서로 다른 두 개의 임의의 값을 산출할 수 있고, Salt-1(415) 및 Salt-2(416)의 유효성 데이터 값을 산출된 서로 다른 두 개의 임의의 값으로 각각 변경할 수 있다. 한편, 전자 장치(101)는, 예를 들면, 데이터베이스의 사용이 개시되는 경우, Salt-1(415)(및/또는 Salt-2(416))에 포함된 유효성 데이터 값에 1을 더하거나 빼는 연산을 수행함으로써 Salt-1(415)(및/또는 Salt-2(416))의 유효성 데이터를 변경할 수도 있다. 한편, 헤더(410)는, 예를 들면, Salt-1(415) 및 Salt-2(416) 중 어느 하나만 헤더(410)의 구성으로 포함할 수도 있다.
체크 섬(417)은, 예를 들면, 헤더(410)의 오류 여부를 판단하기 위한 데이터를 포함하는 헤더(410)의 구성을 의미할 수 있다. 예를 들면, 체크 섬(417)은, 체크 섬(417)을 제외한 헤더(410)의 각 구성에 포함된 값을 기 설정된 기준에 따라 연산한 결과 값을 포함할 수 있으며, 체크 섬(417)을 제외한 헤더(410)의 각 구성에 포함된 값을 모두 합한 결과 값을 포함할 수도 있다.
도 4c를 참조하면, 제1 프레임(420)는, 예를 들면, 페이지 번호(page number)(421), 커밋(commit)(412), Salt-1(423), Salt-2(424), 체크 섬(checksum)(425) 및 페이지 데이터(page data)(426)를 포함할 수 있다. 한편, 제1 프레임(420)의 구성 중 페이지 데이터(426)을 제외한, 페이지 번호(421), 커밋(412), Salt-1(423), Salt-2(424) 및 체크 섬(425)은 제1 프레임(420)의 헤더를 의미할 수 있다. 한편, WAL 파일(340)에 포함된 적어도 하나의 프레임은 제1 프레임(420)의 구성의 전부 또는 일부를 포함할 수 있다.
페이지 번호(421)는, 예를 들면, 제1 프레임(420)에 의해 변경되는 데이터베이스(350)의 페이지의 페이지 번호에 대한 데이터를 포함하는 제1 프레임(420)의 구성을 의미할 수 있다.
커밋(422)은, 예를 들면, 제1 프레임(420)에 대응하는 데이터베이스(350)의 페이지를 변경하기 위한 트랜잭션의 연산 처리 결과가 해당 제1 프레임(420)에 모두 저장되었는지 여부를 나타내는 데이터를 포함하는 제1 프레임(420)의 구성을 의미할 수 있다. 예를 들면, 제1 프레임(420)에 대응하는 데이터베이스(350)의 페이지를 변경하기 위한 트랜잭션의 연산 처리 결과가 제1 프레임(420)에 모두 저장된 경우, 전자 장치(101)는 데이터베이스(350)의 페이지의 크기에 해당하는 값을 커밋(412)에 포함시킬 수 있고, 제1 프레임(420)에 대응하는 데이터베이스(350)의 페이지를 변경하기 위한 트랜잭션의 연산 처리 결과가 제1 프레임(420)에 모두 저장되지 않거나 일부만 저장된 경우, 커밋(412)에 0을 데이터 값으로 포함시킬 수 있다.
Salt-1(423) 및 Salt-2(424)는, 예를 들면, 제1 프레임(420)에 대한 유효성 판단의 기준이 되는 유효성 데이터를 포함하는 제1 프레임(420)의 구성을 의미할 수 있고, 헤더(410)에 포함된 Salt-1(415) 및 Salt-2(416)에 각각 대응할 수 있다. Salt-1(423) 및 Salt-2(424)는, 예를 들면, WAL 파일(340)에 제1 프레임(420)이 추가되는 시점에 헤더(410)의 Salt-1(415) 및 Salt-2(416)에 포함된 데이터 값과 동일한 데이터 값을 각각 포함할 수 있다. 한편, 제1 프레임(420)은, 예를 들면, Salt-1(423) 및 Salt-2(424) 중 어느 하나만 포함할 수도 있다.
체크 섬(425)은, 예를 들면, 제1 프레임(420)의 오류 여부를 판단하기 위한 데이터를 포함하는 제1 프레임(420)의 구성을 의미할 수 있다. 예를 들면, 체크 섬(425)은, WAL 파일(340)의 헤더(410) 및 체크 섬(425)을 제외한 제1 프레임(420)의 헤더의 각 구성에 포함된 값을 기 설정된 기준에 따라 연산한 결과 값을 포함할 수 있으며, WAL 파일(340)의 헤더(410) 및 체크 섬(425)을 제외한 제1 프레임(420)의 헤더의 각 구성에 포함된 값을 모두 합한 결과 값을 포함할 수도 있다. 한편, WAL 파일(340)의 제2 프레임(430)의 체크섬의 경우, 헤더(410) 및 제1 프레임(420)에 포함된 모든 구성과, 제2 프레임(430)의 체크섬을 제외한 제2 프레임(430)의 헤더의 각 구성에 포함된 값을 기 설정된 기준에 따라 연산한 결과 값을 포함할 수 있다.
페이지 데이터(426)는, 예를 들면, 데이터베이스(350)의 페이지를 변경하기 위한 데이터를 포함하는 제1 프레임(420)의 구성을 의미할 수 있다. 이때, 페이지 데이터(426)의 크기는 데이터베이스(350)에 포함된 페이지의 크기와 동일할 수 있다. 전자 장치(101)는, 예를 들면, 페이지 데이터(426)에 트랜잭션에 대한 연산 처리 결과를 데이터베이스(350)의 페이지를 변경하기 위한 데이터로 포함시킬 수 있다.
도 5는 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 관한 흐름도이다.
도 5를 참조하면, 전자 장치(101)(예: 프로세서(120))는 501 동작에서, 데이터베이스(350)의 사용을 종료하는 명령을 수신할 수 있다. 전자 장치(101)는, 예를 들면, 사용자가 어플리케이션(146)과 관련된 기능(예: 데이터 입력, 변경, 삭제 등)을 종료하는 입력을 수신하는 경우, 데이터베이스(350)의 사용을 종료하는 명령을 수신한 것으로 판단할 수 있다. 예를 들면, 사용자가 컨택트 어플리케이션(265)를 이용하여 연락처의 추가를 완료한 경우, 전자 장치(101)는 데이터베이스(350)의 사용을 종료하는 명령을 수신한 것으로 판단할 수 있다. 한편, 예를 들면, 전자 장치(101)가 데이터베이스(350)의 사용을 종료하는 명령을 수신하는 경우, 전자 장치(101)의 데이터베이스 매니저(211)(및/또는 WAL 관리 모듈(310))는 API를 통해 어플리케이션(144)으로부터 데이터베이스(350)를 닫는(close) 명령을 수신할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 503 동작에서, 체크포인트 동작을 수행할 수 있다. 이때, 전자 장치(101)는, 예를 들면, WAL 파일(340)에 포함된 적어도 하나의 프레임의 유효성을 판단할 수 있고, 유효한 프레임으로 판단된 프레임에 기초하여 데이터베이스를 변경할 수 있다. 전자 장치(101)는, 예를 들면, WAL 파일(340)의 헤더(310)에 포함된 Salt-1(315) 및/또는 Salt-2(316)의 데이터 값과 WAL 파일(340)의 프레임(320)에 포함된 Salt-1(323) 및/또는 Salt-2(324)의 데이터 값을 각각 비교할 수 있고, 비교 결과에 기초하여 프레임(320)의 유효성을 판단할 수 있다. 예를 들면, Salt-1(315) 및/또는 Salt-2(316)의 데이터 값과 Salt-1(323) 및 Salt-2(324)의 데이터 값이 각각 일치하는 경우, 전자 장치(101)는 프레임(320)을 유효한 프레임으로 판단할 수 있고, 프레임(320)에 포함된 페이지 데이터(326)에 기초하여 데이터베이스를 변경할 수 있다. 한편, 예를 들면, Salt-1(315) 및 Salt-2(316)의 데이터 값과 Salt-1(323) 및 Salt-2(324)의 데이터 값이 각각 일치하지 않는 경우, 전자 장치(101)는 프레임(320)을 유효하지 않은 프레임으로 판단할 수 있다. 한편, 전자 장치(101)는, 예를 들면, 유효한 프레임이 없는 경우, 체크포인트 동작을 생략할 수도 있다.
다양한 실시 예에 따르면, 전자 장치(101)(데이터베이스 매니저(211) 및/또는 WAL 관리 모듈(310))는 503 동작 이후, "WAL 파일 유지 정책"이 적용 중인지 판단할 수도 있다(미도시). 전자 장치가 "WAL 파일 유지 정책"이 적용 중인 경우 505 동작으로 진행하고, "WAL 파일 유지 정책"이 적용 중이지 않은 경우, WAL 파일을 삭제한 뒤 507 동작으로 진행할 수도 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 505 동작에서, WAL 파일(340)을 초기화할 수 있다. 전자 장치(101)는, 예를 들면, WAL 파일(340)의 헤더(410)에 포함된 구성 중 적어도 하나의 데이터 값을 기설정된 값으로 변경함으로써 WAL 파일(340)을 초기화(무효화)할 수 있다. 예를 들면, 전자 장치(101)는, 헤더(410)의 매직 넘버(411)를 포함하는 적어도 하나의 구성의 데이터 값을 0x00000000으로 변경함으로써 WAL 파일(340)을 초기화할 수 있다. 이때, 전자 장치(101)는, 예를 들면, 헤더(410)의 구성 중 Salt-1(415) 및 Salt-2(416) 중 적어도 하나를 제외한 나머지 구성의 데이터 값을 변경함으로써 WAL 파일(340)을 초기화할 수 있다.
한편, 전자 장치(101)는, 예를 들면, 데이터베이스(350)의 사용을 종료하는 명령을 수신한 경우, WAL 파일(340)에 포함된 적어도 하나의 프레임 중 일부를 삭제할 수도 있다. 예를 들면, 전자 장치(101)는, WAL 파일(340)의 크기가 4MByte인 경우, WAL 파일(340)의 크기가 2MByte로 될 수 있도록 WAL 파일(340)에 포함된 적어도 하나의 프레임 중 일부를 삭제할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 507 동작에서, 데이터베이스(350)의 사용을 종료할 수 있다. 예를 들면, 전자 장치(101)의 WAL 관리 모듈(310)은 비휘발성 메모리(134)에 저장된 파일인 데이터베이스(350)를 닫는(close) 동작을 수행할 수 있다.
본 발명의 다양한 실시 예에 따르면, 데이터베이스의 사용이 종료된 경우에도 WAL 파일(340)을 삭제하거나, WAL 파일(340)의 사이즈를 0으로 변경하지 않고, WAL 파일(340)의 헤더(410)를 초기화함으로써 파일(340)을 재사용할 수 있고, 이를 통해 파일 시스템(320)에 대한 메타 데이터(330)를 변경하거나 WAL 파일(340)이 삭제된 영역을 정리하는 동작을 줄일 수 있어 시스템의 단편화 및 저장 장치의 수명 저하를 방지할 수 있다. 한편, 본 발명의 다양한 실시 예에 따르면, 전자 장치(101)는 사용자의 설정에 따라, WAL 파일(340)을 삭제하는 동작을 수행할지, 또는 WAL 파일(340)을 초기화하여 재사용할지 여부를 결정할 수도 있다.
도 6은 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 따라 초기화된 WAL 파일(340)의 헤더(410)에 관한 예시를 나타낸 도면이다.
도 6의 도면부호 601을 참조하면, 초기화되기 전의 헤더(410)의 각 구성에 서로 다른 데이터 값이 저장되어 있는 것을 확인할 수 있다.
도 6의 도면부호 602를 참조하면, 헤더(410)가 초기화된 후, 헤더(410)의 구성인 매직 넘버(411), 파일 유형(412), 페이지 사이즈(413) 및 체크포인트(414)의 데이터 값이 0x00000000으로 변경된 것을 확인할 수 있고, 이를 통해 WAL 파일(340)의 헤더(410)가 정상적으로 초기화된 것을 확인할 수 있다.
도 7은 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 관한 흐름도이다. 도 5에서 설명한 내용과 중복되는 내용에 대해서는 상세한 설명을 생략하도록 한다.
도 7을 참조하면, 전자 장치(101)는 701 동작에서, 데이터베이스(350)의 사용을 개시하는 명령(예: database open 명령)을 수신할 수 있다. 전자 장치(101)는, 예를 들면, 사용자가 어플리케이션(146)과 관련된 기능(예: 데이터 입력, 변경, 삭제 등)을 실행하는 입력을 수신하는 경우, 데이터베이스(350)의 사용을 개시하는 명령을 수신한 것으로 판단할 수 있다. 예를 들면, 사용자가 컨택트 어플리케이션(265)를 이용하여 연락처 목록을 표시하는 기능을 실행하는 경우, 전자 장치(101)는 데이터베이스(350)의 사용을 개시하는 명령을 수신한 것으로 판단할 수 있다. 한편, 예를 들면, 전자 장치(101)가 데이터베이스(350)의 사용을 개시하는 명령을 수신하는 경우, 전자 장치(101)의 데이터베이스 매니저(211) 및/또는 WAL 관리 모듈(310)은 API를 통해 어플리케이션(144)으로부터 데이터베이스(350)를 여는(open) 명령을 수신할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 703 동작에서, 데이터베이스(350)의 사용을 개시할 수 있다. 예를 들면, 전자 장치(101)의 데이터베이스 매니저(211) 및/또는 WAL 관리 모듈(310)은 비휘발성 메모리(134)에 저장된 파일인 데이터베이스(350)를 여는(open) 동작을 수행할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 705 동작에서, 트랜잭션을 수신할 수 있다. 예를 들면, 전자 장치(101)는 어플리케이션(144)에 대한 데이터의 추가, 변경 및/또는 삭제와 관련된 트랜잭션 명령을 수신할 수 있다. 한편, 전자 장치(101)의 데이터베이스 매니저(211) 및/또는 WAL 관리 모듈(310)은 API를 통해 어플리케이션(144)으로부터 데이터베이스(350)의 데이터를 변경하는 트랜잭션 명령(예: insert, delete, update)을 수신할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 707 동작에서, WAL 파일(340)이 초기화된 파일인지 여부를 판단할 수 있다. 예를 들면, 헤더(410)의 매직 넘버(411)를 포함하는 적어도 하나의 구성의 데이터 값이 0x00000000 인 경우, 전자 장치(101)는 초기화된 WAL 파일(340)인 것으로 판단할 수 있다. 한편, 헤더(410)의 매직 넘버(411)를 포함하는 적어도 하나의 구성의 데이터 값이 0x00000000이 아닌 경우, 전자 장치(101)는 초기화되지 않은 WAL 파일(340)인 것으로 판단할 수 있다. 본 발명에서는 설명의 편의상 데이터 값으로 0x00000000을 예를 들어 설명했으나, 이에 한정되는 것은 아니며 다른 데이터 값을 사용할 수도 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 709 동작에서, WAL 파일(340)이 초기화된 파일인 것으로 판단된 경우, WAL 파일 (340)에 포함된 데이터 중 초기화된 데이터를 복구할 수 있다. 전자 장치(101)는, 예를 들면, WAL 파일(340)의 헤더(410)에 포함된 구성 중 초기화된 구성의 데이터를 복구할 수 있다. 예를 들면, 헤더(410)의 매직 넘버(411)의 데이터 값이 0x00000000인 경우, 전자 장치(101)는 매직 넘버(411)의 데이터 값을 초기화 이전 데이터 값으로 변경할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 711 동작에서, WAL 파일(340)의 헤더(410)에 포함된 유효성 데이터를 변경할 수 있다. 전자 장치(101)는, 예를 들면, Salt-1(415)(및/또는 Salt-2(416))의 유효성 데이터 값에 1을 더하거나 빼는 연산을 수행함으로써 Salt-1(415)(및/또는 Salt-2(416))의 유효성 데이터를 변경할 수 있다. 한편, 전자 장치(101)는, 예를 들면, 헤더(410)의 Salt-1(415)(및/또는 Salt-2(416))의 유효성 데이터 값과 다른 임의의 값을 산출할 수 있고, Salt-1(415)(및/또는 Salt-2(416))의 유효성 데이터 값을 산출된 임의의 값으로 변경할 수도 있다.
상기 도 7에서는 701 동작 및 703 동작에서 전자 장치(101)가 데이터베이스(350)의 사용을 개시하는 명령을 수신하여 데이터베이스(350)의 사용을 개시한 이후, 데이터베이스를 변경하는 트랜잭션 명령(예: insert, delete, update)을 최초로 수신한 경우에 있어서 707 동작 내지 711 동작이 수행되는 것으로 설명하였으나, 본 발명은 이에 한정되는 것은 아니다. 다양한 실시 예에 따르면, 701 동작에서 전자 장치(101)가 데이터베이스(350)의 사용을 개시하는 명령을 수신한 경우, 데이터베이스를 변경하는 트랜잭션 명령(예: insert, delete, update)의 수신이 없는 경우에도 707 동작 내지 711 동작이 수행될 수 있다.
본 발명의 다양한 실시 예에 따르면, 데이터베이스의 변경과 관련된 기능이 종료된 경우에도 WAL 파일(340)을 삭제하거나, WAL 파일(340)의 사이즈를 0으로 변경하지 않고, WAL 파일(340)의 헤더(410)를 초기화함으로써 WAL 파일(340)을 재사용할 수 있고, 이를 통해 파일 시스템(320)에 대한 메타 데이터(330)를 변경하거나 WAL 파일(340)이 삭제된 영역을 정리하는 동작을 줄일 수 있어 시스템의 단편화 및 저장 장치의 수명 저하를 방지할 수 있다.
도 8은 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 관한 흐름도이다. 도 5 및 7에서 설명한 내용과 중복되는 내용에 대해서는 상세한 설명을 생략하도록 한다.
도 8을 참조하면, 전자 장치(101)(예: 프로세서(120))는 801 동작에서, 데이터베이스(350)의 사용이 개시된 상태에서 트랜잭션을 수신할 수 있다. 예를 들면, 전자 장치(101)는 데이터베이스(350)가 오픈(open)된 상태에서 어플리케이션(144)에 대한 데이터의 추가, 변경 및/또는 삭제와 관련된 트랜잭션을 수신할 수 있다. 한편, 전자 장치(101)의 데이터베이스 매니저(211) 및/또는 WAL 관리 모듈(310)은 API를 통해 어플리케이션(144)으로부터 데이터베이스(350)에 데이터를 변경하는 트랜잭션 명령(예: insert, delete, update)을 수신할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 803 동작에서, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)에 추가할 수 있다. 이때, 전자 장치(101)는, 예를 들면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)의 적어도 하나의 프레임(420, 430, 440)에 저장할 수 있다.
한편, 전자 장치(101)는, 예를 들면, 801 동작 이전에 WAL 파일(340)의 적어도 하나의 프레임(420, 430, 440)에 저장된 데이터를 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터로 변경할 수 있고, 적어도 하나의 프레임(420, 430, 440)의 WAL 파일(340) 상의 저장 위치 순서에 따라 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 저장할 수도 있다.
한편, 전자 장치(101)는, 예를 들면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 프레임(420)에 저장할 때, Salt-1(423) 및 Salt-2(424)의 데이터 값을 WAL 파일(340)의 헤더(410)에 포함된 Salt-1(415) 및 Salt-2(416)의 데이터 값으로 변경할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 805 동작에서, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 WAL 파일(340)에 모두 저장되었는지 여부를 판단할 수 있다. 전자 장치(101)는, 예를 들면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 모든 데이터가 WAL 파일(340)에 저장되지 않은 경우, 803 동작으로 분기하여 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)에 저장할 수 있다.
다양한 실시 예에 따르면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 WAL 파일(340)에 모두 저장된 경우, 전자 장치(101)는 807 동작에서, 801 동작 이전에 WAL 파일(340)에 추가된 프레임과 803 동작에서 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 저장된 프레임을 구분하는 구분 데이터를 WAL 파일(340)에 추가할 수 있다. 전자 장치(101)는, 예를 들면, 803 동작에서 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 저장된 적어도 하나의 프레임 중에서, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 마지막으로 저장된 프레임의 WAL 파일(340) 상의 저장 위치를 확인하고, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 마지막으로 저장된 프레임의 다음 프레임의 적어도 하나의 구성에 기 설정된 데이터 값을 포함하는 구분 데이터를 저장할 수 있다. 예를 들면, 전자 장치(101)는, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 마지막으로 저장된 프레임의 다음 프레임의 프레임 헤더의 페이지 번호에 데이터 값을 0x00000000으로 가지는 구분 데이터를 저장할 수 있다.
다양한 실시 예에 따르면, 전자 장치(101)는 809 동작에서, 구분 데이터에 기초하여 체크포인트 동작을 수행하여 데이터베이스(350)를 변경할 수 있다. 전자 장치(101)는, 예를 들면, WAL 파일(340)에 포함된 적어도 하나의 프레임의 유효성을 판단할 수 있고, 유효한 프레임으로 판단된 프레임에 기초하여 데이터베이스를 변경할 수 있다. 전자 장치(101)는, 예를 들면, WAL 파일(340)에 포함된 적어도 하나의 프레임 중 프레임 헤더의 페이지 번호의 데이터 값이 0x00000000인 프레임을 확인할 수 있고, 프레임 헤더의 페이지 번호의 데이터 값이 0x00000000인 프레임의 파일 상의 저장 위치보다 앞에 위치하는 적어도 하나의 프레임을 유효한 프레임으로 판단할 수 있고, 유효한 프레임으로 판단된 적어도 하나의 프레임에 포함된 페이지 데이터(326)에 기초하여 데이터베이스를 변경할 수 있다. 한편, 809 동작에서 수행되는 체크포인트 동작은, 예를 들면, 801 동작에서 수신된 트랜잭션과 관련된 동작들의 수행이 완료되는 시점과는 무관하게 수행될 수 있다. 예를 들면, WAL 파일(340)의 프레임 개수가 기 설정된 개수(예: 1000개)에 해당하는 경우, 체크포인트 동작이 수행될 수도 있고, 데이터베이스(350)와 관련된 어플리케이션(146)에서 체크포인트 메시지가 발생하는 경우, 체크포인트 동작이 수행될 수도 있다.
본 발명의 다양한 실시 예에 따르면, 구분 데이터에 기초하여 WAL 파일(340)에 포함된 적어도 하나의 프레임의 유효성을 판단할 수 있으므로, WAL 파일(340)의 헤더(310)에 포함된 Salt-1(315) 및 Salt-2(316)에 기초하여 WAL 파일(340)에 포함된 프레임의 유효성을 판단하는 경우보다 유효성 판단을 보다 정확하고 빠르게 수행할 수 있다.
도 9는 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 따라 변경되는 WAL 파일(340)의 헤더(410)에 포함된 유효성 데이터에 관한 예시를 나타낸 도면이다.
도 9의 도면부호 901을 참조하면, 초기화된 WAL 파일(340)의 헤더(410)의 각 구성에 저장된 데이터 값들을 확인할 수 있다.
도 9의 도면부호 902를 참조하면, 초기화된 WAL 파일(340)의 헤더(410)의 구성 중 매직 넘버(311), 파일 유형(312) 및 페이지 사이즈(313)의 데이터 값이 초기화 이전의 데이터 값으로 변경된 것을 확인할 수 있다. 한편, 초기화된 WAL 파일(340)의 헤더(410)의 구성 중 Salt-1(415)의 유효성 데이터 값이 1 증가한 것을 확인할 수 있다.
도 10a는 본 발명의 다양한 실시 예에 따른 WAL 파일(340)의 구성에 관한 예시를 나타낸 도면이고, 도 10b는 본 발명의 다양한 실시 예에 따른 전자 장치(101)의 데이터 운용 방법에 따라 변경되는 WAL 파일(340)의 프레임에 관한 예시를 나타낸 도면이다.
도 10a를 참조하면, 처리가 요구되는 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 WAL 파일(1000)(예: WAL 파일(340))의 적어도 하나의 프레임에 추가되기 이전의 WAL 파일(1000)의 구성을 나타낸 것으로, 전자 장치(101)는, 제1 프레임(1020) 내지 제6 프레임(1070)에 저장된 데이터들은 WAL 파일(1000)이 초기화되기 이전에 WAL 파일(1000)에 추가된 데이터인 것으로 판단할 수도 있다.
도 10b의 도면부호 1001을 참조하면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 WAL 파일(1000)(예: WAL 파일(340))의 제1 프레임(1020) 내지 제3 프레임(1040)에 저장된 것을 확인할 수 있다. 한편, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 마지막으로 저장된 제3 프레임(1040)의 다음 프레임이 제4 프레임(1050)인 것을 확인할 수 있고, 제4 프레임(1050)의 프레임 헤더에 포함된 페이지 번호(1051), 커밋(1053) 및 Salt-1(1055)에 0x00000000이 아닌 서로 다른 데이터 값이 저장되어 있는 것을 확인할 수 있다.
도 10b의 도면부호 1002를 참조하면, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 마지막으로 저장된 제3 프레임(1040)의 다음 프레임인 제4 프레임(1050)의 프레임 헤더의 페이지 번호(1051)에 데이터 값을 0x00000000으로 가지는 구분 데이터가 저장된 것을 확인할 수 있다. 이때, 전자 장치(101)는, WAL 파일(1000)에 포함된 적어도 하나의 프레임 중 프레임 헤더의 페이지 번호의 데이터 값이 0x00000000인 프레임이 제4 프레임(1050)인 것을 확인할 수 있다. 따라서, 전자 장치(101)는, 제4 프레임(1050)보다 앞에 위치하는 제1 프레임(1020) 내지 제3 프레임(1040)을 유효한 프레임으로 판단할 수 있고, 제1 프레임(1020) 내지 제3 프레임(1040)에 기초하여 데이터베이스(350)를 변경할 수 있다.
도 11a는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터베이스 및 WAL 파일과 관련된 동작의 예시를 나타낸 도면이다.
도 11a의 도면부호 1101을 참조하면, 전자 장치(101)는, 예를 들면, WAL 파일(340)이 존재하지 않는 상태에서 데이터베이스(350)의 사용을 개시하는 명령을 수신하는 경우, WAL 파일(340)을 생성할 수 있다. 한편, 전자 장치(101)는, 예를 들면, WAL 파일(340)이 존재하는 상태에서 데이터베이스(350)의 사용을 개시하는 명령을 수신하는 경우, WAL 파일 (340)의 헤더(410)에 포함된 데이터 중 초기화된 데이터를 복구할 수 있고, WAL 파일(340)의 헤더(410)에 포함된 유효성 데이터를 변경할 수 있다.
도면부호 1102를 참조하면, 전자 장치(101)는, 예를 들면, 트랜잭션(예: insert, update, delete) 명령을 수신하는 경우, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)에 추가할 수 있다. 이때, 전자 장치(101)는, 예를 들면, WAL 파일(340)이 복구되기 이전에 WAL 파일(340)에 저장된 프레임의 데이터를 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터로 변경할 수도 있다.
도면부호 1103을 참조하면, 전자 장치(101)는, 예를 들면, 데이터베이스(350)의 사용을 종료하는 명령을 수신한 경우, WAL 파일(340)을 초기화할 수 있다.
한편, 전자 장치(101)는, 예를 들면, 데이터베이스(350)의 사용을 종료하는 명령을 수신한 경우에 있어서, 사용자로부터 WAL 파일(340) 삭제 명령을 수신하거나, WAL 파일(340)의 크기가 일정 크기(예: 4MByte) 이상이거나, "WAL 파일 유지 정책"이 적용되고 있지 않은 경우 중 적어도 어느 하나에 해당하면, WAL 파일(340)을 삭제하거나, WAL 파일(340)의 사이즈를 0으로 변경할 수도 있다. 이때, 전자 장치(101)는, 예를 들면, WAL 파일(340)에 포함된 프레임 중 일부를 삭제할 수도 있다. 한편, WAL 파일(340)이 삭제되거나, WAL 파일(340)의 사이즈가 변경되는 경우, 전자 장치(101)는, 예를 들면, 메타 데이터(330)를 변경할 수도 있다.
도 11b는 본 발명의 다양한 실시 예에 따른 전자 장치의 데이터베이스 및 WAL 파일과 관련된 다른 동작의 예시를 나타낸 도면이다.
도 11b의 도면부호 1104를 참조하면, 전자 장치(101)는, 예를 들면, 데이터베이스(350)의 사용을 개시하는 명령을 수신하는 경우, WAL 파일(340)을 생성할 수 있다.
도면부호 1105를 참조하면, 전자 장치(101)는, 예를 들면, 트랜잭션(예: insert, update, delete)에 대한 처리 명령을 수신하는 경우, 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터를 WAL 파일(340)에 추가할 수 있다. 도면부호 1105의 WAL 파일(340)은 트랜잭션에 대응하는 연산 처리 결과들에 대한 데이터가 추가됨에 따라, 도면부호 1104의 WAL 파일(340)에 비해 크기가 큰 것을 확인할 수 있다.
도면부호 1106을 참조하면, 전자 장치(101)는, 예를 들면, 데이터베이스(350)의 사용을 종료하는 명령을 수신한 경우, WAL 파일(340)을 삭제하거나, WAL 파일(340)의 사이즈를 0으로 변경할 수 있다. 한편, WAL 파일(340)이 삭제되거나, WAL 파일(340)의 사이즈가 변경되는 경우, 전자 장치(101)는, 예를 들면, 메타 데이터(330)를 변경할 수도 있다.
본 명세서와 도면에 개시된 본 개시의 실시 예들은 본 개시의 실시 예에 따른 의 기술 내용을 쉽게 설명하고 본 개시의 실시 예의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 실시 예의 범위를 한정하고자 하는 것은 아니다. 따라서 본 개시의 다양한 실시 예의 범위는 여기에 개시된 실시 예들 이외에도 본 개시의 다양한 실시 예의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 개시의 다양한 실시 예의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 전자 장치에 있어서,
    데이터베이스 및 상기 데이터베이스를 변경하기 위한 적어도 하나의 변경 데이터를 포함하는 파일을 저장하는 메모리; 및
    상기 메모리와 전기적으로 연결되는 프로세서를 포함하고,
    상기 프로세서는,
    상기 데이터베이스의 사용을 종료하는 경우, 상기 파일의 헤더(header)에 포함된, 상기 적어도 하나의 변경 데이터의 유효성을 판단하기 위한 제1 유효성 데이터를 제외한 적어도 하나의 데이터를 초기화하고,
    상기 데이터베이스의 사용이 종료된 후 상기 데이터베이스의 사용을 개시하는 경우, 상기 파일의 헤더에 포함된 제1 유효성 데이터를 변경하도록 설정된 전자 장치.
  2. 제1항에 있어서,
    상기 파일은 WAL(write-ahead logging) 파일인 것을 특징으로 하는 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 데이터베이스의 사용을 종료하는 경우, 상기 파일의 헤더에 포함된, 상기 파일의 유형을 나타내는 고유 값을 기 설정된 값으로 변경하여 초기화하도록 설정된 전자 장치.
  4. 제1항에 있어서,
    상기 데이터베이스의 사용이 개시된 후 트랜잭션(transaction)에 대한 처리가 요구되는 경우, 상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터를 상기 파일에 추가하도록 설정된 전자 장치.
  5. 제1항에 있어서,
    상기 적어도 하나의 변경 데이터는 상기 헤더에 포함된 제1 유효성 데이터에 대응하는 제2 유효성 데이터를 포함하고,
    상기 프로세서는,
    상기 헤더에 포함된 제1 유효성 데이터와 상기 적어도 하나의 변경 데이터에 포함된 제2 유효성 데이터의 일치 여부에 기초하여, 상기 적어도 하나의 변경 데이터의 유효성을 판단하도록 설정된 전자 장치.
  6. 제4항에 있어서,
    상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터가 상기 파일에 추가된 경우, 상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터가 추가된 상기 파일 상의 저장 위치에 기초하여 기 설정된 값을 포함하는 구분 데이터를 상기 파일에 추가하도록 설정된 전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는,
    상기 구분 데이터가 추가된 상기 파일 상의 저장 위치에 기초하여 상기 적어도 하나의 변경 데이터의 유효성을 판단하도록 설정된 전자 장치.
  8. 제5항에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 변경 데이터의 유효성을 판단한 결과에 기초하여, 상기 파일에 포함된 적어도 하나의 변경 데이터 중 유효한 변경 데이터를 결정하고,
    상기 유효한 변경 데이터로 판단된 적어도 하나의 변경 데이터에 기초하여 상기 데이터베이스를 변경하도록 설정된 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    상기 제1 유효성 데이터에 포함된 값을, 상기 제1 유효성 데이터에 포함된 값과 기 설정된 값을 합한 값으로 변경하거나,
    상기 제1 유효성 데이터에 포함된 값을, 상기 제1 유효성 데이터에 포함된 값에서 기 설정된 값을 뺀 값으로 변경하도록 설정된 전자 장치.
  10. 제1항에 있어서,
    상기 프로세서는,
    임의의 값을 산출하고,
    상기 산출된 임의의 값이 상기 제1 유효성 데이터에 포함된 값과 일치하지 않는 경우, 상기 제1 유효성 데이터에 포함된 값을 상기 산출된 임의의 값으로 변경하고,
    상기 산출된 임의의 값이 상기 제1 유효성 데이터에 포함된 값과 일치하는 경우, 임의의 값을 재산출하도록 설정된 전자 장치.
  11. 전자 장치의 데이터 운용 방법에 있어서,
    데이터베이스의 사용을 종료하는 경우, 상기 데이터베이스를 변경하기 위한 적어도 하나의 변경 데이터를 포함하는 파일의 헤더(header)에 포함된, 상기 적어도 하나의 변경 데이터의 유효성을 판단하기 위한 제1 유효성 데이터를 제외한 적어도 하나의 데이터를 초기화하는 동작; 및
    상기 데이터베이스의 사용이 종료된 후 상기 데이터베이스의 사용을 개시하는 경우, 상기 파일의 헤더에 포함된 제1 유효성 데이터를 변경하는 동작을 포함하는 전자 장치의 데이터 운용 방법.
  12. 제11항에 있어서,
    상기 파일은 WAL(write-ahead logging) 파일인 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  13. 제11항에 있어서,
    상기 초기화하는 동작은,
    상기 파일의 헤더에 포함된, 상기 파일의 유형을 나타내는 고유 값을 기 설정된 값으로 변경하여 초기화하는 동작을 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  14. 제11항에 있어서,
    상기 데이터베이스의 사용이 개시된 후 트랜잭션(transaction)에 대한 처리가 요구되는 경우, 상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터를 상기 파일에 추가하는 동작을 더 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  15. 제11항에 있어서,
    상기 적어도 하나의 변경 데이터는 상기 헤더에 포함된 제1 유효성 데이터에 대응하는 제2 유효성 데이터를 포함하고,
    상기 헤더에 포함된 제1 유효성 데이터와 상기 적어도 하나의 변경 데이터에 포함된 제2 유효성 데이터의 일치 여부에 기초하여, 상기 적어도 하나의 변경 데이터의 유효성을 판단하는 동작을 더 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  16. 제14항에 있어서,
    상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터가 상기 파일에 추가된 경우, 상기 트랜잭션에 대응하는 적어도 하나의 변경 데이터가 추가된 상기 파일 상의 저장 위치에 기초하여 기 설정된 값을 포함하는 구분 데이터를 상기 파일에 추가하는 동작을 더 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  17. 제16항에 있어서,
    상기 구분 데이터가 추가된 파일 상의 저장 위치에 기초하여 상기 적어도 하나의 변경 데이터의 유효성을 판단하는 동작을 더 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  18. 제15항에 있어서,
    상기 적어도 하나의 변경 데이터의 유효성을 판단한 결과에 기초하여, 상기 파일에 포함된 적어도 하나의 변경 데이터 중 유효한 변경 데이터를 결정하는 동작; 및
    상기 유효한 변경 데이터로 판단된 적어도 하나의 변경 데이터에 기초하여 상기 데이터베이스를 변경하는 동작을 더 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  19. 제11항에 있어서,
    상기 제1 유효성 데이터를 변경하는 동작은,
    상기 제1 유효성 데이터에 포함된 값을, 상기 제1 유효성 데이터에 포함된 값과 기 설정된 값을 합한 값으로 변경하는 동작; 및
    상기 제1 유효성 데이터에 포함된 값을, 상기 제1 유효성 데이터에 포함된 값과 기 설정된 값을 뺀 값으로 변경하는 동작 중 어느 하나를 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
  20. 제11항에 있어서,
    상기 제1 유효성 데이터를 변경하는 동작은,
    임의의 값을 산출하는 동작;
    상기 산출된 임의의 값이 상기 제1 유효성 데이터에 포함된 값과 일치하지 않는 경우, 상기 제1 유효성 데이터에 포함된 값을 상기 산출된 임의의 값으로 변경하는 동작; 및
    상기 산출된 임의의 값이 상기 제1 유효성 데이터에 포함된 값과 일치하는 경우, 임의의 값을 재산출하는 동작을 포함하는 것을 특징으로 하는 전자 장치의 데이터 운용 방법.
KR1020170106959A 2017-08-23 2017-08-23 전자 장치 및 그의 데이터 운용 방법 KR102405593B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170106959A KR102405593B1 (ko) 2017-08-23 2017-08-23 전자 장치 및 그의 데이터 운용 방법
PCT/KR2018/006006 WO2019039706A1 (ko) 2017-08-23 2018-05-28 전자 장치 및 그의 데이터 운용 방법
US16/640,475 US11379458B2 (en) 2017-08-23 2018-05-28 Electronic device and data management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170106959A KR102405593B1 (ko) 2017-08-23 2017-08-23 전자 장치 및 그의 데이터 운용 방법

Publications (2)

Publication Number Publication Date
KR20190021773A true KR20190021773A (ko) 2019-03-06
KR102405593B1 KR102405593B1 (ko) 2022-06-08

Family

ID=65439059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170106959A KR102405593B1 (ko) 2017-08-23 2017-08-23 전자 장치 및 그의 데이터 운용 방법

Country Status (3)

Country Link
US (1) US11379458B2 (ko)
KR (1) KR102405593B1 (ko)
WO (1) WO2019039706A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423012B2 (en) 2019-08-06 2022-08-23 Samsung Electronics Co., Ltd. Electronic device for prohibiting loss of data in database and method for operating the same
US11907166B2 (en) 2021-01-13 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and method for updating database based on reserved space

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102405593B1 (ko) * 2017-08-23 2022-06-08 삼성전자 주식회사 전자 장치 및 그의 데이터 운용 방법

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000011602A (ko) * 1998-07-20 2000-02-25 포만 제프리 엘 그래피컬유저인터페이스제어인핸서를제공하는시스템및방법
KR20070080354A (ko) * 2006-02-07 2007-08-10 에스케이 텔레콤주식회사 콘텐츠 검증 시스템 및 방법
US7689607B2 (en) * 2005-04-15 2010-03-30 Microsoft Corporation Database page mirroring
KR20140039611A (ko) * 2012-09-24 2014-04-02 삼성전자주식회사 전자 장치, gpt 복원 방법 및 컴퓨터 판독가능 기록매체
US8700670B2 (en) * 2010-04-12 2014-04-15 Symantec Corporation Insert optimization for B+ tree data structure scalability
CN104657500A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 一种基于key-value键值对的分布式存储方法
CN104809178A (zh) * 2015-04-15 2015-07-29 北京科电高技术公司 一种键值数据库内存日志的写入方法
JP2015526832A (ja) * 2012-12-03 2015-09-10 ヴイエムウェア インコーポレイテッドVMware,Inc. 分散キーバリューストア
US20150286671A1 (en) * 2012-10-29 2015-10-08 Nec Corporation Transaction system
WO2015155997A1 (ja) * 2014-04-11 2015-10-15 日本電気株式会社 設定装置、制御装置、設定方法及びネットワークスイッチ
US20160092124A1 (en) * 2014-09-25 2016-03-31 Dropbox, Inc. Append-only storage system supporting open and closed extents
US20160321144A1 (en) * 2015-04-28 2016-11-03 Micro Systemation AB Database rollback using wal
US20160359859A1 (en) * 2015-06-03 2016-12-08 Folium LLC System For Secure File Access
CN106708427A (zh) * 2016-11-17 2017-05-24 华中科技大学 一种适用于键值对数据的存储方法
JP6189488B1 (ja) * 2016-06-27 2017-08-30 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
US9842031B1 (en) * 2014-12-08 2017-12-12 Amazon Technologies, Inc. Incremental updates to user transaction state at read-only nodes of a distributed database
WO2018170276A2 (en) * 2017-03-15 2018-09-20 Fauna, Inc. Methods and systems for a database

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
KR100452343B1 (ko) * 2001-12-28 2004-10-12 에스케이텔레텍주식회사 기계어 코드 실행영역을 포함하는 이동통신 단말기용 파일을 기록하는 저장매체 및 그를 이용한 파일 실행방법
US20040157639A1 (en) 2002-11-27 2004-08-12 Morris Roy D. Systems and methods of mobile restore
JP4766240B2 (ja) * 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US9354864B2 (en) * 2008-05-08 2016-05-31 Dialogic Corporation Package header system and method to facilitate streaming a single firmware file upgrade
US8572376B2 (en) * 2009-03-27 2013-10-29 Bank Of America Corporation Decryption of electronic communication in an electronic discovery enterprise system
KR102405593B1 (ko) * 2017-08-23 2022-06-08 삼성전자 주식회사 전자 장치 및 그의 데이터 운용 방법

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000011602A (ko) * 1998-07-20 2000-02-25 포만 제프리 엘 그래피컬유저인터페이스제어인핸서를제공하는시스템및방법
US7689607B2 (en) * 2005-04-15 2010-03-30 Microsoft Corporation Database page mirroring
KR20070080354A (ko) * 2006-02-07 2007-08-10 에스케이 텔레콤주식회사 콘텐츠 검증 시스템 및 방법
US8700670B2 (en) * 2010-04-12 2014-04-15 Symantec Corporation Insert optimization for B+ tree data structure scalability
KR20140039611A (ko) * 2012-09-24 2014-04-02 삼성전자주식회사 전자 장치, gpt 복원 방법 및 컴퓨터 판독가능 기록매체
US20150286671A1 (en) * 2012-10-29 2015-10-08 Nec Corporation Transaction system
JP2015526832A (ja) * 2012-12-03 2015-09-10 ヴイエムウェア インコーポレイテッドVMware,Inc. 分散キーバリューストア
WO2015155997A1 (ja) * 2014-04-11 2015-10-15 日本電気株式会社 設定装置、制御装置、設定方法及びネットワークスイッチ
US20160092124A1 (en) * 2014-09-25 2016-03-31 Dropbox, Inc. Append-only storage system supporting open and closed extents
US9842031B1 (en) * 2014-12-08 2017-12-12 Amazon Technologies, Inc. Incremental updates to user transaction state at read-only nodes of a distributed database
CN104657500A (zh) * 2015-03-12 2015-05-27 浪潮集团有限公司 一种基于key-value键值对的分布式存储方法
CN104809178A (zh) * 2015-04-15 2015-07-29 北京科电高技术公司 一种键值数据库内存日志的写入方法
US20160321144A1 (en) * 2015-04-28 2016-11-03 Micro Systemation AB Database rollback using wal
US20160359859A1 (en) * 2015-06-03 2016-12-08 Folium LLC System For Secure File Access
JP6189488B1 (ja) * 2016-06-27 2017-08-30 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
CN106708427A (zh) * 2016-11-17 2017-05-24 华中科技大学 一种适用于键值对数据的存储方法
WO2018170276A2 (en) * 2017-03-15 2018-09-20 Fauna, Inc. Methods and systems for a database

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423012B2 (en) 2019-08-06 2022-08-23 Samsung Electronics Co., Ltd. Electronic device for prohibiting loss of data in database and method for operating the same
US11907166B2 (en) 2021-01-13 2024-02-20 Samsung Electronics Co., Ltd. Electronic device and method for updating database based on reserved space

Also Published As

Publication number Publication date
US20200218710A1 (en) 2020-07-09
WO2019039706A1 (ko) 2019-02-28
KR102405593B1 (ko) 2022-06-08
US11379458B2 (en) 2022-07-05

Similar Documents

Publication Publication Date Title
US11057762B2 (en) Electronic device and method for switching electronic device between dual standby mode and single standby mode
US20190155792A1 (en) Electronic device and file data journaling method of electronic device
KR20190024169A (ko) 스마트키 서비스를 제공하기 위한 방법 및 그 전자 장치
KR20210037320A (ko) 어플리케이션 실행 방법 및 장치
KR102405593B1 (ko) 전자 장치 및 그의 데이터 운용 방법
US20200201518A1 (en) Method for starting application and electronic device for implementing same
CN115066877A (zh) 用于识别连接到USB Type-C连接器的音频输出装置的电子装置和方法
KR20190109979A (ko) 전자 장치 및 전자 장치의 업데이트 제어 방법
US11604656B2 (en) Method and apparatus for managing application
US20210026807A1 (en) Method for managing data associated with application and electronic device therefor
KR102657534B1 (ko) 어플리케이션의 무결성을 검증하는 전자 장치 및 어플리케이션의 무결성을 검증하기 위한 방법
US11507384B2 (en) Electronic device for performing booting, and operating method therefor
CN116700768B (zh) 一种应用的处理方法及相关装置
US20200401360A1 (en) Electronic device and operating method therefor
US11423012B2 (en) Electronic device for prohibiting loss of data in database and method for operating the same
US11947709B2 (en) Electronic device for controlling access to device resource and operation method thereof
EP3819763B1 (en) Electronic device and operating method thereof
CN114175136A (zh) 控制亮度的电子装置及其控制亮度的方法
EP4109812A1 (en) Method for signing key management by electronic device, and electronic device therefor
US20240015156A1 (en) Electronic device for controlling access to device resource and operation method thereof
US20220100556A1 (en) Electronic device, and method for managing life cycle of plurality of applications executed in electronic device
KR20210016944A (ko) 미디어 스캔을 수행하는 전자 장치 및 그 미디어 스캔 방법

Legal Events

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