KR20150069793A - Method and apparatus for sharing application database - Google Patents

Method and apparatus for sharing application database Download PDF

Info

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

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/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism

Abstract

The present invention relates to a method and an apparatus for sharing a database between applications which are created in different codes. The apparatus for sharing an application database stores data used by a java applications and a native application; detects changes of the stored data; and transmits, upon detection of the stored data, a notification on changes of database based on the detected data changes.

Description

어플리케이션 데이터베이스 공유 방법 및 장치{METHOD AND APPARATUS FOR SHARING APPLICATION DATABASE}[0001] METHOD AND APPARATUS FOR SHARING APPLICATION DATABASE [0002]

본 발명은 이동통신 어플리케이션 분야에 관한 것으로, 특히 서로 다른 코드로 작성된 어플리케이션간에 데이터베이스를 공유할 수 있는 방법 및 장치에 관한 것이다.Field of the Invention [0002] The present invention relates to a mobile communication application field, and more particularly, to a method and apparatus for sharing a database between applications written in different codes.

통신기술이 발달하고, 사용자의 필요에 따라서 이동 단말기의 사양은 점차 높아지고, 이동 통신사는 종래에 제공하지 않았던 다양한 서비스를 제공하고 있다. 예컨대, 종래에는 이동 단말기를 이용하여 음성 통화하거나 단문메시지를 전송하는 것만이 가능하였다면, 최근에는 영상 통화를 하거나 카메라를 조작하여 사진/동영상을 촬영하거나 DMB(Digital Multimedia Broadcasting)를 시청하거나 무선 인터넷을 이용할 수도 있게 되었다.[0004] 2. Description of the Related Art [0005] With the development of communication technologies, specifications of mobile terminals are gradually increasing according to the needs of users, and mobile communication companies provide various services that have not been provided in the past. For example, in the past, if it is only possible to make a voice call or send a short message using a mobile terminal, recently, it is possible to make a video call or operate a camera to take pictures or videos, watch DMB (Digital Multimedia Broadcasting) It is also possible to use it.

이동 단말기에는 다양한 어플리케이션(application)이 탑재되는데, 어플리케이션은 구현 방식에 따라 네이티브 어플리케이션(native application)과 자바 어플리케이션(java application)으로 구분할 수 있다.Various applications are loaded in the mobile terminal, and the application can be classified into a native application and a java application according to the implementation method.

네이티브 어플리케이션이란, C 또는 C++ 등의 네이티브 코드로 작성되어 컴파일된 소프트웨어 로직(softwarelogic){사용자 인터페이스(User Interface: UI)에 대응되는 사용자 인터페이스 로직을 포함} 및 데이터(data) 등이 어플리케이션에 포함되어, 실행시 이동 단말기의 플랫폼에 기반하여 바로 실행되는 어플리케이션을 의미한다.The native application includes software logic (including user interface logic corresponding to a user interface (UI)) and data written and compiled in native code such as C or C ++ Refers to an application that is executed immediately based on the platform of the mobile terminal at the time of execution.

자바 어플리케이션이란, 웹(Web) 기반의 HTML, JS(JavaScript: 자바스크립트), CSS(Cascading Style Sheets) 등의 웹 코드로 작성된 어플리케이션으로서, 이동 단말기에서 실행 시에 브라우저 엔진(browser engine)의 해석을 통해 실행될 수 있는 어플리케이션을 의미한다. 브라우저 엔진(browser engine)의 해석 과정은 웹서핑을 위한 인터넷 브라우저가 웹 서버로부터 전송받은 웹 코드로 된 웹 페이지를 해석하여 보여주는 과정과 유사하다. 자바 어플리케이션의 실행 중 웹 코드로 정의된 사항에 따라 필요한 웹 코드로 작성된 데이터 또는 이미지 등의 데이터를 웹 서버로부터 전송받아 해석하여 보여주는 것도 가능하다.A Java application is an application written in Web code such as Web-based HTML, JS (JavaScript: JavaScript), and CSS (Cascading Style Sheets) ≪ / RTI > The process of interpreting the browser engine is similar to the process of interpreting and displaying a web page in web code received from a web server by a web browser for web surfing. It is also possible to transmit data such as data or images written in necessary web code from the web server according to the definition of the web code during the execution of the Java application, and to interpret the data.

네이티브 어플리케이션은 개발이 어렵고 사용자의 의지에 따른 변형(확장)이 힘들기 때문에, 근래에는 웹 기반의 언어로 구현된 자바 어플리케이션을 실행할 수 있는 이동 단말기 플랫폼이 개발되고 있다. 한편, 자바 어플리케이션은 네이티브 어플리케이션에 비해 개발이 쉽고, 저렴한 비용으로 구현가능하며, 관리가 용이하고, 확장성이 뛰어나다는 장점이 있다.Since a native application is difficult to develop and difficult to be modified (extended) according to a user's will, a mobile terminal platform capable of executing a Java application implemented in a web-based language is being developed. On the other hand, the Java application is advantageous in that it is easy to develop, can be implemented at a low cost, is easy to manage, and has excellent scalability as compared with a native application.

도 1은 안드로이드 시스템에서 자바 어플리케이션들 간 동일 데이터베이스를 공유하는 방법을 보여주는 도면이다. 안드로이드 시스템에서 자바 어플리케이션(10)은 데이터를 저장하기 위해 데이터베이스(10a)를 사용하며, 기본적으로 데이터베이스(10a)는 데이터를 저장한 자바 어플리케이션(10)만이 접근 가능하기 때문에 타 자바 어플리케이션(30)들이 접근할 수 없는 구조로 되어 있다. 타 자바 어플리케이션(30)들이 데이터베이스(10a)에 접근하도록 하기 위해서 데이터베이스(10a)를 소유한 자바 어플리케이션(10)은 콘텐츠 프로바이더(10b)를 제공하고 타 자바 어플리케이션(30)들은 콘텐츠 리졸버(20)를 이용하여 데이터베이스(10a)에 접근이 가능하다. 또한 콘텐츠 옵저버(40)를 통해 데이터베이스(10a)가 변경된 경우 데이터베이스의 어떤 테이블이 변경되었는지 통지받을 수 있게 됨으로써 데이터베이스(10a)를 이용하는 모든 자바 어플리케이션(30) 들은 동일한 데이터베이스(10a)의 공유가 가능하다.1 is a diagram illustrating a method of sharing the same database between Java applications in an Android system. In the Android system, the Java application 10 uses the database 10a to store data. Basically, the database 10a is accessible only to the Java application 10 storing the data, It is structured inaccessible. The Java application 10 possessing the database 10a provides the content provider 10b and other Java applications 30 provide the content provider 10b in order to allow other Java applications 30 to access the database 10a. It is possible to access the database 10a. Also, when the database 10a is changed through the content observer 40, all the Java applications 30 using the database 10a can be shared with the same database 10a by being able to be notified of which table in the database has changed .

종래기술에 의하면, 데이터베이스를 공유해야 하는 C/C++로 구현된 네이티브 어플리케이션들은 안드로이드 시스템의 어플리케이션 프레임워크를 이용하지 않고 데이터베이스(10a)에 직접 접근할 수 있으나, 이 경우 네이티브 어플리케이션들에 의해 데이터베이스가 변경되는 경우 자바 어플리케이션(30)들은 실시간으로 변경 내용을 알 수 없으며, 반대로 자바 어플리케이션(30)들에 의해 변경된 데이터베이스는 실시간으로 네이티브 어플리케이션들이 알 수 없어 동일 데이터베이스(10a)에 대한 공유가 불가능한 문제점이 있다.According to the related art, native applications implemented in C / C ++ that need to share a database can directly access the database 10a without using the application framework of the Android system, but in this case, There is a problem that the Java applications 30 can not know the change contents in real time and conversely the databases changed by the Java applications 30 can not be shared with the same database 10a because the native applications can not know in real time .

이로 인해 동일 데이터베이스(10a)를 공유해야 하는 모든 어플리케이션들을 자바로만 개발을 해야만 하고, 기존에 C/C++로 개발된 네이티브 어플리케이션들을 재활용할 수 없게 되며, 소정 성능을 요구하는 어플리케이션도 자바로만 개발을 해야 하는 문제점이 있다. 또한 안드로이드를 이용한 어플리케이션 개발시 사용할 수 있는 프로그램 언어 선택에 있어서도 제약을 가져올 수 있는 문제점이 있다.As a result, all applications that need to share the same database 10a must be developed only in Java, and native applications developed in C / C ++ can not be reused, and applications requiring a certain performance need to be developed only in Java . In addition, there is a problem in that there is a restriction in selecting a programming language that can be used when developing an application using Android.

한국공개특허공보 제10-2008-0070337호 (2008.07.30. 공개)Korean Patent Publication No. 10-2008-0070337 (published on July 30, 2008)

본 발명은 서로 다른 코드로 작성된 어플리케이션간에 데이터베이스를 공유할 수 있는 방법 및 장치를 제공한다.The present invention provides a method and apparatus for sharing a database between applications written in different codes.

본 발명의 어플리케이션 데이터베이스 공유 장치는, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하고, 상기 데이터베이스 변경 발생시 상기 네이티브 어플리케이션에 통지하는, 데이터베이스 관리 어플리케이션을 포함한다.The application database sharing apparatus of the present invention includes a database management application that stores data used by a Java application and a native application in a database and notifies the native application when the database change occurs.

본 발명의 어플리케이션 데이터베이스 공유 장치는, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 저장하는 데이터베이스를 관리하는, 데이터베이스 관리 어플리케이션과, 상기 네이티브 어플리케이션의 요청 사항을 상기 데이터베이스 관리 어플리케이션으로 전달하며, 상기 데이터베이스 관리 어플리케이션으로부터의 데이터베이스 변경 통지를 수신하는, 네이티브 서비스와, 상기 데이터베이스 관리 어플리케이션 및 상기 네이티브 서비스 사이에 통신을 수행하기 위한, 네이티브 서비스 클라이언트를 포함한다.The application database sharing apparatus of the present invention includes: a database management application for managing a database for storing data used by a Java application and a native application; and a database management application for managing the request of the native application, And receiving a database change notification from the database management application, and a native service client for performing communications between the database management application and the native service.

또한 본 발명의 어플리케이션 데이터베이스 공유 방법은, 자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하는 단계와, 상기 데이터베이스에 저장된 데이터 변경을 감지하는 단계와, 상기 데이터 변경 감지에 기초하여 데이터베이스 변경 통지를 전송하는 단계를 포함한다.According to another aspect of the present invention, there is provided an application database sharing method including storing data used by a Java application and a native application in a database, detecting a data change stored in the database, And sending a database change notification based on the detection.

본 발명에 따르면, 자바 어플리케이션(Java Application)과 C/C++로 구현된 네이티브(Native) 어플리케이션이 동일 데이터베이스를 실시간으로 공유할 수 있게 됨으로써, 신규로 개발해야 하는 어플리케이션을 자바로만 개발할 필요가 없으며, 기존에 C/C++로 개발된 어플리케이션들을 포팅하여 안드로이드의 데이터베이스 시스템을 쉽게 사용할 수 있는 이점이 있다. 또한 안드로이드의 콘텐츠 프로바이더를 제공하는 기존의 안드로이드 자바 어플리케이션의 데이터베이스까지 C/C++로 구현된 네이티브 어플리케이션들이 실시간으로 공유할 수 있다.According to the present invention, since a Java application and a native application implemented in C / C ++ can share the same database in real time, there is no need to develop a new application only in Java, And C / C ++ to port the applications developed in C / C ++ to easily use the Android database system. In addition, native applications implemented in C / C ++ can be shared in real time, from databases of existing Android Java applications that provide content providers for Android.

도 1은 안드로이드 시스템에서 자바 어플리케이션들 간 동일 데이터베이스를 공유하는 방법을 보이는 예시도.
도 2는 본 발명의 실시예에 따른 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법을 보이는 구성도.
도 3은 본 발명의 실시예에 따른 데이터베이스 관리 어플리케이션과 네이티브 서비스의 초기화 과정을 나타내는 예시도.
도 4는 본 발명의 실시예에 따른 자바 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 변경한 경우 변경 내용을 자바 어플리케이션과 네이티브 어플리케이션에게 통지하는 방법을 보이는 구성도.
도 5는 본 발명의 실시 예에 따른 네이티브 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 조회한 경우 그 결과를 네이티브 어플리케이션에게 전달하기 위한 방법을 보이는 구성도.
도 6은 본 발명의 실시 예에 따른 네이티브 어플리케이션이 데이터베이스의 특정 테이블의 데이터를 변경한 경우 그 변경 내용을 자바 어플리케이션과 네이티브 어플리케이션에게 통지하는 방법을 보이는 구성도.
FIG. 1 is an exemplary view showing a method of sharing the same database between Java applications in an Android system; FIG.
2 is a block diagram illustrating a method for sharing a real-time database between Java applications and native applications according to an embodiment of the present invention.
3 is a diagram illustrating an initialization process of a database management application and a native service according to an embodiment of the present invention;
4 is a diagram illustrating a method of notifying a Java application and a native application of a change in a data of a specific table of a database according to an embodiment of the present invention.
5 is a configuration view showing a method for transmitting a result of a native application according to an embodiment of the present invention to a native application when data of a specific table of the database is looked up.
FIG. 6 is a diagram showing a method of notifying a Java application and a native application of a change in data of a specific table of a database, when a native application according to an embodiment of the present invention changes data.

이하 첨부된 도면을 참조하여 본 발명의 실시예들에 대해 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, well-known functions or constructions will not be described in detail if they obscure the subject matter of the present invention.

본 발명은 안드로이드(Android)의 어플리케이션 프레임워크(Application Framework)를 이용한 자바 어플리케이션(Java Application)들과 C/C++로 구현된 네이티브 어플리케이션들간 실시간 데이터베이스 공유방법에 대한 것으로 안드로이드 어플리케이션 프레임워크 대한 자세한 설명은 생략한다.The present invention relates to a method for real-time database sharing between Java applications using Android's application framework and native applications implemented in C / C ++, and a detailed description of the Android application framework is omitted. do.

도 2는 본 발명의 실시예에 따른 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법을 보이는 구성도이다. 2 is a block diagram illustrating a method for sharing a real-time database between Java applications and native applications according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 실시예에 따른 안드로이드에서 자바 어플리케이션들과 네이티브 어플리케이션들간 실시간 데이터베이스 공유 방법은 데이터베이스 관리 어플리케이션(100), 콘텐츠 리졸버(content resolver, 200), 자바 어플리케이션(300), 네이티브 서비스 클라이언트(400), 네이티브 서비스(500), 네이티브 어플리케이션(600), API(Application Programmable Interface) 모듈(700) 및 콘텐츠 옵저버(content observer, 800)를 포함할 수 있다.Referring to FIG. 2, a real-time database sharing method between Java applications and native applications in the Android according to an embodiment of the present invention includes a database management application 100, a content resolver 200, a Java application 300, A service client 400, a native service 500, a native application 600, an API (Application Programmable Interface) module 700, and a content observer 800.

데이터베이스 관리 어플리케이션(100)은 자바 어플리케이션(300)들과 네이티브 어플리케이션(600)들이 사용하는 모든 데이터를 포함하는 데이터베이스(100a)를 포함할 수 있다. 각각의 자바 어플리케이션(300)들과 네이티브 어플리케이션(600)들이 자신의 데이터를 각각 가지고 있을 수 있지만 데이터베이스의 관리 측면에서 집중화 및 안정화를 위해 데이터베이스 관리 어플리케이션(100)이 모든 데이터를 가지고 데이터베이스 초기화, 백업 또는 업그레이드 기능을 수행하며, 네이티브 어플리케이션(600)들로부터의 데이터베이스 접근요청을 수행하며, 데이터베이스 변경 발생시 이를 네이티브 어플리케이션(600)들에게 통지하는 기능을 수행할 수 있다.The database management application 100 may include a database 100a including all the data used by the Java applications 300 and the native applications 600. [ Each Java application 300 and native application 600 may have its own data, but for centralization and stabilization in terms of management of the database, the database management application 100 may have all data to initialize, Performs an upgrade function, performs a database access request from the native applications 600, and notifies the native applications 600 of the change in the database.

각각의 자바 어플리케이션(300)들은 안드로이드 어플리케이션 프레임워크에서 제공되는 콘텐츠 리졸버(200)와 콘텐츠 옵저버(800)를 이용하여 데이터베이스 관리 어플리케이션(100)의 데이터베이스(100a)에 접근할 수 있으며, 데이터베이스(100a) 변경 발생시 콘텐츠 옵저버(800)에 의해 데이터베이스(100a)내의 어떤 테이블이 변경되었는지 통보를 받을 수 있으며, 통보를 받은 자바 어플리케이션(300)들은 데이터베이스(100a)내의 변경된 테이블을 조회한 후 변경된 데이터에 따라 알맞은 동작을 수행할 수 있다.Each of the Java applications 300 can access the database 100a of the database management application 100 using the content resolver 200 and the content observer 800 provided in the Android application framework, Upon occurrence of a change, the content observer 800 can be informed of which table in the database 100a has been changed. After receiving the notification, the notified Java applications 300 query the changed table in the database 100a, Operation can be performed.

네이티브 어플리케이션(600)들은 안드로이드의 어플리케이션 프레임워크를 이용할 수 없기 때문에 본 실시예에 포함된 API 모듈(700)을 이용하여 자바 어플리케이션(300)과 동일하게 동작을 수행할 수 있다.Since the native application 600 can not use the application framework of the Android, the native application 600 can perform the same operation as the Java application 300 using the API module 700 included in the present embodiment.

네이티브 어플리케이션(600)은 안드로이드 빌드 시스템(bionic library)에서 빌드된 네이티브 어플리케이션 및 순수 리눅스(glic)에서 빌드된 네이티브 어플리케이션으로 분류할 수 있다. 안드로이드 빌드 시스템(bionic library)에서 빌드된 네이티브 어플리케이션은 안드로이드의 LIBRARIES 계층(layer)에서 제공되는 기능들은 사용할 수 있으며, 순수 리눅스(glic)에서 빌드된 네이티브 어플리케이션은 LIBRARIES 계층에서 제공되는 기능들을 사용할 수 없다.The native application 600 can be categorized into native applications built on the Android bionic library and native applications built on pure Linux (glic). Native applications built on the Android bool library can use features provided by the LIBRARIES layer of Android, and native applications built on pure linux (glic) can not use the features provided by the LIBRARIES layer .

자바로 구현된 어플리케이션은 안드로이드의 프레임워크 상에서 동작하며 안드로이드의 프레임워크에서 제공되는 기능{예: 콘텐츠 프로바이더(provider), 콘텐츠 리졸버(contents resolver), 데이터베이스 시스템(database system) 등}을 이용하고 있다.An application implemented in Java runs on the Android framework and uses features provided by the Android framework (eg, content provider, content resolver, database system, etc.) .

네이티브 서비스 클라이언트(400)는 데이터베이스 관리 어플리케이션(100)으로부터의 요청을 네이티브 서비스(500)로 전달하며, 반대로 네이티브 서비스(500)로부터의 요청을 데이터베이스 관리 어플리케이션(100)으로 전달하는 기능을 수행할 수 있다. 데이터베이스 관리 어플리케이션(100)은 자바 영역에 위치하고, 네이티브 서비스 클라이언트(400)는 C/C++영역에 위치하기 때문에 데이터베이스 관리 어플리케이션(100)과 네이티브 서비스 클라이언트(400)간 통신을 위해서는 JNI(Java Native Interface)가 사용될 수 있다.The native service client 400 can perform the function of transferring the request from the database management application 100 to the native service 500 and conversely the request from the native service 500 to the database management application 100 have. Since the database management application 100 is located in the Java area and the native service client 400 is located in the C / C ++ area, a Java Native Interface (JNI) is required for communication between the database management application 100 and the native service client 400. [ Can be used.

자바 어플리케이션을 구현하다 보면 시스템의 자원을 직접 이용해야 하는 경우 C/C++로 구현된 라이브러리를 이용해야 하는데 자바 어플리케이션에서 C/C++로 구현된 네이티브 라이브러리를 바로 사용할 수 없다. 그래서 자바 어플리케이션과 네이티브 어플리케이션을 연결해 주는 JNI가 필요하며 안드로이드 시스템에서는 필수 사항이다.When implementing Java applications, if you need to use system resources directly, you have to use a library implemented in C / C ++. You can not use a native library implemented in C / C ++ directly in a Java application. So you need a JNI to connect your Java and native applications, and it is a requirement for Android systems.

네이티브 서비스(500)는 안드로이드 시스템 부팅 시 시작되는 프로세스로서 네이티브 서비스 클라이언트(400)와의 연동을 위한 네이티브 서비스 서버(500b)와 네이티브 어플리케이션(600)과의 연동을 위한 네이티브 어플리케이션 서버(500c)를 기동시키며, 데이터베이스 관리 어플리케이션(100)이 가지고 있는 데이터를 그대로 캐싱(cashing)하여, 네이티브 어플리케이션(600)으로부터 특정 테이블 데이터 요청 수신 시 요청된 테이블 데이터를 네이티브 어플리케이션(600)으로 전달하는 기능을 수행할 수 있다.The native service 500 starts the native application server 500b for interworking with the native service client 400 and the native application server 500c for interworking with the native application 600, , It can cache the data held by the database management application 100 as it is and transfer the requested table data to the native application 600 when receiving the specific table data request from the native application 600 .

도 3은 본 발명의 실시예에 따른 데이터베이스 관리 어플리케이션(100)과 네이티브 서비스(500)의 초기화 과정을 나타내는 예시도이다. 3 is an exemplary diagram showing an initialization process of the database management application 100 and the native service 500 according to the embodiment of the present invention.

도 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)의 메모리에 복사할 수 있다.Referring to FIG. 3, when the Android is booted, the database management application 100 and the native service 500 are activated, the native service server 500b is activated by the main server 500a, The server 500b may be connected to each other for communication. After that, the database management service 100c initializes the database table management module 100d and can request data about all tables existing in the database 100a (1). At this time, data can be requested by accessing a database (for example, a call log or a telephone directory) of a Java application providing a content provider of the Android system, as well as the database 100a included in the database management application 100. The database table management module 100d may request data for all tables through the content resolver 200 of the Android and return the results to the database management service 100c (6). The database management service 100c can transmit the returned table data to the native service client 400 using JNI (7). The native service client 400 can deliver the received data to the native service server 500b (8). The native service server 500b can transmit the received data to the message queue of the main server 500a (9). The main server 500a stores all the table data in the message queue in its own memory and can use the table from the native application 600 when receiving an inquiry about the table. There can be multiple tables in the database. In one embodiment, 20 tables may exist in the database for developed devices. At the time of booting, all the table data can be stored in the memory of the main server 500a at a time. Thereafter, only the table can be copied to the memory of the main server 500a whenever a change occurs in the specific table.

네이티브 서비스 클라이언트(400)와 네이티브 서비스 서버(500b)간 연결을 위한 통신 방법으로 여러 방법이 존재할 수 있지만, 안드로이드 시스템에서 사용되는 기본 통신 방법인 바인더(binder)를 사용하는 방법이 보다 안정적이고 바람직할 수 있다.There are various communication methods for connection between the native service client 400 and the native service server 500b. However, a method of using a binder that is a basic communication method used in the Android system is more stable and preferable .

바인더는 안드로이드 시스템에서 기본적으로 제공되는 핵심적인 통신 방법으로서, 네이티브 서비스 서버는 바인더 서비스(서버) 역할을 하며 네이티브 서비스 클라이언트(400)는 바인더 클라이언트 역할을 할 수 있다. 네이티브 서비스 클라이언트(400)는 네이티브 서비스 서버와 바인더 연결을 시도하고 연결이 완료된 후 네이티브 서비스 서버에서 방출한(expose) RPC(Remote Procedure Call)를 자신의 함수처럼 호출하여 사용할 수 있다.The binder is a core communication method fundamentally provided in the Android system. The native service server serves as a binder service and the native service client 400 serves as a binder client. The native service client 400 may attempt to connect a binder with the native service server and use RPC (Remote Procedure Call), which is expired from the native service server after the connection is completed, as a function of its own.

도 4는 본 발명의 실시예에 따른 자바 어플리케이션이 데이터베이스(100a)의 특정 테이블의 데이터를 변경한 경우 변경 내용을 자바 어플리케이션(300)과 네이티브 어플리케이션(600)들에게 통지하는 방법을 보이는 구성도이다. 4 is a diagram illustrating a method of notifying a Java application 300 and a native application 600 of a change in a data of a specific table of the database 100a according to an embodiment of the present invention .

도 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)을 통해 변경된 테이블을 조회하여 테이블 데이터를 새롭게 업데이트 할 수 있다.Referring to FIG. 4, the Java application 300 may attempt to change data of a specific table of a database through the content resolver 200 of the Android system (1). The contents resolver 200 of the Android system can change the data stored in the database 100a through the contents provider of the Android system (②, ③). After the data change is completed, the Java applications 300 and the database management service 100c can be notified from the content observer 800 of the Android that the specific table of the database 100a has been changed (4). The database management service 100c may inquire data of the changed table through the database table management module 100d and then transmit the inquired data to the native service client 400 using JNI (5). The native service client 400 can deliver the received data to the native service server 500b (6). The native service server can send the received data to the message queue of the main server 500a (7). The main server 500a updates the changed table data in the message queue to the memory of the native application server 500c and notifies the native application 600 that the data of the specific table has been changed to the native application server 500c (8). The native application server 500c can notify the native applications 600 whose callbacks are registered through the API module 700 that the data of the specific table has been changed (9), and the native application 600 ) Can update the table data by querying the changed table through the API module 700.

일 실시예로서, 소스 코드를 이용하여 설명하면, 네이티브 어플리케이션(600)은 API 모듈(700)에서 제공되는 init 함수를 호출할 때 콜백(callback)을 등록해 주면(예를 들어: init("native app" callback);), 어플리케이션 서버(500c)의 테이블 데이터가 변경될 때마다 void callback(int msgType, int arg1, int arg2, void *data) 함수가 호출되도록 설정할 수 있다. 이렇게 되면 네이티브 어플리케이션(600)은 어떤 테이블이 변경되었는지 알게 되며 변경된 테이블을 조회하여 자신이 가지고 있던 테이블 데이터를 갱신하게 된다.The native application 600 registers a callback (for example, init ("native ") when calling an init function provided by the API module 700 (int msgType, int arg1, int arg2, void * data) function is called whenever the table data of the application server 500c is changed. In this case, the native application 600 knows which table has been changed, and inquires the changed table to update its own table data.

메인 서버(500a)가 네이티브 어플리케이션 서버(500c) 영역의 메모리에 변경된 테이블 데이터를 업데이트할 수 있다. 그리고, 데이터 변경 통지를 받은 네이티브 어플리케이션(600)들은 API 모듈(700)을 통해 네이티브 어플리케이션 서버(500c)에 저장되어 있는 테이블 데이터를 조회하여 네이티브 어플리케이션 서버(500c)가 가지고 있던 테이블 데이터를 갱신할 수 있다.The main server 500a can update the changed table data in the memory of the native application server 500c area. The native applications 600 receiving the data change notification can inquire the table data stored in the native application server 500c through the API module 700 to update the table data held by the native application server 500c have.

네이티브 어플리케이션 서버(500c)와 네이티브 어플리케이션(600)간 연결을 위한 통신 방법으로 여러 방법이 존재할 수 있지만 여러 종류의 네이티브 어플리케이션들을 무난하게 연결할 수 있는 방법으로 소켓이 바람직할 수 있으며, 네이티브 어플리케이션(600)들은 네이티브 어플리케이션 서버(500c)와 직접 연결을 할 수 있지만 관리적인 측면 및 연동의 편의성을 위해 API 모듈(700)을 사용하는 것이 바람직할 수 있다.There are various methods for communication between the native application server 500c and the native application 600. However, a socket may be preferable as a method for seamlessly connecting various types of native applications. In the native application 600, May directly connect to the native application server 500c, but it may be desirable to use the API module 700 for administrative and interoperability convenience.

네이티브 어플리케이션(600)은 API 모듈(.so 라이브러리)을 사용하거나 또는 직접 소켓 라이브러리를 이용하여 네이티브 어플리케이션 서버(500c)와 통신을 할 수 있다. 하지만, 관리적인 측면과 편의성을 위해 API 모듈(700) 사용이 권장될 수 있다.The native application 600 can communicate with the native application server 500c using an API module (.so library) or directly using a socket library. However, the use of the API module 700 may be recommended for administrative and convenience reasons.

네이티브 어플리케이션 서버(500c)는 소켓 서버로 동작하고 있고, API 모듈(700)은 소켓 클라이언트로 동작하도록 설정될 수 있다.The native application server 500c operates as a socket server and the API module 700 can be configured to operate as a socket client.

네이티브 어플리케이션 서버(500c)와 네이티브 어플리케이션(600)들은 서로 독립된 프로세스로 동작하기 때문에 서로 데이터를 주고받기 위해 상호간 통신을 해야한다. 네이티브 어플리케이션(600)들이 직접 소켓 클라이언트로서 네이티브 어플리케이션 서버(500c)와 통신을 할 수 있지만 편의성을 위해 API 모듈(700)을 라이브러리(.so) 형태로 제공하고 있으며 API 모듈(700) 내부에서 소켓 라이브러리로 이용하여 소켓 통신을 이용할 수 있다.Since the native application server 500c and the native applications 600 operate as independent processes, they must communicate with each other to exchange data. The native application 600 can directly communicate with the native application server 500c as a socket client but provides the API module 700 in the form of a library (.so) for convenience, And the socket communication can be used.

도 5는 본 발명의 실시 예에 따른 네이티브 어플리케이션(600)이 데이터베이스(100a)의 특정 테이블의 데이터를 조회한 경우 그 결과를 네이티브 어플리케이션(600)에게 전달하기 위한 방법을 보이는 구성도이다. 5 is a configuration diagram showing a method for transmitting a result of a native application 600 according to an embodiment of the present invention to a native application 600 when data of a specific table of the database 100a is looked up.

도 5를 참조하면, 네이티브 어플리케이션(600)은 API 모듈(700)을 통해 특정 테이블의 데이터를 조회할 수 있다(①). 조회 요청을 받은 API 모듈(700)은 네이티브 어플리케이션 서버(500c)에게 요청 사항을 전달할 수 있다(②). 네이티브 어플리케이션 서버(500c)는 요청 사항을 메인 서버(500a)의 메시지큐로 보낼 수 있다(③). 메인 서버(500a)는 자신의 메모리에 존재하고, 네이티브 어플리케이션 서버(500c)로부터 요청받은 테이블 데이터를 네이티브 어플리케이션 서버(500c)에게 보낼 수 있다(④). 네이티브 어플리케이션 서버(500c)는 API 모듈(700)로 테이블 데이터를 보내며(⑤), 네이티브 어플리케이션(600)은 API 모듈(700)을 통해 요청 사항에 대한 결과값을 수신할 수 있다(⑥).Referring to FIG. 5, the native application 600 can inquire data of a specific table through the API module 700 (1). The API module 700 receiving the inquiry request can deliver the request to the native application server 500c (2). The native application server 500c can send the request to the message queue of the main server 500a (3). The main server 500a exists in its own memory and can send the table data requested from the native application server 500c to the native application server 500c (4). The native application server 500c sends the table data to the API module 700 (step 5), and the native application 600 can receive the result of the request through the API module 700 (step 6).

도 6은 본 발명의 실시 예에 따른 네이티브 어플리케이션(600)이 데이터베이스(100a)의 특정 테이블의 데이터를 변경한 경우 그 변경 내용을 자바 어플리케이션(300)과 네이티브 어플리케이션(600)에게 통지하는 방법을 보이는 구성도이다. 6 shows a method of notifying a Java application 300 and a native application 600 of a change in data of a specific table of the database 100a when the native application 600 according to the embodiment of the present invention changes the data of the specific table of the database 100a FIG.

도 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)을 통해 변경된 테이블을 조회하여 테이블 데이터를 새로 업데이트 한 후 변경된 데이터에 따라 알맞은 동작을 수행하게 된다.Referring to FIG. 6, the native application 600 may request data modification of a specific table through the API module 700 (S601). The API module 700 receiving the change request can forward the request to the native application server 500c (S602). The native application server 500c may send the request to the message queue of the main server 500a (S603). The main server 500a may forward the request to the native service server 500b (S604). The native service server 500b may forward the request to the native service client 400 (S605). The native service client 400 can forward the request to the database management service 100c using the JNI (S606). The database management service 100c may attempt to change the data of the specific table requested through the database management module 100d (S607). The database table management module 100d may request the change of the requested table using the content resolver 200 of the Android (S608). The Android content resolver 200 can request a change to the content provider 100b of the Android (S609). After the data change is completed, the Java applications 300 and the database management service 100c may be informed from the content observer 800 of the Android that the specific table of the database 100a has been changed (S610). The database management service 100c may inquire data about the changed table through the database table management module 100d and may forward the data to the native service client 400 using the JNI (S611). The native service client 400 can forward the received data to the native service server 500b (S612). The native service server can send the received data to the message queue of the main server 500a (S613). The main server 500a may update the changed table data in the message queue to its own memory and then request the native application server 500c to notify the native applications 600 that the data of the specific table has been changed (S614 ). The native application server 500c can notify the native applications 600 whose callbacks have been registered through the API module 700 that the data of the specific table has been changed (S615). If the native application server 500c receives the notification (S616) The changed table is inquired through the module 700 and the table data is newly updated, and an appropriate operation is performed according to the changed data.

상기 방법은 특정 실시예들을 통하여 설명되었지만, 상기 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 케리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.Although the method has been described through particular embodiments, the method may also be implemented as computer readable code on a computer readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like, and may be implemented in the form of a carrier wave (for example, transmission over the Internet) . In addition, the computer-readable recording medium may be distributed over network-connected computer systems so that computer readable codes can be stored and executed in a distributed manner. In addition, functional programs, codes, and code segments for implementing the above embodiments can be easily deduced by programmers of the present invention.

본 명세서에서는 본 발명이 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 당업자가 이해할 수 있는 본 발명의 정신 및 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.Although the present invention has been described in connection with some embodiments thereof, it should be understood that various changes and modifications may be made therein without departing from the spirit and scope of the invention as understood by those skilled in the art. something to do. It is also contemplated that such variations and modifications are within the scope of the claims appended hereto.

10: 자바 어플리케이션 10a: 데이터베이스
10b: 콘텐츠 프로바이더 20: 콘텐츠 리졸버
30: 자바 어플리케이션 40: 콘텐츠 옵저버
100: 데이터베이스 관리 어플리케이션 100a: 데이터베이스
100b: 콘텐츠 프로바이더 100c: 데이터베이스 관리 서비스
100d: 데이터베이스 테이블 관리 모듈 200: 콘텐츠 리졸버
300: 자바 어플리케이션 400: 네이티브 서비스 클라이언트
500: 네이티브 서비스 500a: 메인 서버
500b: 네이티브 서비스 서버 500c: 네이티브 어플리케이션 서버
600: 네이티브 어플리케이션 700: API 모듈
800: 콘텐츠 옵저버
10: Java application 10a: Database
10b: content provider 20: content resolver
30: Java application 40: Content observer
100: Database management application 100a: Database
100b: content provider 100c: database management service
100d: Database table management module 200: Content resolver
300: Java application 400: Native service client
500: native service 500a: main server
500b: Native service server 500c: Native application server
600: native application 700: API module
800: Content observer

Claims (10)

어플리케이션 데이터베이스 공유 장치로서,
자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하고, 상기 데이터베이스 변경 발생시 상기 네이티브 어플리케이션에 통지하는 데이터베이스 관리 어플리케이션을 포함하는, 데이터베이스 공유 장치.
As an application database sharing device,
And a database management application that stores data used by a Java application and a native application in a database and notifies the native application when the database change occurs.
어플리케이션 데이터베이스 공유 장치로서,
자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 저장하는 데이터베이스를 관리하는 데이터베이스 관리 어플리케이션과,
상기 네이티브 어플리케이션의 요청 사항을 상기 데이터베이스 관리 어플리케이션으로 전달하며, 상기 데이터베이스 관리 어플리케이션으로부터의 데이터베이스 변경 통지를 수신하는 네이티브 서비스와,
상기 데이터베이스 관리 어플리케이션 및 상기 네이티브 서비스 사이에 통신을 수행하기 위한 네이티브 서비스 클라이언트를 포함하는, 데이터베이스 공유 장치.
As an application database sharing device,
A database management application that manages a database that stores data used by Java applications and native applications,
A native service for delivering a request for the native application to the database management application and receiving a database change notification from the database management application;
And a native service client for communicating between the database management application and the native service.
제1항 또는 제2항에 있어서,
상기 데이터베이스 관리 어플리케이션은,
상기 데이터베이스의 초기화, 백업 및 업그레이드를 수행하며, 상기 데이터베이스가 포함하는 테이블에 대해 조회, 변경, 추가 또는 삭제를 수행하기 위한 데이터베이스 테이블 관리 모듈과,
백그라운드로 항시 동작하고, 상기 데이터베이스 테이블 관리 모듈을 이용하여 상기 데이터베이스에 대한 조회 및 변경을 수행하며, 상기 데이터베이스가 변경된 경우 이를 감지하여 변경 내용을 상기 네이티브 서비스 클라이언트로 전송하고, 상기 네이티브 서비스 클라이언트로부터의 요청 사항을 수신하여 처리하는 데이터베이스 관리 서비스를 포함하는, 데이터베이스 공유 장치.
3. The method according to claim 1 or 2,
The database management application comprising:
A database table management module for performing initialization, backup, and upgrade of the database, and for performing a lookup, modification, addition, or deletion of a table included in the database;
Wherein the database management module is always in the background and performs inquiry and modification of the database using the database table management module, detects change of the database and transmits the changed contents to the native service client, And a database management service for receiving and processing the request.
제2항에 있어서,
상기 네이티브 서비스는,
상기 네이티브 서비스 클라이언트로부터 요청 사항을 수신하여 처리하는 네이티브 서비스 서버와,
상기 네이티브 어플리케이션으로부터 요청 사항을 수신하여 처리하는 네이티브 어플리케이션 서버와,
상기 네이티브 서비스 서버와 상기 네이티브 어플리케이션 서버를 기동시키며, 상기 네이티브 서비스 서버와 상기 네이티브 어플리케이션 서버간 통신을 위한 메시지 큐를 제공하는 메인 서버를 포함하는, 데이터베이스 공유 장치.
3. The method of claim 2,
The native service includes:
A native service server for receiving and processing requests from the native service client,
A native application server for receiving and processing requests from the native application;
And a main server for activating the native service server and the native application server and providing a message queue for communication between the native service server and the native application server.
제4항에 있어서,
상기 네이티브 어플리케이션이 상기 네이티브 어플리케이션 서버에 접근하기 위한, API(Application Programmable Interface) 모듈을 더 포함하는, 데이터베이스 공유 장치.
5. The method of claim 4,
Further comprising an API (Application Programmable Interface) module for the native application to access the native application server.
제5항에 있어서,
상기 API모듈은,
상기 데이터베이스의 변경된 테이블을 알려주기 위한 콜백(callback)을 포함하는, 데이터베이스 공유 장치.
6. The method of claim 5,
Wherein the API module comprises:
And a callback for informing the changed table of the database.
제3항에 있어서,
상기 데이터베이스 테이블 관리 모듈은,
상기 데이터베이스의 초기화, 백업 및 업그레이드를 위한 인터페이스를 포함하며, 상기 데이터베이스가 포함하는 테이블에 대해 조회, 변경, 추가 및 삭제 기능을 수행하기 위한 인터페이스를 상기 데이터베이스 관리 서비스에 제공하며, 다른 어플리케이션에 의해 상기 데이터베이스 변경 발생 시 상기 데이터베이스 관리 서비스에게 통보하는 기능을 수행하는, 데이터베이스 공유 장치.
The method of claim 3,
Wherein the database table management module comprises:
An interface for initializing, backing up, and upgrading the database, and providing an interface for performing a query, change, add, and delete functions to a table included in the database to the database management service, And notifies the database management service when a database change occurs.
제1항 또는 제2항에 있어서,
상기 데이터베이스 관리 어플리케이션이 포함하는 데이터베이스뿐만 아니라 안드로이드 시스템의 콘텐츠 프로바이더를 제공하는 자바 어플리케이션의 데이터베이스에 접근하여 데이터를 요청하는, 데이터베이스 공유 장치.
3. The method according to claim 1 or 2,
And accesses a database of a Java application providing a content provider of an Android system as well as a database included in the database management application to request data.
어플리케이션 데이터베이스 공유 방법으로서,
자바 어플리케이션(java application) 및 네이티브 어플리케이션(native application)이 사용하는 데이터를 데이터베이스에 저장하는 단계와,
상기 데이터베이스에 저장된 데이터 변경을 감지하는 단계와,
상기 데이터 변경 감지에 기초하여 데이터베이스 변경 통지를 전송하는 단계를 포함하는, 데이터베이스 공유 방법.
An application database sharing method,
Storing data used by a Java application and a native application in a database,
Detecting a change in data stored in the database;
And sending a database change notification based on the data change detection.
제9항에 있어서,
상기 데이터베이스 변경 통지를 전송하는 단계는,
상기 데이터베이스에 저장된 데이터의 변경 여부에 대한 요청이 있을 경우 상기 데이터베이스 변경 통지를 전송하는 단계를 포함하는, 데이터베이스 공유 방법.
10. The method of claim 9,
Wherein the transmitting the database change notification comprises:
And transmitting the database change notification when there is a request to change data stored in the database.
KR1020130156341A 2013-12-16 2013-12-16 Method and apparatus for sharing application database KR101868173B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130156341A KR101868173B1 (en) 2013-12-16 2013-12-16 Method and apparatus for sharing application database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130156341A KR101868173B1 (en) 2013-12-16 2013-12-16 Method and apparatus for sharing application database

Publications (2)

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

Family

ID=53516826

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130156341A KR101868173B1 (en) 2013-12-16 2013-12-16 Method and apparatus for sharing application database

Country Status (1)

Country Link
KR (1) KR101868173B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023075156A1 (en) * 2021-10-26 2023-05-04 한화테크윈 주식회사 Device and method for performing data communication between multiple applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265837A (en) * 1992-03-24 1993-10-15 Canon Inc Data managing system
KR20080070337A (en) 2007-01-26 2008-07-30 에스케이커뮤니케이션즈 주식회사 Java script based web-client application framework, web contents processing method using the framework and computer readable medium processing the method
KR20100087860A (en) * 2009-01-29 2010-08-06 주식회사 로코드 A mobile web application framework, mobile terminal, and, a storage medium
KR20110130611A (en) * 2010-05-28 2011-12-06 야마이아 주식회사 Web platform unit for mobile terminal connectioned web-application program in heterogeneous operating system
KR20130036645A (en) * 2011-10-04 2013-04-12 주식회사 오비고 Method, system and computer-readable recording medium for executing home applicatoin and user interface framework on smart phone

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100777426B1 (en) * 2006-03-29 2007-11-22 (주)닥터소프트 Application joint service system, Client process module for application joint service providers, and Client process module for application joint service users

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265837A (en) * 1992-03-24 1993-10-15 Canon Inc Data managing system
KR20080070337A (en) 2007-01-26 2008-07-30 에스케이커뮤니케이션즈 주식회사 Java script based web-client application framework, web contents processing method using the framework and computer readable medium processing the method
KR20100087860A (en) * 2009-01-29 2010-08-06 주식회사 로코드 A mobile web application framework, mobile terminal, and, a storage medium
KR20110130611A (en) * 2010-05-28 2011-12-06 야마이아 주식회사 Web platform unit for mobile terminal connectioned web-application program in heterogeneous operating system
KR20130036645A (en) * 2011-10-04 2013-04-12 주식회사 오비고 Method, system and computer-readable recording medium for executing home applicatoin and user interface framework on smart phone

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023075156A1 (en) * 2021-10-26 2023-05-04 한화테크윈 주식회사 Device and method for performing data communication between multiple applications

Also Published As

Publication number Publication date
KR101868173B1 (en) 2018-06-15

Similar Documents

Publication Publication Date Title
US10244058B2 (en) Extending functionality of applications
US7571208B2 (en) Creating proxies from service description metadata at runtime
US7509658B2 (en) System and method for adaptable provisioning of generic application content
US20060253548A1 (en) Method and system for hosting and executing a component application
KR101991537B1 (en) Autonomous network streaming
CN103942225A (en) Method and system for invoking resources of Hybrid App client and client
US10033790B2 (en) Method for a connector providing transactional interoperability to multiple messaging providers to multiple application servers using the same implementation
US8387039B2 (en) System and method for customized provisioning of application content
GB2520246A (en) Method for accessing business object resources and machine-to-machine communication environment
US20020046304A1 (en) Dynamic class loading
US9128886B2 (en) Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium
CN112835632B (en) Method and equipment for calling end capability and computer storage medium
US8127271B2 (en) Method and system for accessing a resource implemented in a computer network
KR101663883B1 (en) Image processing system and device of meteorological and environmental satellite, and method using the same
CN114201317A (en) Data transmission method, device, storage medium and electronic equipment
KR101868173B1 (en) Method and apparatus for sharing application database
US20130143611A1 (en) Mobile application using text messaging service protocol or other network protocol requiring a data plan
CN111581576A (en) Development processing method and device based on micro-service and storage medium
CN111953718A (en) Page debugging method and device
US7792921B2 (en) Metadata endpoint for a generic service
EP4000239B1 (en) 3rd generation partnership project (3gpp) framework for live uplink streaming (flus) sink capabilities determination
KR20190015817A (en) Method, Apparatus and System for Monitoring Using Middleware
US9052973B2 (en) Inter-process communication mechanism
Kim et al. The spatial data server based on open gis standards in heterogeneous distributed environment
KR102479595B1 (en) Library Service System

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