KR101868173B1 - 어플리케이션 데이터베이스 공유 방법 및 장치 - Google Patents

어플리케이션 데이터베이스 공유 방법 및 장치 Download PDF

Info

Publication number
KR101868173B1
KR101868173B1 KR1020130156341A KR20130156341A KR101868173B1 KR 101868173 B1 KR101868173 B1 KR 101868173B1 KR 1020130156341 A KR1020130156341 A KR 1020130156341A KR 20130156341 A KR20130156341 A KR 20130156341A KR 101868173 B1 KR101868173 B1 KR 101868173B1
Authority
KR
South Korea
Prior art keywords
database
native
application
server
service
Prior art date
Application number
KR1020130156341A
Other languages
English (en)
Other versions
KR20150069793A (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 KR1020130156341A priority Critical patent/KR101868173B1/ko
Publication of KR20150069793A publication Critical patent/KR20150069793A/ko
Application granted granted Critical
Publication of KR101868173B1 publication Critical patent/KR101868173B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44584Portable applications, i.e. making applications self-contained, e.g. U3 standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 서로 다른 코드로 작성된 어플리케이션간에 데이터베이스를 공유할 수 있는 방법 및 장치에 관한 것이다. 본 발명의 어플리케이션 데이터베이스 공유 장치는, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 저장하고, 저장된 데이터 변경을 감지하며, 데이터 변경 감지에 기초하여 데이터베이스 변경 통지를 전송한다.

Description

어플리케이션 데이터베이스 공유 방법 및 장치{METHOD AND APPARATUS FOR SHARING APPLICATION DATABASE}
본 발명은 이동통신 어플리케이션 분야에 관한 것으로, 특히 서로 다른 코드로 작성된 어플리케이션간에 데이터베이스를 공유할 수 있는 방법 및 장치에 관한 것이다.
통신기술이 발달하고, 사용자의 필요에 따라서 이동 단말기의 사양은 점차 높아지고, 이동 통신사는 종래에 제공하지 않았던 다양한 서비스를 제공하고 있다. 예컨대, 종래에는 이동 단말기를 이용하여 음성 통화하거나 단문메시지를 전송하는 것만이 가능하였다면, 최근에는 영상 통화를 하거나 카메라를 조작하여 사진/동영상을 촬영하거나 DMB(Digital Multimedia Broadcasting)를 시청하거나 무선 인터넷을 이용할 수도 있게 되었다.
이동 단말기에는 다양한 어플리케이션(application)이 탑재되는데, 어플리케이션은 구현 방식에 따라 네이티브 어플리케이션(native application)과 자바 어플리케이션(java application)으로 구분할 수 있다.
네이티브 어플리케이션이란, C 또는 C++ 등의 네이티브 코드로 작성되어 컴파일된 소프트웨어 로직(softwarelogic){사용자 인터페이스(User Interface: UI)에 대응되는 사용자 인터페이스 로직을 포함} 및 데이터(data) 등이 어플리케이션에 포함되어, 실행시 이동 단말기의 플랫폼에 기반하여 바로 실행되는 어플리케이션을 의미한다.
자바 어플리케이션이란, 웹(Web) 기반의 HTML, JS(JavaScript: 자바스크립트), CSS(Cascading Style Sheets) 등의 웹 코드로 작성된 어플리케이션으로서, 이동 단말기에서 실행 시에 브라우저 엔진(browser engine)의 해석을 통해 실행될 수 있는 어플리케이션을 의미한다. 브라우저 엔진(browser engine)의 해석 과정은 웹서핑을 위한 인터넷 브라우저가 웹 서버로부터 전송받은 웹 코드로 된 웹 페이지를 해석하여 보여주는 과정과 유사하다. 자바 어플리케이션의 실행 중 웹 코드로 정의된 사항에 따라 필요한 웹 코드로 작성된 데이터 또는 이미지 등의 데이터를 웹 서버로부터 전송받아 해석하여 보여주는 것도 가능하다.
네이티브 어플리케이션은 개발이 어렵고 사용자의 의지에 따른 변형(확장)이 힘들기 때문에, 근래에는 웹 기반의 언어로 구현된 자바 어플리케이션을 실행할 수 있는 이동 단말기 플랫폼이 개발되고 있다. 한편, 자바 어플리케이션은 네이티브 어플리케이션에 비해 개발이 쉽고, 저렴한 비용으로 구현가능하며, 관리가 용이하고, 확장성이 뛰어나다는 장점이 있다.
도 1은 안드로이드 시스템에서 자바 어플리케이션들 간 동일 데이터베이스를 공유하는 방법을 보여주는 도면이다. 안드로이드 시스템에서 자바 어플리케이션(10)은 데이터를 저장하기 위해 데이터베이스(10a)를 사용하며, 기본적으로 데이터베이스(10a)는 데이터를 저장한 자바 어플리케이션(10)만이 접근 가능하기 때문에 타 자바 어플리케이션(30)들이 접근할 수 없는 구조로 되어 있다. 타 자바 어플리케이션(30)들이 데이터베이스(10a)에 접근하도록 하기 위해서 데이터베이스(10a)를 소유한 자바 어플리케이션(10)은 콘텐츠 프로바이더(10b)를 제공하고 타 자바 어플리케이션(30)들은 콘텐츠 리졸버(20)를 이용하여 데이터베이스(10a)에 접근이 가능하다. 또한 콘텐츠 옵저버(40)를 통해 데이터베이스(10a)가 변경된 경우 데이터베이스의 어떤 테이블이 변경되었는지 통지받을 수 있게 됨으로써 데이터베이스(10a)를 이용하는 모든 자바 어플리케이션(30) 들은 동일한 데이터베이스(10a)의 공유가 가능하다.
종래기술에 의하면, 데이터베이스를 공유해야 하는 C/C++로 구현된 네이티브 어플리케이션들은 안드로이드 시스템의 어플리케이션 프레임워크를 이용하지 않고 데이터베이스(10a)에 직접 접근할 수 있으나, 이 경우 네이티브 어플리케이션들에 의해 데이터베이스가 변경되는 경우 자바 어플리케이션(30)들은 실시간으로 변경 내용을 알 수 없으며, 반대로 자바 어플리케이션(30)들에 의해 변경된 데이터베이스는 실시간으로 네이티브 어플리케이션들이 알 수 없어 동일 데이터베이스(10a)에 대한 공유가 불가능한 문제점이 있다.
이로 인해 동일 데이터베이스(10a)를 공유해야 하는 모든 어플리케이션들을 자바로만 개발을 해야만 하고, 기존에 C/C++로 개발된 네이티브 어플리케이션들을 재활용할 수 없게 되며, 소정 성능을 요구하는 어플리케이션도 자바로만 개발을 해야 하는 문제점이 있다. 또한 안드로이드를 이용한 어플리케이션 개발시 사용할 수 있는 프로그램 언어 선택에 있어서도 제약을 가져올 수 있는 문제점이 있다.
한국공개특허공보 제10-2008-0070337호 (2008.07.30. 공개)
본 발명은 서로 다른 코드로 작성된 어플리케이션간에 데이터베이스를 공유할 수 있는 방법 및 장치를 제공한다.
본 발명의 어플리케이션 데이터베이스 공유 장치는, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하고, 상기 데이터베이스 변경 발생시 상기 네이티브 어플리케이션에 통지하는, 데이터베이스 관리 어플리케이션을 포함한다.
본 발명의 어플리케이션 데이터베이스 공유 장치는, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 저장하는 데이터베이스를 관리하는, 데이터베이스 관리 어플리케이션과, 상기 네이티브 어플리케이션의 요청 사항을 상기 데이터베이스 관리 어플리케이션으로 전달하며, 상기 데이터베이스 관리 어플리케이션으로부터의 데이터베이스 변경 통지를 수신하는, 네이티브 서비스와, 상기 데이터베이스 관리 어플리케이션 및 상기 네이티브 서비스 사이에 통신을 수행하기 위한, 네이티브 서비스 클라이언트를 포함한다.
또한 본 발명의 어플리케이션 데이터베이스 공유 방법은, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하는 단계와, 상기 데이터베이스에 저장된 데이터 변경을 감지하는 단계와, 상기 데이터 변경 감지에 기초하여 데이터베이스 변경 통지를 전송하는 단계를 포함한다.
본 발명에 따르면, 자바 어플리케이션(Java Application)과 C/C++로 구현된 네이티브(Native) 어플리케이션이 동일 데이터베이스를 실시간으로 공유할 수 있게 됨으로써, 신규로 개발해야 하는 어플리케이션을 자바로만 개발할 필요가 없으며, 기존에 C/C++로 개발된 어플리케이션들을 포팅하여 안드로이드의 데이터베이스 시스템을 쉽게 사용할 수 있는 이점이 있다. 또한 안드로이드의 콘텐츠 프로바이더를 제공하는 기존의 안드로이드 자바 어플리케이션의 데이터베이스까지 C/C++로 구현된 네이티브 어플리케이션들이 실시간으로 공유할 수 있다.
도 1은 안드로이드 시스템에서 자바 어플리케이션들 간 동일 데이터베이스를 공유하는 방법을 보이는 예시도.
도 2는 본 발명의 실시예에 따른 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법을 보이는 구성도.
도 3은 본 발명의 실시예에 따른 데이터베이스 관리 어플리케이션과 네이티브 서비스의 초기화 과정을 나타내는 예시도.
도 4는 본 발명의 실시예에 따른 자바 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 변경한 경우 변경 내용을 자바 어플리케이션과 네이티브 어플리케이션에게 통지하는 방법을 보이는 구성도.
도 5는 본 발명의 실시 예에 따른 네이티브 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 조회한 경우 그 결과를 네이티브 어플리케이션에게 전달하기 위한 방법을 보이는 구성도.
도 6은 본 발명의 실시 예에 따른 네이티브 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 변경한 경우 그 변경 내용을 자바 어플리케이션과 네이티브 어플리케이션에게 통지하는 방법을 보이는 구성도.
이하 첨부된 도면을 참조하여 본 발명의 실시예들에 대해 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
본 발명은 안드로이드(Android)의 어플리케이션 프레임워크(Application Framework)를 이용한 자바 어플리케이션(Java Application)들과 C/C++로 구현된 네이티브 어플리케이션들간 실시간 데이터베이스 공유방법에 대한 것으로 안드로이드 어플리케이션 프레임워크 대한 자세한 설명은 생략한다.
도 2는 본 발명의 실시예에 따른 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법을 보이는 구성도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 안드로이드에서 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법은 데이터베이스 관리 어플리케이션(100), 콘텐츠 리졸버(content resolver, 200), 자바 어플리케이션(300), 네이티브 서비스 클라이언트(400), 네이티브 서비스(500), 네이티브 어플리케이션(600), API(Application Programmable Interface) 모듈(700) 및 콘텐츠 옵저버(content observer, 800)를 포함할 수 있다.
데이터베이스 관리 어플리케이션(100)은 자바 어플리케이션(300)들과 네이티브 어플리케이션(600)들이 사용하는 모든 데이터를 포함하는 데이터베이스(100a)를 포함할 수 있다. 각각의 자바 어플리케이션(300)들과 네이티브 어플리케이션(600)들이 자신의 데이터를 각각 가지고 있을 수 있지만 데이터베이스의 관리 측면에서 집중화 및 안정화를 위해 데이터베이스 관리 어플리케이션(100)이 모든 데이터를 가지고 데이터베이스 초기화, 백업 또는 업그레이드 기능을 수행하며, 네이티브 어플리케이션(600)들로부터의 데이터베이스 접근요청을 수행하며, 데이터베이스 변경 발생시 이를 네이티브 어플리케이션(600)들에게 통지하는 기능을 수행할 수 있다.
각각의 자바 어플리케이션(300)들은 안드로이드 어플리케이션 프레임워크에서 제공되는 콘텐츠 리졸버(200)와 콘텐츠 옵저버(800)를 이용하여 데이터베이스 관리 어플리케이션(100)의 데이터베이스(100a)에 접근할 수 있으며, 데이터베이스(100a) 변경 발생시 콘텐츠 옵저버(800)에 의해 데이터베이스(100a)내의 어떤 테이블이 변경되었는지 통보를 받을 수 있으며, 통보를 받은 자바 어플리케이션(300)들은 데이터베이스(100a)내의 변경된 테이블을 조회한 후 변경된 데이터에 따라 알맞은 동작을 수행할 수 있다.
네이티브 어플리케이션(600)들은 안드로이드의 어플리케이션 프레임워크를 이용할 수 없기 때문에 본 실시예에 포함된 API 모듈(700)을 이용하여 자바 어플리케이션(300)과 동일하게 동작을 수행할 수 있다.
네이티브 어플리케이션(600)은 안드로이드 빌드 시스템(bionic library)에서 빌드된 네이티브 어플리케이션 및 순수 리눅스(glic)에서 빌드된 네이티브 어플리케이션으로 분류할 수 있다. 안드로이드 빌드 시스템(bionic library)에서 빌드된 네이티브 어플리케이션은 안드로이드의 LIBRARIES 계층(layer)에서 제공되는 기능들은 사용할 수 있으며, 순수 리눅스(glic)에서 빌드된 네이티브 어플리케이션은 LIBRARIES 계층에서 제공되는 기능들을 사용할 수 없다.
자바로 구현된 어플리케이션은 안드로이드의 프레임워크 상에서 동작하며 안드로이드의 프레임워크에서 제공되는 기능{예: 콘텐츠 프로바이더(provider), 콘텐츠 리졸버(contents resolver), 데이터베이스 시스템(database system) 등}을 이용하고 있다.
네이티브 서비스 클라이언트(400)는 데이터베이스 관리 어플리케이션(100)으로부터의 요청을 네이티브 서비스(500)로 전달하며, 반대로 네이티브 서비스(500)로부터의 요청을 데이터베이스 관리 어플리케이션(100)으로 전달하는 기능을 수행할 수 있다. 데이터베이스 관리 어플리케이션(100)은 자바 영역에 위치하고, 네이티브 서비스 클라이언트(400)는 C/C++영역에 위치하기 때문에 데이터베이스 관리 어플리케이션(100)과 네이티브 서비스 클라이언트(400)간 통신을 위해서는 JNI(Java Native Interface)가 사용될 수 있다.
자바 어플리케이션을 구현하다 보면 시스템의 자원을 직접 이용해야 하는 경우 C/C++로 구현된 라이브러리를 이용해야 하는데 자바 어플리케이션에서 C/C++로 구현된 네이티브 라이브러리를 바로 사용할 수 없다. 그래서 자바 어플리케이션과 네이티브 어플리케이션을 연결해 주는 JNI가 필요하며 안드로이드 시스템에서는 필수 사항이다.
네이티브 서비스(500)는 안드로이드 시스템 부팅 시 시작되는 프로세스로서 네이티브 서비스 클라이언트(400)와의 연동을 위한 네이티브 서비스 서버(500b)와 네이티브 어플리케이션(600)과의 연동을 위한 네이티브 어플리케이션 서버(500c)를 기동시키며, 데이터베이스 관리 어플리케이션(100)이 가지고 있는 데이터를 그대로 캐싱(cashing)하여, 네이티브 어플리케이션(600)으로부터 특정 테이블 데이터 요청 수신 시 요청된 테이블 데이터를 네이티브 어플리케이션(600)으로 전달하는 기능을 수행할 수 있다.
도 3은 본 발명의 실시예에 따른 데이터베이스 관리 어플리케이션(100)과 네이티브 서비스(500)의 초기화 과정을 나타내는 예시도이다.
도 3을 참조하면, 안드로이드 부팅 시 데이터베이스 관리 어플리케이션(100)과 네이티브 서비스(500)가 기동되면서 메인 서버(500a)에 의해 네이티브 서비스 서버(500b)가 기동되고, 네이티브 서비스 클라이언트(400)와 네이티브 서비스 서버(500b)가 통신을 위해 서로 연결될 수 있다. 이 후 데이터베이스 관리 서비스(100c)는 데이터베이스 테이블 관리 모듈(100d)을 초기화한 후 데이터베이스(100a)에 존재하는 모든 테이블에 대한 데이터를 요청할 수 있다(①). 이때 데이터베이스 관리 어플리케이션(100)에 포함된 데이터베이스(100a)뿐만 아니라 안드로이드 시스템의 콘텐츠 프로바이더를 제공하는 자바 어플리케이션의 데이터베이스(예를 들면, 콜 로그 또는 전화번호부)에 접근하여 데이터를 요청할 수 있다. 데이터베이스 테이블 관리 모듈(100d)은 안드로이드의 콘텐츠 리졸버(200)를 통해 모든 테이블에 대한 데이터를 요청한 후(②~⑤) 그 결과를 데이터베이스 관리 서비스(100c)에게 반환할 수 있다(⑥). 데이터베이스 관리 서비스(100c)는 반환받은 테이블 데이터를 JNI를 이용하여 네이티브 서비스 클라이언트(400)에게 전달할 수 있다(⑦). 네이티브 서비스 클라이언트(400)는 전달받은 데이터를 네이티브 서비스 서버(500b)에게 전달할 수 있다(⑧). 네이티브 서비스 서버(500b)는 전달받은 데이터를 메인 서버(500a)의 메시지 큐로 전송할 수 있다(⑨). 메인 서버(500a)는 메시지큐에 있는 모든 테이블 데이터를 자신의 메모리에 저장하며, 네이티브 어플리케이션(600)으로부터 테이블에 대한 조회 요청 수신 시 사용할 수 있다. 데이터 베이스에는 여러 개의 테이블이 존재할 수 있다. 일 실시예로서, 개발된 디바이스의 경우 20개의 테이블이 데이터베이스에 존재할 수 있다. 부팅 시에는 모든 테이블 데이터를 한번에 메인 서버(500a)의 메모리에 저장할 수 있으며, 이후에는 특정 테이블에 변경이 발생할 때마다 해당 테이블만 메인 서버(500a)의 메모리에 복사할 수 있다.
네이티브 서비스 클라이언트(400)와 네이티브 서비스 서버(500b)간 연결을 위한 통신 방법으로 여러 방법이 존재할 수 있지만, 안드로이드 시스템에서 사용되는 기본 통신 방법인 바인더(binder)를 사용하는 방법이 보다 안정적이고 바람직할 수 있다.
바인더는 안드로이드 시스템에서 기본적으로 제공되는 핵심적인 통신 방법으로서, 네이티브 서비스 서버는 바인더 서비스(서버) 역할을 하며 네이티브 서비스 클라이언트(400)는 바인더 클라이언트 역할을 할 수 있다. 네이티브 서비스 클라이언트(400)는 네이티브 서비스 서버와 바인더 연결을 시도하고 연결이 완료된 후 네이티브 서비스 서버에서 방출한(expose) RPC(Remote Procedure Call)를 자신의 함수처럼 호출하여 사용할 수 있다.
도 4는 본 발명의 실시예에 따른 자바 어플리케이션이 데이터베이스(100a)의 특정 테이블의 데이터를 변경한 경우 변경 내용을 자바 어플리케이션(300)과 네이티브 어플리케이션(600)들에게 통지하는 방법을 보이는 구성도이다.
도 4를 참조하면, 자바 어플리케이션(300)이 안드로이드 시스템의 콘텐츠 리졸버(200)를 통해 데이터베이스의 특정 테이블의 데이터 변경을 시도할 수 있다(①). 안드로이드 시스템의 콘텐츠 리졸버(200)는 안드로이드 시스템의 콘텐츠 프로바이더를 통해 데이터베이스(100a)에 저장된 데이터를 변경할 수 있다(②,③). 데이터 변경이 완료된 후 자바 어플리케이션(300)들과 데이터베이스 관리 서비스(100c)는 안드로이드의 콘텐츠 옵저버(800)로부터 데이터베이스(100a)의 특정 테이블이 변경되었음을 통보받을 수 있다(④). 데이터베이스 관리 서비스(100c)는 데이터베이스 테이블 관리모듈(100d)을 통해 변경된 테이블에 대한 데이터 조회를 한 후 조회된 데이터를 JNI를 이용하여 네이티브 서비스 클라이언트(400)에게 전달할 수 있다(⑤). 네이티브 서비스 클라이언트(400)는 전달받은 데이터를 네이티브 서비스 서버(500b)에게 전달할 수 있다(⑥). 네이티브 서비스 서버는 전달받은 데이터를 메인 서버(500a)의 메시지큐로 보낼 수 있다(⑦). 메인 서버(500a)는 메시지큐에 있는 변경된 테이블 데이터를 네이티브 어플리케이션 서버(500c)의 메모리에 업데이트한 후 네이티브 어플리케이션 서버(500c)에게 특정 테이블의 데이터가 변경되었음을 네이티브 어플리케이션(600)들에게 통지할 것을 요청할 수 있다(⑧). 네이티브 어플리케이션 서버(500c)는 API 모듈(700)을 통해 콜백이 등록된 네이티브 어플리케이션(600)들에게 특정 테이블의 데이터가 변경되었음을 통지할 수 있으며(⑨), 통지를 받은(⑩) 네이티브 어플리케이션(600)들은 API 모듈(700)을 통해 변경된 테이블을 조회하여 테이블 데이터를 새롭게 업데이트 할 수 있다.
일 실시예로서, 소스 코드를 이용하여 설명하면, 네이티브 어플리케이션(600)은 API 모듈(700)에서 제공되는 init 함수를 호출할 때 콜백(callback)을 등록해 주면(예를 들어: init("native app" callback);), 어플리케이션 서버(500c)의 테이블 데이터가 변경될 때마다 void callback(int msgType, int arg1, int arg2, void *data) 함수가 호출되도록 설정할 수 있다. 이렇게 되면 네이티브 어플리케이션(600)은 어떤 테이블이 변경되었는지 알게 되며 변경된 테이블을 조회하여 자신이 가지고 있던 테이블 데이터를 갱신하게 된다.
메인 서버(500a)가 네이티브 어플리케이션 서버(500c) 영역의 메모리에 변경된 테이블 데이터를 업데이트할 수 있다. 그리고, 데이터 변경 통지를 받은 네이티브 어플리케이션(600)들은 API 모듈(700)을 통해 네이티브 어플리케이션 서버(500c)에 저장되어 있는 테이블 데이터를 조회하여 네이티브 어플리케이션 서버(500c)가 가지고 있던 테이블 데이터를 갱신할 수 있다.
네이티브 어플리케이션 서버(500c)와 네이티브 어플리케이션(600)간 연결을 위한 통신 방법으로 여러 방법이 존재할 수 있지만 여러 종류의 네이티브 어플리케이션들을 무난하게 연결할 수 있는 방법으로 소켓이 바람직할 수 있으며, 네이티브 어플리케이션(600)들은 네이티브 어플리케이션 서버(500c)와 직접 연결을 할 수 있지만 관리적인 측면 및 연동의 편의성을 위해 API 모듈(700)을 사용하는 것이 바람직할 수 있다.
네이티브 어플리케이션(600)은 API 모듈(.so 라이브러리)을 사용하거나 또는 직접 소켓 라이브러리를 이용하여 네이티브 어플리케이션 서버(500c)와 통신을 할 수 있다. 하지만, 관리적인 측면과 편의성을 위해 API 모듈(700) 사용이 권장될 수 있다.
네이티브 어플리케이션 서버(500c)는 소켓 서버로 동작하고 있고, API 모듈(700)은 소켓 클라이언트로 동작하도록 설정될 수 있다.
네이티브 어플리케이션 서버(500c)와 네이티브 어플리케이션(600)들은 서로 독립된 프로세스로 동작하기 때문에 서로 데이터를 주고받기 위해 상호간 통신을 해야한다. 네이티브 어플리케이션(600)들이 직접 소켓 클라이언트로서 네이티브 어플리케이션 서버(500c)와 통신을 할 수 있지만 편의성을 위해 API 모듈(700)을 라이브러리(.so) 형태로 제공하고 있으며 API 모듈(700) 내부에서 소켓 라이브러리로 이용하여 소켓 통신을 이용할 수 있다.
도 5는 본 발명의 실시 예에 따른 네이티브 어플리케이션(600)이 데이터베이스(100a)의 특정 테이블의 데이터를 조회한 경우 그 결과를 네이티브 어플리케이션(600)에게 전달하기 위한 방법을 보이는 구성도이다.
도 5를 참조하면, 네이티브 어플리케이션(600)은 API 모듈(700)을 통해 특정 테이블의 데이터를 조회할 수 있다(①). 조회 요청을 받은 API 모듈(700)은 네이티브 어플리케이션 서버(500c)에게 요청 사항을 전달할 수 있다(②). 네이티브 어플리케이션 서버(500c)는 요청 사항을 메인 서버(500a)의 메시지큐로 보낼 수 있다(③). 메인 서버(500a)는 자신의 메모리에 존재하고, 네이티브 어플리케이션 서버(500c)로부터 요청받은 테이블 데이터를 네이티브 어플리케이션 서버(500c)에게 보낼 수 있다(④). 네이티브 어플리케이션 서버(500c)는 API 모듈(700)로 테이블 데이터를 보내며(⑤), 네이티브 어플리케이션(600)은 API 모듈(700)을 통해 요청 사항에 대한 결과값을 수신할 수 있다(⑥).
도 6은 본 발명의 실시 예에 따른 네이티브 어플리케이션(600)이 데이터베이스(100a)의 특정 테이블의 데이터를 변경한 경우 그 변경 내용을 자바 어플리케이션(300)과 네이티브 어플리케이션(600)에게 통지하는 방법을 보이는 구성도이다.
도 6을 참조하면, 네이티브 어플리케이션(600)이 API 모듈(700)을 통해 특정 테이블의 데이터 변경을 요청할 수 있다(S601). 변경 요청을 수신한 API 모듈(700)은 네이티브 어플리케이션 서버(500c)로 요청사항을 전달할 수 있다(S602). 네이티브 어플리케이션 서버(500c)는 요청 사항을 메인 서버(500a)의 메시지 큐로 보낼 수 있다(S603). 메인 서버(500a)는 요청 사항을 네이티브 서비스 서버(500b)로 전달할 수 있다(S604). 네이티브 서비스 서버(500b)는 요청사항을 네이티브 서비스 클라이언트(400)로 전달할 수 있다(S605). 네이티브 서비스 클라이언트(400)는 요청사항을 JNI를 이용하여 데이터베이스 관리 서비스(100c)로 전달할 수 있다(S606). 데이터베이스 관리 서비스(100c)는 데이터베이스 관리 모듈(100d)을 통해 요청받은 특정 테이블의 데이터 변경을 시도할 수 있다(S607). 데이터베이스 테이블 관리 모듈(100d)은 안드로이드의 콘텐츠 리졸버(200)를 이용해 요청받은 테이블에 대한 변경을 요청할 수 있다(S608). 안드로이드 콘텐츠 리졸버(200)는 안드로이드의 콘텐츠 프로바이더(100b)로 변경을 요청할 수 있다(S609). 데이터 변경이 완료된 후 자바 어플리케이션(300)들과 데이터베이스 관리 서비스(100c)는 안드로이드의 콘텐츠 옵저버(800)로부터 데이터베이스(100a)의 특정 테이블이 변경되었음을 통보받을 수 있다(S610). 데이터베이스 관리 서비스(100c)는 데이터베이스 테이블 관리모듈(100d)을 통해 변경된 테이블에 대한 데이터 조회를 한 후 그 데이터를 JNI를 이용하여 네이티브 서비스 클라이언트(400)에게 전달할 수 있다(S611). 네이티브 서비스 클라이언트(400)는 전달받은 데이터를 네이티브 서비스 서버(500b)에게 전달할 수 있다(S612). 네이티브 서비스 서버는 전달받은 데이터를 메인 서버(500a)의 메시지큐로 보낼 수 있다(S613). 메인 서버(500a)는 메시지큐에 있는 변경된 테이블 데이터를 자신의 메모리에 업데이트한 후 네이티브 어플리케이션 서버(500c)에게 특정 테이블의 데이터가 변경되었음을 네이티브 어플리케이션(600)들에게 통지할 것을 요청할 수 있다(S614). 네이티브 어플리케이션 서버(500c)는 API 모듈(700)을 통해 콜백이 등록된 네이티브 어플리케이션(600)들에게 특정 테이블의 데이터가 변경되었음을 통지할 수 있으며(S615), 통지를 받은(S616) 네이티브 어플리케이션들은 API모듈(700)을 통해 변경된 테이블을 조회하여 테이블 데이터를 새로 업데이트 한 후 변경된 데이터에 따라 알맞은 동작을 수행하게 된다.
상기 방법은 특정 실시예들을 통하여 설명되었지만, 상기 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 케리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 명세서에서는 본 발명이 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 당업자가 이해할 수 있는 본 발명의 정신 및 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
10: 자바 어플리케이션 10a: 데이터베이스
10b: 콘텐츠 프로바이더 20: 콘텐츠 리졸버
30: 자바 어플리케이션 40: 콘텐츠 옵저버
100: 데이터베이스 관리 어플리케이션 100a: 데이터베이스
100b: 콘텐츠 프로바이더 100c: 데이터베이스 관리 서비스
100d: 데이터베이스 테이블 관리 모듈 200: 콘텐츠 리졸버
300: 자바 어플리케이션 400: 네이티브 서비스 클라이언트
500: 네이티브 서비스 500a: 메인 서버
500b: 네이티브 서비스 서버 500c: 네이티브 어플리케이션 서버
600: 네이티브 어플리케이션 700: API 모듈
800: 콘텐츠 옵저버

Claims (10)

  1. 삭제
  2. 어플리케이션 데이터베이스 공유 장치로서,
    자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 저장하는 데이터베이스를 관리하는 데이터베이스 관리 어플리케이션과,
    상기 네이티브 어플리케이션의 요청 사항을 상기 데이터베이스 관리 어플리케이션으로 전달하며, 상기 데이터베이스 관리 어플리케이션으로부터의 데이터베이스 변경 통지를 수신하는 네이티브 서비스와,
    상기 데이터베이스 관리 어플리케이션 및 상기 네이티브 서비스 사이에 통신을 수행하기 위한 네이티브 서비스 클라이언트를 포함하는, 데이터베이스 공유 장치.
  3. 제2항에 있어서,
    상기 데이터베이스 관리 어플리케이션은,
    상기 데이터베이스의 초기화, 백업 및 업그레이드를 수행하며, 상기 데이터베이스가 포함하는 테이블에 대해 조회, 변경, 추가 또는 삭제를 수행하기 위한 데이터베이스 테이블 관리 모듈과,
    상기 데이터베이스 테이블 관리 모듈을 이용하여 상기 데이터베이스에 대한 조회 및 변경을 수행하며, 상기 데이터베이스가 변경된 경우 이를 감지하여 변경 내용을 상기 네이티브 서비스 클라이언트로 전송하고, 상기 네이티브 서비스 클라이언트로부터의 요청 사항을 수신하여 처리하는 데이터베이스 관리 서비스를 포함하는, 데이터베이스 공유 장치.
  4. 제2항에 있어서,
    상기 네이티브 서비스는,
    상기 네이티브 서비스 클라이언트로부터 요청 사항을 수신하여 처리하는 네이티브 서비스 서버와,
    상기 네이티브 어플리케이션으로부터 요청 사항을 수신하여 처리하는 네이티브 어플리케이션 서버와,
    상기 네이티브 서비스 서버와 상기 네이티브 어플리케이션 서버를 기동시키며, 상기 네이티브 서비스 서버와 상기 네이티브 어플리케이션 서버간 통신을 위한 메시지 큐를 제공하는 메인 서버를 포함하는, 데이터베이스 공유 장치.
  5. 제4항에 있어서,
    상기 네이티브 어플리케이션이 상기 네이티브 어플리케이션 서버에 접근하기 위한, API(Application Programmable Interface) 모듈을 더 포함하는, 데이터베이스 공유 장치.
  6. 제5항에 있어서,
    상기 API모듈은,
    상기 데이터베이스의 변경된 테이블을 알려주기 위한 콜백(callback)을 포함하는, 데이터베이스 공유 장치.
  7. 제3항에 있어서,
    상기 데이터베이스 테이블 관리 모듈은,
    상기 데이터베이스의 초기화, 백업 및 업그레이드를 위한 인터페이스를 포함하며, 상기 데이터베이스가 포함하는 테이블에 대해 조회, 변경, 추가 및 삭제 기능을 수행하기 위한 인터페이스를 상기 데이터베이스 관리 서비스에 제공하며, 다른 어플리케이션에 의해 상기 데이터베이스 변경 발생 시 상기 데이터베이스 관리 서비스에게 통보하는 기능을 수행하는, 데이터베이스 공유 장치.
  8. 제2항에 있어서,
    상기 데이터베이스 관리 어플리케이션이 포함하는 데이터베이스뿐만 아니라 안드로이드 시스템의 콘텐츠 프로바이더(contents provider)를 제공하는 자바 어플리케이션의 데이터베이스에 접근하여 데이터를 요청하는, 데이터베이스 공유 장치.
  9. 삭제
  10. 어플리케이션 데이터베이스 공유 방법으로서,
    데이터베이스 관리 어플리케이션에 의해서, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하는 단계와,
    상기 데이터베이스 관리 어플리케이션에 의해서, 상기 데이터베이스에 저장된 데이터 변경을 감지하는 단계와,
    상기 데이터베이스 관리 어플리케이션에 의해서, 상기 데이터 변경 감지에 기초하여 데이터베이스 변경 통지를 전송하는 단계와,
    상기 데이터베이스 관리 어플리케이션에 의해서, 상기 데이터베이스에 저장된 데이터의 변경 여부에 대한 요청이 있을 경우 상기 데이터베이스 변경 통지를 전송하는 단계를 포함하는, 데이터베이스 공유 방법.
KR1020130156341A 2013-12-16 2013-12-16 어플리케이션 데이터베이스 공유 방법 및 장치 KR101868173B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130156341A KR101868173B1 (ko) 2013-12-16 2013-12-16 어플리케이션 데이터베이스 공유 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130156341A KR101868173B1 (ko) 2013-12-16 2013-12-16 어플리케이션 데이터베이스 공유 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150069793A KR20150069793A (ko) 2015-06-24
KR101868173B1 true KR101868173B1 (ko) 2018-06-15

Family

ID=53516826

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130156341A KR101868173B1 (ko) 2013-12-16 2013-12-16 어플리케이션 데이터베이스 공유 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101868173B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230059631A (ko) * 2021-10-26 2023-05-03 한화비전 주식회사 복수의 애플리케이션들 사이에서 데이터 통신을 수행하기 위한 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070097819A (ko) * 2006-03-29 2007-10-05 (주)닥터소프트 어플리케이션 공유 서비스 시스템과 어플리케이션 공유서비스를 위한 어플리케이션 제공자측 클라이언트 처리모듈및 어플리케이션 공유 서비스를 위한 어플리케이션이용자측 클라이언트 처리모듈

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3630697B2 (ja) * 1992-03-24 2005-03-16 キヤノン株式会社 データ管理システム及びその方法
KR101330559B1 (ko) 2007-01-26 2013-11-18 에스케이커뮤니케이션즈 주식회사 자바스크립트기반 웹-클라이언트 어플리케이션 프레임워크 장치와 상기 프레임워크 장치를 이용한 웹 컨텐츠 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체
KR20100087860A (ko) * 2009-01-29 2010-08-06 주식회사 로코드 모바일 웹 어플리케이션 프레임웍, 모바일 단말 및 저장매체
KR101117165B1 (ko) * 2010-05-28 2012-03-07 단국대학교 산학협력단 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛
KR101460787B1 (ko) * 2011-10-04 2014-11-14 주식회사 오비고 스마트폰에서 구동되는 홈 어플리케이션 실행 방법, 시스템, 유저 인터페이스 프레임워크, 및 컴퓨터 판독 가능한 기록 매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070097819A (ko) * 2006-03-29 2007-10-05 (주)닥터소프트 어플리케이션 공유 서비스 시스템과 어플리케이션 공유서비스를 위한 어플리케이션 제공자측 클라이언트 처리모듈및 어플리케이션 공유 서비스를 위한 어플리케이션이용자측 클라이언트 처리모듈

Also Published As

Publication number Publication date
KR20150069793A (ko) 2015-06-24

Similar Documents

Publication Publication Date Title
US10244058B2 (en) Extending functionality of applications
US10515058B2 (en) Unified file and object data storage
US7571208B2 (en) Creating proxies from service description metadata at runtime
EP2284725A1 (en) Client, brokerage server and method for providing cloud storage
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
KR101602099B1 (ko) 사물인터넷에서 레스트 기반의 서비스 연동 시스템 및 그 방법
US8387039B2 (en) System and method for customized provisioning of application content
US20020046304A1 (en) Dynamic class loading
US9128886B2 (en) Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium
CN111367685B (zh) 接口调用的方法及装置、计算机设备、存储介质
CN112835632B (zh) 一种端能力的调用方法、设备和计算机存储介质
KR101663883B1 (ko) 기상 환경 위성영상처리 장치 및 시스템, 및 이를 이용한 방법
US8127271B2 (en) Method and system for accessing a resource implemented in a computer network
KR101868173B1 (ko) 어플리케이션 데이터베이스 공유 방법 및 장치
US20140297762A1 (en) Method and system for timezone aware application programming interface
CN111581576A (zh) 基于微服务的开发处理方法、装置及存储介质
US11831932B2 (en) System and method for client side compression in a content management environment
US9497601B1 (en) Accessing textsites using text messaging service
US7792921B2 (en) Metadata endpoint for a generic service
EP4000239B1 (en) 3rd generation partnership project (3gpp) framework for live uplink streaming (flus) sink capabilities determination
KR100692101B1 (ko) 원격지의 파일을 전송하는 파일 서비스 시스템 및 그서비스 방법
US9052973B2 (en) Inter-process communication mechanism
Kim et al. The spatial data server based on open gis standards in heterogeneous distributed environment
US11811878B1 (en) Session manager providing bidirectional data transport
CN111953718A (zh) 一种页面调试方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right