KR20190005578A - 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템 - Google Patents

인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템 Download PDF

Info

Publication number
KR20190005578A
KR20190005578A KR1020170086440A KR20170086440A KR20190005578A KR 20190005578 A KR20190005578 A KR 20190005578A KR 1020170086440 A KR1020170086440 A KR 1020170086440A KR 20170086440 A KR20170086440 A KR 20170086440A KR 20190005578 A KR20190005578 A KR 20190005578A
Authority
KR
South Korea
Prior art keywords
data
storage devices
javascript
bunch
query
Prior art date
Application number
KR1020170086440A
Other languages
English (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 KR1020170086440A priority Critical patent/KR20190005578A/ko
Publication of KR20190005578A publication Critical patent/KR20190005578A/ko

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 인메모리 기반의 분산 데이터베이스 관리 시스템 및 방법을 제공한다. 본 발명에 따른 인메모리 기반의 분산 데이터베이스 관리 시스템은 데이터 아이템 (data item)을 저장하는 복수의 저장 장치 및 상기 복수의 저장 장치와 통신하여 상기 복수의 저장 장치를 제어하는 관리 장치를 포함한다.

Description

인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템{SYSTEMT AND METHOD OF MANAGING DISTRIBUTED DATABASE BASED ON INMEMORY}
본 발명은 분산 데이터베이스 관리 방법 및 시스템에 관한 것이다.
데이터베이스는 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말한다. 자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높인다. 데이터베이스는 똑같은 자료를 중복하여 저장하지 않는 통합된 자료이며, 컴퓨터가 액세스하여 처리할 수 있는 저장장치에 수록된 자료이며, 어떤 조직의 기능을 수행하는 데 없어서는 안 되며 존재 목적이 뚜렷하고 유용성 있는 운영 자료이기 때문에 임시로 필요해서 모아 놓은 데이터나 단순한 입출력 자료가 아니며, 한 조직에서 가지는 데이터베이스는 그 조직 내의 모든 사람들이 소유하고 유지하며 이용하는 공동 자료로서 각 사용자는 같은 데이터라 할지라도 각자의 응용 목적에 따라 다르게 사용할 수 있다.
데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니라 데이터베이스를 조작하는 별도의 데이터베이스 관리 시스템 (DBMS: DataBase Management System)이 있다. 즉, 데이터베이스 관리 시스템이란 데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 시스템이다. 이런 데이터베이스 관리 시스템은 데이터베이스를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다. 또한 응용 프로그램들이 데이터베이스에 접근할 수 있는 인터페이스를 제공하고, 장애에 대한 복구 기능, 사용자 권한에 따른 보안성 유지 기능 등을 제공한다.
데이터베이스를 구축할 때 체계화된 구조를 갖추는 것이 필요한데, 이때 데이터베이스 구조를 명시하기 위한 개념들의 집합을 데이터 모델 (data model)이라 한다. 데이터 모델은 데이터베이스의 구조뿐만 아니라 이런 구조에서 허용되는 연산 그리고 이런 구조와 연산에 대한 제약 조건을 포함하는 개념이다. 데이터 모델로는 계층적 데이터 모델, 네트워크형 데이터 모델, 관계형 데이터 모델, 객체 지향형 데이터 모델 등이 있다.
데이터베이스를 구축하고 활용하기 위해 사용하는 언어가 바로 SQL (Structured Query Language)이다. Structured Query Language의 약자가 의미하듯, 이미 정해진 (구조화된) 질의 언어라는 뜻으로서, 일정한 질의 언어로 데이터베이스를 제어할 수 있으므로, 데이터를 매우 쉽게 관리할 수 있다. 데이터베이스에서 쓰이는 언어 중에서 가장 널리 알려지고 많이 사용되고 있으며, SELECT FROM WHERE 구조로 특징지을 수 있는 관계 사상을 기초로 한 대표적 언어이다. SQL은 데이터 정의, 데이터 조작, 제어 기능에 대한 명령을 모두 포함하고 있다. SQL은 데이터를 정의하는데 쓰이는 명령문과 데이터를 삽입 ㅇ 삭제하는 등의 조작에 쓰이는 부분, 그리고 query 명령문 부분과 그 외의 기능을 수행하는 부분들로 이루어져 있다.
NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다. 또, NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 "Not only SQL"로 불리기도 한다.
대량의 데이터를 데이터베이스에 저장하고 관리하는 기술은 계속 꾸준히 발전해왔기 때문에 기존 데이터베이스를 빅 데이터의 저장과 관리에 이용할 수도 있다. 하지만 기존 관계 데이터베이스가 저장하고 관리할 수 있는 범위를 넘어서는 다양한 형태의 대규모 데이터는 새로운 저장 및 관리 기술이 필요하다. 이러한 요구에 따라 빅 데이터 시대에 크게 주목받고 있는 대표적인 기술로 하둡(Hadoop)과 NoSQL(Not Only SQL)이 있다. 이 둘은 특히 비정형 데이터를 관리하는 데 기존 데이터베이스보다 뛰어나다는 평가를 받고 있다.
NoSQL은 관계 데이터 모델과 SQL을 사용하지 않는 데이터베이스 시스템으로, 기존 관계 데이터베이스의 일관성보다는 가용성과 확장성에 중점을 두고 있다. 비정형 데이터의 저장을 위해 유연한 데이터 모델을 지원하고, 관계 데이터베이스와 동일한 데이터 처리가 가능하면서도 더 저렴한 비용으로 분산 처리와 병렬 처리가 가능하다.
데이터베이스에 저장될 수 있는 데이터는 정형 데이터, 반정형 데이터 및 비정형 데이터를 포함할 수 있다. 정형 데이터 (Structured Data)는 고정된 필드에 저장되어 있고 연산이 가능하며, 관계형 데이터베이스에 저장된다. 반정형 데이터 (Semi-Structured Data)는 고정된 필드에 저장되어 있지 않지만, 스키마 또는 메타데이터 등을 포함하고 있고 연산이 불가능하며, 주로 파일에 저장된다. 비정형 데이터 (Unstructured Data)는 구조화되어 있지 않고 연산이 불가능하며, 주로 NoSQL 데이터베이스에 저장된다. 나아가, 정형 데이터는 통계적 분석에 사용될 만한 형태의 가공된 데이터를 의미한다. 비정형 데이터는 사진, 오디오, 비디오, 소셜 미디어 데이터, 로그 파일 등을 포함한다. 반정형 데이터는 비정형 데이터만큼 가공이 안되어 있지는 않지만 통계적 분석에 사용될 만큼의 가공까지는 되어 있지 않은 데이터를 의미한다.
메모리는 크게 램(RAM)과 롬(ROM)으로 나뉜다. RAM은 기억된 정보를 읽어내기도 하고 다른 정보를 기억시킬 수 있는 메모리이다. 'Random Access Memory'의 약자로 전원이 끊어지면 휘발유처럼 기록된 정보도 날아가기 때문에 휘발성 메모리(Volatile Memory)라고 한다. 따라서 RAM은 컴퓨터의 주기억장치, 응용 프로그램의 일시적 로딩(loading), 데이터의 일시적 저장 등에 사용된다. 기존의 자기를 이용한 자기 코어와 달리 TR(트랜지스터)를 집적한 IC를 이용하여 기억소자로 사용하고 읽을 때 순차적이 아닌 랜덤하게 읽을 수 있기 때문에 읽기 또는 쓰기 속도가 매우 빠르다. 기록과 해독의 두 회로가 있어서 정보의 기록, 해독이 가능하고 컴퓨터나 주변 단말기기의 기억장치에 널리 쓰인다. 대표적인 RAM의 종류에는 DRAM, SRAM이 있다.
JSON (JavaScript Object Notation)은 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 형식을 따르지만 언어 독립형 데이터 포맷이다. 즉, 프로그래밍 언어나 플랫폼에 독립적이므로, 구문 분석 및 JSON 데이터 생성을 위한 코드는 C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 수많은 프로그래밍 언어에서 쉽게 이용할 수 있다. JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다. 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.
데이터통신 시스템에서 관리의 대상이 되는 기본적인 정보를 기록한 기본파일(master file)에 대해서 그 내용에 추가, 삭제 및 갱신을 가져오도록 하는 행위(거래)를 트랜잭션이라 한다.
종래의 관계형 데이터베이스 관리 시스템 (relational database management system, RDBMS)은 데이터베이스의 구조를 기술하기 위하여 데이터, 데이터 관계, 데이터 의미, 데이터 제약 조건 등을 정의하는 데이터 모델의 설계가 필요한데, 이러한 데이터 모델의 설계는 복잡하고 정형화되어 있어 데이터베이스의 접근성과 활용도를 오히려 낮추는 문제점이 있다.
종래의 데이터베이스 관리 시스템은 정형 데이터를 기반의 데이터베이스를 사용하는데, 정형 데이터는 데이터베이스를 설계한 기술자에 의해 수집되는 정보의 형태가 정해지므로 한정된 정보 내에서 정보를 검색하고 분석할 수밖에 없는 문제점이 있다.
종래의 데이터베이스 관리 시스템은 SQL (structured query language)를 사용하여 데이터를 조작하고 검색하는데, 이 경우 데이터베이스를 주로 이용하는 웹 개발자들이 데이터베이스에 접근하기 위하여 별도의 언어를 배워야 하는 문제점이 있다.
종래의 데이터베이스 관리 시스템은 데이터를 보조 메모리에 저장하고 필요한 데이터만을 일시적으로 주 메모리인 램 (RAM)에 복사하여 데이터를 처리하는데, 이 경우 데이터 처리 속도가 느리다는 문제점이 있다.
본 발명의 일 실시예에 따른 인메모리 기반의 분산 데이터베이스 관리 시스템은 데이터 아이템 (data item)을 저장하는 복수의 저장 장치 및 상기 복수의 저장 장치와 통신하여 상기 복수의 저장 장치를 제어하는 관리 장치를 포함한다. 여기서, 상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고, 상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 복수의 저장 장치는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리할 수 있다.
바람직하게는, 상기 관리 장치는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 커맨드 라인 인터페이스 유닛 (Command Line Interface), 외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 외부 네트워크 인터페이스 유닛 (External Network Interface), 상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 자바스크립터 해석 유닛 (JavaScript Interpreter), 상기 인메모리 기반의 분산 데이터베이스 관리 시스템의 환경 설정을 관리하는 스토어키퍼 관리 레이어 유닛 (Storekeeper Management Layer), 상기 복수의 저장 장치와 통신을 위한 통신 프로토콜을 관리하는 웨어하우스 인터페이스 레이어 유닛 (Warehouse Interface Layer) 및 상기 복수의 저장 장치와의 네트워크 통신을 관리하는 웨어하우스 통신 레이어 유닛 (Warehouse Communication Layer)을 포함할 수 있다.
바람직하게는, 상기 복수의 저장 장치 중 하나는 상기 관리 장치와의 네트워크 통신을 관리하는 스토어키퍼 통신 레이어 유닛 (Storekeeper Communication Layer), 상기 관리 장치와의 네트워크 통신에 의해 수신하는 쿼리 (query)를 분석하는 쿼리 분석 유닛 (Query Analyzer), 상기 쿼리 내의 자바스크립트를 해석하는 자바스크립트 해석 유닛 (JavaScript Interpreter) 및 상기 쿼리가 나타내는 명령을 수행하는 피지컬 억세스 레이어 유닛 (Physical Access Layer)을 포함할 수 있다.
바람직하게는, 상기 관리 장치는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색할 수 있다.
본 발명의 다른 일 실시예에 따른 인메모리 기반의 분산 데이터베이스 관리 방법은 데이터 아이템 (data item)을 복수의 저장 장치에 저장하는 단계 및 상기 복수의 저장 장치를 제어하는 단계를 포함한다. 여기서, 상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고, 상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 저장하는 단계는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리할 수 있다.
바람직하게는, 상기 제어하는 단계는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 단계, 외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 단계, 상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 단계 및 상기 해석된 자바스크립트 명령을 상기 복수의 저장 장치로 네트워크 통신을 통해 전송하는 단계를 포함할 수 있다.
바람직하게는, 상기 저장하는 단계는 상기 관리 장치로부터 쿼리 (query)를 네트워크 통신을 통해 수신하는 단계, 상기 수신한 쿼리를 분석하는 단계, 상기 쿼리 내의 자바스크립트 명령을 해석하는 단계 및 상기 자바스크립트 명령을 수행하는 단계를 포함할 수 있다.
바람직하게는, 상기 제어하는 단계는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색할 수 있다.
본 발명은 데이터 관계가 느슨한 데이터 모델을 사용함으로써 자유도가 높은 데이터베이스를 제공한다.
본 발명은 반정형 데이터를 기반으로 함으로써 정보의 형식에 구애없이 자유롭게 정보를 검색할 수 있는 데이터베이스를 제공한다.
본 발명은 자바스크립트를 쿼리 언어를 사용함으로써 웹이나 어플리케이션에서 쉽게 접근할 수 있는 데이터베이스를 제공한다.
본 발명은 모든 데이터를 주 메모리인 램에 저장하여 처리함으로써 빠른 데이터 처리 속도를 제공한다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 스토어키퍼의 구성 및 웨어하우스의 구성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 데이터 분류를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템이 제공하는 자바스크립트 API를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 사용 모델을 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터베이스 관리 방법을 나타낸 도면이다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 구성을 나타낸 도면이다.
본 발명의 일 실시예에 따른 인메모리 기반의 분산 데이터베이스 관리 시스템 (1010)은 데이터 아이템 (data item)을 저장하는 복수의 저장 장치 (1020) 및 상기 복수의 저장 장치와 통신하여 상기 복수의 저장 장치를 제어하는 관리 장치 (1030)를 포함한다. 여기서, 상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고, 상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 복수의 저장 장치는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리할 수 있다. 여기서, 저장 장치는 웨어하우스를 의미하고, 관리 장치는 스토어키퍼를 의미한다.
본 발명의 다른 일 실시예에 따르면, 상기 관리 장치는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 커맨드 라인 인터페이스 유닛 (Command Line Interface), 외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 외부 네트워크 인터페이스 유닛 (External Network Interface), 상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 자바스크립터 해석 유닛 (JavaScript Interpreter), 상기 인메모리 기반의 분산 데이터베이스 관리 시스템의 환경 설정을 관리하는 스토어키퍼 관리 레이어 유닛 (Storekeeper Management Layer), 상기 복수의 저장 장치와 통신을 위한 통신 프로토콜을 관리하는 웨어하우스 인터페이스 레이어 유닛 (Warehouse Interface Layer) 및 상기 복수의 저장 장치와의 네트워크 통신을 관리하는 웨어하우스 통신 레이어 유닛 (Warehouse Communication Layer)을 포함할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 복수의 저장 장치 중 하나는 상기 관리 장치와의 네트워크 통신을 관리하는 스토어키퍼 통신 레이어 유닛 (Storekeeper Communication Layer), 상기 관리 장치와의 네트워크 통신에 의해 수신하는 쿼리 (query)를 분석하는 쿼리 분석 유닛 (Query Analyzer), 상기 쿼리 내의 자바스크립트를 해석하는 자바스크립트 해석 유닛 (JavaScript Interpreter) 및 상기 쿼리가 나타내는 명령을 수행하는 피지컬 억세스 레이어 유닛 (Physical Access Layer)을 포함할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 관리 장치는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색할 수 있다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터의 관계가 느슨한 데이터 모델을 사용하고, SQL (structured query language)을 사용하지 않고, 반정형 데이터를 저장하고 검색할 수 있다. 구체적으로, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 반정형 데이터 중에 JSON (JavaScript object Notation)을 저장 및 검색할 수 있다. 반정형 데이터는 고정된 필드에 저장된 데이터는 아니지만, XML, HTML, JSON 등과 같이 메타데이터 및 스키마를 포함하는 데이터이다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 자바스크립트를 기본 언어로 사용한다. 자바스크립트 (JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 자바스크립트를 쿼리 언어로 사용함으로써 데이터베이스를 주로 이용하여 개발하는 웹 개발자들이 데이터베이스에 접근하기 위해서 별도의 언어를 배워야 하는 불편함을 없애고, 어플리케이션에서 개발하는 코드를 가능하면 그대로 이용하거나 최소한의 수정만으로 데이터베이스에서 동작할 수 있도록 지원할 수 있다. 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템에서 사용하는 자바스크립트는 웹 브라우저에서 사용하는 자바스크립트와 문법적으로 동일하지만 사용할 수 있는 API (application programming interface)의 범위가 다르다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 객체 검색을 지원하고, 자바스크립터 환경하에서 데이터의 조작 및 검색이 이루어지기 때문에, 상당한 양의 연산처리를 요구한다. 따라서, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 저장되는 모든 데이터를 주 메모리 (RAM)에 저장하여 접근하는 In-Memory Data Grid (IMDG)의 성격을 가지고 있다. 즉, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터베이스의 모든 데이터를 램에 저장하고 저장된 데이터를 램에서 바로 처리할 수 있다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터를 물리적으로 분산되어 있는 다수의 저장소에 저장할 수 있다. 분산 데이터베이스는 네트워크상의 여러 노드에 분산되어 있으나 단일의 데이터베이스 관리 시스템으로 제어되는 데이터베이스를 나타낸다. 지리적으로 분산되어 있는 데이터가 실제로 어느 위치에 저장되어 있는지를 의식할 필요 없이 사용자는 필요한 데이터를 검색하고 갱신할 수 있다. 즉, 물리적으로는 분산되고, 논리적으로는 집중되어 있는 형태로 구성된다. 분산 데이터베이스의 장점은 데이터를 분산 배치하므로 장애에 대한 대비에 강하고, 다수의 이용자가 대규모의 데이터베이스를 낮은 비용으로 공유할 수 있다는 점이다. 이로써, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 같은 작업을 분산하여 처리함으로써 성능을 향상시킬 수 있고, Computing Power 낮은 시스템을 여러 대 구축함으로써 적은 비용으로 대용량의 데이터를 처리할 수 있는 장점이 있으며. 필요에 따라서, 서버를 추가할 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 구조를 나타낸 도면이다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 스토어키퍼 (storekeeper) 및/또는 하나 이상의 웨어하우스 (warehouse)를 포함한다.
본 발명의 일 실시예에 따르면, 스토어키퍼와 웨어하우스는 마스터 (master) - 슬레이브 (slave) 구조를 가지며, 스토어키퍼와 웨어하우스 사이의 통신은 Network (TCP/IP)를 이용할 수 있다.
본 발명의 일 실시예에 따른 스토어키퍼는 마스터에 해당하며, 어플리케이션의 요청을 받고 웨어하우스에게 데이터 처리를 요청할 수 있고, 웨어하우스에서 처리된 데이터를 재가공할 수 있고, 웨어하우스를 관리하고 웨어하우스의 상태를 파악할 수 있다.
본 발명의 일 실시예에 따른 웨어하우스는 슬레이브에 해당하며, 스토어키퍼로부터 받은 요청에 따라 데이터를 저장, 조작 및 검색할 수 있고, 데이터를 유지하고 관리할 수 있다.
도 3은 본 발명의 일 실시예에 따른 스토어키퍼의 구성 및 웨어하우스의 구성을 나타낸 도면이다.
본 발명의 일 실시예에 따른 스토어키퍼는 커맨드 라인 인터페이스 유닛 (Command Line Interface), 외부 네트워크 인터페이스 유닛 (External Network Interface), 자바스크립터 해석 유닛 (JavaScript Interpreter), 스토어키퍼 관리 레이어 유닛 (Storekeeper Management Layer), 웨어하우스 인터페이스 레이어 유닛 (Warehouse Interface Layer) 및/또는 웨어하우스 통신 레이어 유닛 (Warehouse Communication Layer)을 포함한다.
커맨드 라인 인터페이스 유닛 (Command Line Interface)은 데이터의 저장, 조작 및 검색이 가능하도록 사용자로부터 직접적으로 명령을 입력받을 수 있다. 사용자는 대화형 쉘 인터페이스를 통하여 명령을 입력할 수 있다. 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 아래의 명령어 (shell command)들을 정의하고 있고, 사용자는 이 명령어들을 이용하여 데이터베이스 관리 시스템에 명령을 입력할 수 있다.
Help 명령어 리스트를 출력한다.
Ver Storekeeper의 버전을 출력한다.
Exit Storekeeper를 종료한다.
Wi Warehouse들의 정보를 보여준다.
Rj Storekeeper에서 JavaScript를 실행한다. 인자: JavaScript 소스 파일 전체 경로
Cb Bunch를 생성한다. 인자: 생성할 Bunch 이름
Db Bunch를 삭제한다. 인자: 삭제할 Bunch 이름
Lb Bunch 리스트를 출력한다.
add 데이터 아이템을 삽입한다. 인자: 삽입할 Bunch 이름 (데이터가 삽입될 Bunch 이름), 데이터 아이템 (JSON형태의 문자열), 리턴: 고유한 Hash Key를 출력한다.
Edit 데이터 아이템을 수정한다. 인자: 삽입할 Bunch 이름 (데이터가 수정될 Bunch 이름), Hash Key (수정할 데이터 아이템의 Hash Key), 데이터 아이템 (Add할때와 동일한 형식으로 전체 JSON형태의 문자열)
Del 데이터 아이템을 삭제한다. 인자: Bunch 이름 (삭제할 데이터 아이템의 Bunch이름), Hash Key (삭제할 데이터 아이템의 Hash Key)
Find 자바스크립트 쿼리를 이용하여 데이터를 찾는다. 인자: Bunch 이름 (데이터를 찾을 Bunch 이름), 자바스크립트 함수 이름 (-n), 자바스크립트 파일의 전체 경로, 자바스크립트 함수 인자 (-a)
Get 고유한 해쉬키를 이용하여 데이터를 찾는다. 인자: [Hash key #1] [Hash_key #2] …. [Hash Key #n]
commit 데이터 삽입, 수정, 삭제한 작업에 대해서 디스크에 저장한다.
외부 네트워크 인터페이스 유닛 (External Network Interface) 외부의 프로그램과 연결하기 위한 인터페이스이다. TCP/IP Network Interface이며, 구체적으로 Socket Interface를 사용한다. 따라서, 외부 프로그램이 Socket 프로그래밍이 가능하다면 어떠한 프로그램 언어도 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템과 연동할 수 있다. 상세한 설명은 후술한다.
자바스크립터 해석 유닛 (JavaScript Interpreter)은 자바스크립트 명령을 이해하고 수행할 수 있다.
스토어키퍼 관리 레이어 유닛 (Storekeeper Management Layer)은 데이터베이스 관리 시스템의 환경 설정 및 동작 사항을 관리할 수 있다.
웨어하우스 인터페이스 레이어 유닛 (Warehouse Interface Layer)은 Warehous와 통신을 위한 통신 프로토콜을 관리할 수 있다.
웨어하우스 통신 레이어 유닛 (Warehouse Communication Layer)은 Warehouse와의 네트워크 통신을 관리할 수 있다.
본 발명의 일 실시예에 따른 웨어하우스는 스토어키퍼 통신 레이어 유닛 (Storekeeper Communication Layer), 쿼리 분석 유닛 (Query Analyzer), 자바스크립트 해석 유닛 (JavaScript Interpreter) 및/또는 피지컬 억세스 레이어 유닛 (Physical Access Layer)을 포함한다.
스토어키퍼 통신 레이어 유닛 (Storekeeper Communication Layer)은 Storekeeper와 네트워크 통신을 관리할 수 있다.
쿼리 분석 유닛 (Query Analyzer)은 Storekeeper로부터 받은 CRUD (Create, Read, Update, Delete) 명령을 분석할 수 있다.
자바스크립트 해석 유닛 (JavaScript Interpreter)은 쿼리 분석 유닛으로부터 분석된 명령 중에서 JavaScript Code가 있는 경우에는 자바스크립트 명령을 수행할 수 있다.
피지컬 억세스 레이어 유닛 (Physical Access Layer)은 Storekeeper로부터 받은 Query에 대해서 실제적으로 Disk에 CRUD(Create, Read, Update, Delete)를 수행할 수 있다.
도 4는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 데이터 분류를 나타낸 도면이다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터를 분류하는 기준으로 번치 (Bunch)라는 개념을 사용한다. Bunch는 사전적인 의미 그대로 묶음이나 다발을 의미하며, 데이터의 묶음, 다발을 지칭한다.
본 발명의 일 실시에에 따른 번치는 관계형 데이터베이스의 테이블의 개념과는 완전히 다르다. 관계형 데이터베이스의 테이블은 데이터 모델링에 의해서 설계된 객체이지만, Bunch는 단순히 데이터를 저장할 때, 같은 범주 안에 포함하고 싶은 데이터를 묶을 때 이용한다.
본 발명의 일 실시예에 따르면, 이와 같이 데이터를 묶어 놓은 이유는 데이터 검색 시에 관련이 없는 데이터 묶음 (Bunch)의 데이터 (아이템)를 검색하지 않기 위함이다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터 그 자체를 아이템 (Item)으로 명명한다. 아이템은 JSON형태로 되어 있는 문자열이며, 내부적으로 JavaScript Object형태로 보관된다. 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 데이터 아이템이 삽입될 때, 데이터 아이템마다 고유한 해시 키 (Hash Key)를 발행한다. Hash Key는 데이터 아이템의 고유한 값이며, 아이템을 수정, 삭제, 검색 시에 사용될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템이 제공하는 자바스크립트 API를 나타낸다.
pst_log 는 자바스크립트 디버깅을 위하여 Storekeeper console에 출력한다. 출력할 문자열을 인자값으로 갖고, 리턴값은 없다.
pst_version은 Storekeeper버전을 얻어온다. 인자값은 없고, Storekeeper 버전을 text형태로 리턴한다.
pst_warehouse_info는 warehouse들의 각종 정보를 얻어온다. 인자값은 없고, Warehouse들의 정보를 Object 배열 형태로 리턴한다. 이 때, Return Object는 다음과 같은 필드가 있다. warehouse_id: warehouse의 IP주소와 포트번호, warehouse_data_cnt: warehouse의 data 개수, warehouse_version: warehouse 버전
pst_create_bunch는 새로운 Bunch를 생성한다. 스트링 형태의 생성할 번치의 이름을 인자값으로 갖고, 성공하면 1, 실패하면 0을 리턴한다.
pst_delete_bunch는 생성되어 있는 Bunch를 삭제한다. 스트링 형태의 삭제할 번치의 이름을 인자값으로 갖고, 성공하면 1, 실패하면 0을 리턴한다.
pst_list_bunch는 Bunch 리스트를 보여준다. 인자값은 없고, 번치의 정보를 배열 형태로 리턴한다.
pst_add_item는 데이터를 삽입한다. 인자값으로, Bunch_name (String: item을 삽입할 Bunch 이름) 및 Item (String: JSON 형태로 된 실제 데이터)를 갖고, 삽입에 성공하면, 데이터를 삽입할 때, 발행된 Hash Key를 리턴한다. 실패하면, 모두 0으로 리턴한다.
pst_edit_item는 데이터를 수정한다. 수정할 Item을 입력할 때, 수정할 일부분 만을 보내는 방식이 아니라, 전체 item을 입력할 수 있다. 즉, 특정 Hash Key를 대상으로 item을 교체하는 방식이다. 인자값으로, Bunch_name (String: item을 수정할 Bunch 이름), Hash_key (변경할 item의 hash key) 및 Item (String: JSON 형태로 된 실제 데이터)를 갖고, 성공하면 1, 실패하면 0을 리턴한다.
pst_delete_item는 데이터를 삭제한다. 인자값으로, Bunch_name (String: item을 삭제할 Bunch 이름) 및 Hash_key (삭제할 item의 hash key)를 갖고, 성공하면 1, 실패하면 0을 리턴한다.
pst_find_item는 자바스크립트 쿼리를 이용하여 데이터를 찾는다. 인자값으로, Bunch_name (String: 검색할 Bunch 이름), function_name (검색할 함수의 이름), function_code (검색할 함수의 JavaScript 코드) 및 function_argument (검색할 함수에 제공될 인자)를 갖고, 리턴값으로, Object Array (찾은 데이터 또는 가공된 데이터 집합), Object (요소), hash_key (찾은 데이터의 Hash Key), find_item (찾은 데이터 또는 가공된 데이터)를 갖는다. javaScript Code에 오류가 있는 경우, 에러가 발생할 수 있고, 에러가 발생하는 경우 리턴 스트링에 에러 메시지가 포함되어 리턴한다.
pst_get_item는 고유한 해쉬키를 이용하여 데이터를 찾는다. Pst_find_item과 다른 점은 사용자 함수를 작성할 필요가 없고, 반환된 데이터는 pst_add_item, pst_edit_item으로 입력한 데이터가 그대로 반환된다는 점이다. 인자값으로, Hash_key #1 (첫번째 검색할 item의 hash key), Hash key #2 (두번째 검색할 item의 hash key), Hash Key #n (n번째 검색할 item의 hash key)을 갖고, 리턴 값으로, Object Array (찾은 데이터 집합), Object (요소), hash_key (찾은 데이터의 Hash Key) 및 find_item (찾은 데이터)를 갖는다.
pst_query_result은 검색 또는 수행된 결과를 저장소 외부로 보낸다. 인자값으로 result_string (저장소 외부로 보낼 문자열)을 갖고, 리턴값은 없다.
pst_commit은 데이터 삽입, 수정, 삭제한 작업에 대해서 영구히 저장한다. Commit을 수행하지 않고, warehouse를 종료하게 되면 이전에 작업했던 내용은 모두 소실될 수 있다. 인자값은 없고, 성공하면 1, 실패하면 0을 리턴한다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 전술한 자바스크립트 API 및 쉘 커맨드 (shell command)를 이용하여 번치 및 아이템을 생성, 획득, 업데이트 및 삭제할 수 있다.
생성 동작에 대하여, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 자바스크립트 API로서 "pst_create_bunch" 및 Shell Command로서 "cb"를 이용하여 번치를 생성할 수 있다. 이 때, Bunch는 아이템(데이터)들을 묶음을 의미한다. 아이템을 묶는 기준은 물리적, 논리적 연관성과는 관계는 없고, 사용자의 편의에 따라서 데이터를 묶는 것을 의미한다. 즉, 한 개의 Bunch 안에 데이터 성격이 서로 다른 데이터가 존재할 수 있으며, 데이터 모델링에 의한 DB Entity 설계와는 관계가 없다. 데이터베이스 관리 시스템은 API로서 "pst_add_item" 및 Shell Command로서 "add"를 이용하여 아이템을 생성할 수 있다. 이 때, Item은 데이터를 의미하며 생성된 Bunch안에 생성해야 한다. 시스템에 입력할 수 있는 데이터 포멧은 JSON이다. JSON은 XML과 유사한 반정형 형태의 데이터이지만, JSON의 데이터 형태를 컨테이너(container)로 이용하여 다양한 데이터를 저장할 수 있다. 예를 들어, 바이너리(Binary) 형태의 데이터는 Base64 인코딩을 이용하여 JSON 데이터 안의 특정한 필드에 넣을 수 있다.
읽기 동작에 대하여, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 API로서 "pst_list_bunch" 및 Shell Command로서 "lb"를 이용하여 번치 목록을 얻을 수 있다. 데이터베이스 관리 시스템은 API로서 "pst_find_item" 및 Shell Command로서 "find"를 이용하여 아이템을 얻어올 수 있다. 데이터베이스 관리 시스템은 API로서 "pst_get_item" 및 Shell Command로서 "get"를 이용하여 아이템을 얻을 수 있다. 이 때, Item은 고유한 Hash Key를 가지고 있다. 사용자가 Hash Key를 알고 있는 경우에는 Hash Key를 직접 입력하여 아이템을 얻을 수 있다. Hash Key를 이용하여 아이템을 얻어오는 경우에는 저장소가 입력한 데이터 그대로 가지고 올 수 있으며, 데이터 조작 및 변경은 불가능할 수 있다.
업데이트 동작에 대하여, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 API 로서 "pst_edit_item" 및 Shell Command로서 "edit"를 이용하여 아이템을 변경할 수 있다. 동작 방식은 아이템이 가지고 있는 Hash Key를 대상으로 아이템 전체를 교체하는 방식이다. 따라서, 아이템의 일부분 또는 전체를 교체할 수 있다.
삭제 동작에 대하여, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 API로서 "pst_delete_bunch" 및 Shell Command로서 "db"를 이용하여 번치를 삭제할 수 있다. 데이터베이스 관리 시스템은 API로서 "pst_delete_item" 및 Shell Command로서 "del"을 이용하여 아이템을 삭제할 수 있다.
도 6은 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템의 사용 모델을 나타낸 도면이다.
도면 상단에 도시된 Application 또는 Web Application은 저장소를 사용하는 응용 프로그램을 의미한다. 응용 프로그램이 저장소를 사용하기 위해서는 저장소를 사용하는 일정한 인터페이스가 필요하다. 이러한 인터페이스 역할을 하는 것이 시스템 드라이버이고, 이는 엑스팝콘스토어 드라이버로 명명될 수 있다. 시스템 드라이버는 데이터베이스 관리 시스템과 연동하기 위해서 TCP/IP 네트워크를 이용하며, 응용프로그램에 소스코드 형태로 포함되거나, 응용프로그램과는 별도의 소프트웨어로 작성될 수 있다. 시스템 드라이버는 JavaScript Query Language를 Application으로부터 문자열 형태로 받아서, Socket을 이용하여 데이터베이스 관리 시스템과 통신을 한 이후에 JSON 형태의 결과 값을 리턴 받는다. 이 후, 시스템 드라이버는 JSON으로 받은 결과 값을 가공 또는 그대로 Applicaiton으로 반환할 수 있다.
도면 하단은 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템을 Web Programming 환경 하에서 사용하기 위한 모델을 나타낸 것이다. Application은 Web Browser 안에서 수행하는 Web Site에 해당되며, 엑스팝콘스토어 드라이버에 대응하는 소프트웨어는 Common Gateway Interface (CGI)에 해당한다. CGI는 다양한 언어로 구현할 수 있으며, 예를 들어, PHP, Java Servlet, Python으로 구현될 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터베이스 관리 방법을 나타낸 도면이다.
본 발명의 다른 일 실시예에 따른 인메모리 기반의 분산 데이터베이스 관리 방법은 데이터 아이템 (data item)을 복수의 저장 장치에 저장하는 단계 (S7010) 및 상기 복수의 저장 장치를 제어하는 단계 (S7020)를 포함한다. 여기서, 상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고, 상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 저장하는 단계는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 제어하는 단계는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 단계, 외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 단계, 상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 단계 및 상기 해석된 자바스크립트 명령을 상기 복수의 저장 장치로 네트워크 통신을 통해 전송하는 단계를 포함할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 저장하는 단계는 상기 관리 장치로부터 쿼리 (query)를 네트워크 통신을 통해 수신하는 단계, 상기 수신한 쿼리를 분석하는 단계, 상기 쿼리 내의 자바스크립트 명령을 해석하는 단계 및 상기 자바스크립트 명령을 수행하는 단계를 포함할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 제어하는 단계는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색할 수 있다.
1010: 인메모리 기반의 분산 데이터베이스 관리 시스템
1020: 복수의 저장 장치
1030: 관리 장치
S7010: 데이터 아이템 (data item)을 복수의 저장 장치에 저장하는 단계
S7020: 상기 복수의 저장 장치를 제어하는 단계

Claims (8)

  1. 데이터 아이템 (data item)을 저장하는 복수의 저장 장치로서,
    상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고,
    상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 복수의 저장 장치는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리하고; 및
    상기 복수의 저장 장치와 통신하여 상기 복수의 저장 장치를 제어하는 관리 장치;
    를 포함하는 인메모리 기반의 분산 데이터베이스 관리 시스템.
  2. 제 1 항에 있어서,
    상기 관리 장치는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 커맨드 라인 인터페이스 유닛 (Command Line Interface), 외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 외부 네트워크 인터페이스 유닛 (External Network Interface), 상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 자바스크립터 해석 유닛 (JavaScript Interpreter), 상기 인메모리 기반의 분산 데이터베이스 관리 시스템의 환경 설정을 관리하는 스토어키퍼 관리 레이어 유닛 (Storekeeper Management Layer), 상기 복수의 저장 장치와 통신을 위한 통신 프로토콜을 관리하는 웨어하우스 인터페이스 레이어 유닛 (Warehouse Interface Layer) 및 상기 복수의 저장 장치와의 네트워크 통신을 관리하는 웨어하우스 통신 레이어 유닛 (Warehouse Communication Layer)을 포함하는 인메모리 기반의 분산 데이터베이스 관리 시스템.
  3. 제 1 항에 있어서,
    상기 복수의 저장 장치 중 하나는 상기 관리 장치와의 네트워크 통신을 관리하는 스토어키퍼 통신 레이어 유닛 (Storekeeper Communication Layer), 상기 관리 장치와의 네트워크 통신에 의해 수신하는 쿼리 (query)를 분석하는 쿼리 분석 유닛 (Query Analyzer), 상기 쿼리 내의 자바스크립트를 해석하는 자바스크립트 해석 유닛 (JavaScript Interpreter) 및 상기 쿼리가 나타내는 명령을 수행하는 피지컬 억세스 레이어 유닛 (Physical Access Layer)을 포함하는 인메모리 기반의 분산 데이터베이스 관리 시스템.
  4. 제 1 항에 있어서,
    상기 관리 장치는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색하는 인메모리 기반의 분산 데이터베이스 관리 시스템.
  5. 데이터 아이템 (data item)을 복수의 저장 장치에 저장하는 단계로서,
    상기 데이터 아이템은 특정 기준에 따라 하나 이상의 데이터 아이템을 포함하는 데이터 번치 (data bunch)로 묶여 상기 복수의 저장 장치에 저장되고, 상기 데이터 아이템은 JSON (JavaScript object Notation) 형태의 문자열이고,
    상기 복수의 저장 장치는 주 메모리로서 램 (RAM)을 포함하고, 상기 저장하는 단계는 모든 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에 저장하고 저장된 상기 데이터 번치 및 상기 데이터 아이템을 상기 램에서 바로 처리하고; 및
    상기 복수의 저장 장치를 제어하는 단계;
    를 포함하는 인메모리 기반의 분산 데이터베이스 관리 방법.
  6. 제 5 항에 있어서,
    상기 제어하는 단계는 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 사용자 명령을 수신하는 단계;
    외부 프로그램으로부터 상기 데이터 번치 또는 상기 데이터 아이템의 조작에 대한 자바스크립트 (JavaScript) 명령을 수신하는 단계;
    상기 외부 프로그램으로부터 수신하는 자바스크립트 명령을 해석하는 단계; 및
    상기 해석된 자바스크립트 명령을 상기 복수의 저장 장치로 네트워크 통신을 통해 전송하는 단계;
    를 포함하는 인메모리 기반의 분산 데이터베이스 관리 방법.
  7. 제 5 항에 있어서,
    상기 저장하는 단계는 상기 관리 장치로부터 쿼리 (query)를 네트워크 통신을 통해 수신하는 단계;
    상기 수신한 쿼리를 분석하는 단계;
    상기 쿼리 내의 자바스크립트 명령을 해석하는 단계; 및
    상기 자바스크립트 명령을 수행하는 단계;
    를 포함하는 인메모리 기반의 분산 데이터베이스 관리 방법.
  8. 제 5 항에 있어서,
    상기 제어하는 단계는 자바스크립트 (JavaScript)를 쿼리 (query) 언어로 사용하여 상기 복수의 저장 장치에 저장되는 상기 데이터 번치 또는 상기 데이터 아이템을 조작 및 검색하는 인메모리 기반의 분산 데이터베이스 관리 방법.
KR1020170086440A 2017-07-07 2017-07-07 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템 KR20190005578A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170086440A KR20190005578A (ko) 2017-07-07 2017-07-07 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170086440A KR20190005578A (ko) 2017-07-07 2017-07-07 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20190005578A true KR20190005578A (ko) 2019-01-16

Family

ID=65280854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170086440A KR20190005578A (ko) 2017-07-07 2017-07-07 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR20190005578A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326033A (zh) * 2021-06-09 2021-08-31 北京八分量信息科技有限公司 一种带有多种语言API的key-value存储系统
KR20220094551A (ko) 2020-12-29 2022-07-06 주식회사 위고 실시간으로 데이터를 처리하는 인메모리 컴퓨팅을 기반으로 검색 및 분석을 수행하는 시스템, 분석 방법, 및 컴퓨터 프로그램
KR20230101281A (ko) 2021-12-29 2023-07-06 주식회사 위고 실시간 빅데이터 분석 시스템

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220094551A (ko) 2020-12-29 2022-07-06 주식회사 위고 실시간으로 데이터를 처리하는 인메모리 컴퓨팅을 기반으로 검색 및 분석을 수행하는 시스템, 분석 방법, 및 컴퓨터 프로그램
KR20220111219A (ko) 2020-12-29 2022-08-09 (주)모아라 실시간으로 데이터의 증가 속도에 따라 데이터 처리 주기를 설정하는 시스템의 분석 방법
CN113326033A (zh) * 2021-06-09 2021-08-31 北京八分量信息科技有限公司 一种带有多种语言API的key-value存储系统
CN113326033B (zh) * 2021-06-09 2023-08-11 北京八分量信息科技有限公司 一种带有多种语言API的key-value存储系统
KR20230101281A (ko) 2021-12-29 2023-07-06 주식회사 위고 실시간 빅데이터 분석 시스템

Similar Documents

Publication Publication Date Title
US11928596B2 (en) Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11093633B2 (en) Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US20200183932A1 (en) Optimizing write operations in object schema-based application programming interfaces (apis)
JP7322119B2 (ja) ネットワーク上のデータソースへの照会
CA3025493C (en) Optimizing read and write operations in object schema-based application programming interfaces (apis)
Curé et al. RDF database systems: triples storage and SPARQL query processing
Wood et al. Kowari: A platform for semantic web storage and analysis
US9122422B2 (en) Representing models in systems development lifecycle (SDLC) tools using a network of internet resources
WO2018156551A1 (en) Platform management of integrated access datasets utilizing federated query generation and schema rewriting optimization
CN108369598A (zh) 对于半结构化数据的列状数据布置
Borkar et al. Have your data and query it too: From key-value caching to big data management
US11941140B2 (en) Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
KR20190005578A (ko) 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템
Schreiner et al. Bringing SQL databases to key-based NoSQL databases: a canonical approach
Calçada et al. Evaluation of Couchbase, CouchDB and MongoDB using OSSpal.
Palopoli et al. Experiences using DIKE, a system for supporting cooperative information system and data warehouse design
KR20190005577A (ko) 자바스크립트 기반의 분산 데이터베이스 관리 방법 및 시스템
Prabhu et al. Big data tools—Hadoop ecosystem, spark and NoSQL databases
Muñoz-Sánchez et al. Managing Physical Schemas in MongoDB Stores
Ghosh et al. NoSQL Database: An Advanced Way to Store, Analyze and Extract Results From Big Data
AGGOUNE An Overview on the Mapping Techniques in NoSQL Databases
Savvidis Searching Metadata in Hadoop
Team Data Migration from Relational to NoSQL Database: Review and Comparative Study
US20110282911A1 (en) Method and apparatus for providing a relational document-based datastore
CN115994139A (zh) 具有持久性标识符的元数据元素

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application