KR101365464B1 - 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 - Google Patents

데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 Download PDF

Info

Publication number
KR101365464B1
KR101365464B1 KR1020120022434A KR20120022434A KR101365464B1 KR 101365464 B1 KR101365464 B1 KR 101365464B1 KR 1020120022434 A KR1020120022434 A KR 1020120022434A KR 20120022434 A KR20120022434 A KR 20120022434A KR 101365464 B1 KR101365464 B1 KR 101365464B1
Authority
KR
South Korea
Prior art keywords
shard
database
key
databases
hint
Prior art date
Application number
KR1020120022434A
Other languages
English (en)
Other versions
KR20130101349A (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 KR1020120022434A priority Critical patent/KR101365464B1/ko
Priority to EP13151082.8A priority patent/EP2637111B1/en
Priority to JP2013008599A priority patent/JP6338817B2/ja
Publication of KR20130101349A publication Critical patent/KR20130101349A/ko
Application granted granted Critical
Publication of KR101365464B1 publication Critical patent/KR101365464B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

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

Abstract

데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법이 제공된다. 데이터베이스 미들웨어를 포함하는 데이터 관리 시스템에 있어서, 상기 데이터베이스 미들웨어는, 입력되는 쿼리에 기초하여 샤드 키 식별자(Shard Key ID)를 생성하고, 생성된 샤드 키 식별자와 데이터베이스 미들웨어에 설정된 샤드 메타데이터(Shard metadata)를 이용하여 결정된 샤드 식별자(shard ID)를 통해 복수의 데이터베이스들 중 하나의 데이터베이스를 선택하는 샤드 프로세싱 모듈을 포함한다.

Description

데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법{DATA MANAGEMENT SYSTEM AND METHOD USING DATABASE MIDDLEWARE}
본 발명의 실시예들은 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법에 관한 것이다.
관계형데이터베이스(relational database)는 일련의 정형화된 테이블로 구성된 데이터 항목들의 집합체로서, 그 데이터들은 데이터베이스 테이블을 재구성하지 않더라도 다양한 방법으로 접근하거나 조합될 수 있다. 관계형 데이터베이스에서 사용자와 관계형 데이터베이스를 연결시켜 주는 표준검색언어를 SQL이라고 하는데, SQL 문장은 관계형 데이터베이스에 있는 데이터를 직접 조회하거나 또는 보고서를 추출하는 데 사용될 수 있다. 관계형 데이터베이스는 만들거나 이용하기가 비교적 쉽지만, 무엇보다도 확장이 용이하다는 장점을 가지고 있다. 처음 데이터베이스를 만든 후 관련되는 응용 프로그램들을 변경하지 않고도, 새로운 데이터 항목을 데이터베이스에 추가할 수 있다.
이때, 하나의 데이터베이스로 다룰 수 없을 만큼 많은 데이터를 저장하고 조회하려면 여러 데이터베이스에 데이터들을 분산하여 저장 및 유지하는 방식을 이용하게 된다. 이때, 종래기술에서는 테이블을 분리하여 분할된 테이블을 여러 데이터베이스에 분산 저장하고, 어플리케이션 단에서 원하는 데이터가 포함된 데이터베이스를 찾기 위한 룰(rule)을 계산하였다. 따라서, 이러한 종래기술에서는 어플리케이션 단의 복잡도가 증가하는 문제점이 있다. 또한, 테이블 추가 분할 또는 데이터베이스 증설 시 어플리케이션 단에도 변경이 필요한 문제점이 있다.
도 1은 종래기술에 따른 데이터 관리 방법을 설명하기 위한 도면이다. 도 1은 복수의 사용자들이 복수의 단말기들(어플리케이션 단)(110)을 통해 복수의 데이터베이스들(120)에 저장된 데이터를 조회함에 있어서, 데이터베이스 미들웨어(130)가 쿼리를 입력받아 데이터를 처리하는 모습을 나타내고 있다. 이때, 종래기술에 따른 데이터 관리 방법에서는 어플리케이션 단에서 키(Key)를 생성하고, 포함된 메타데이터를 이용하여 데이터를 저장/조회/생성하기 위한 데이터베이스를 복수의 데이터베이스들(120) 중에서 선택해야 한다. 이때, 복수의 데이터베이스들(120) 각각은 서로 다른 이름(name)을 가질 수 있고, 이름을 통해 식별될 수 있다. 예를 들어, 단말기 2가 데이터를 추가하고자 하고, 데이터가 추가되어야 할 데이터베이스가 'DB 3'인 경우, 단말기 2는 직접 기설정된 룰에 따라 데이터를 추가해야 할 데이터베이스가 'DB 3'임을 확인해야 하며, 'DB 3'에 데이터를 추가하라는 쿼리를 생성해야 한다. 즉, 어플리케이션 단에서 필요한 데이터베이스를 직접 찾아 쿼리를 생성해야 하기 때문에 어플리케이션 단의 복잡도가 증가하는 문제점이 있다. 또한, 테이블을 추가 분할하거나 데이터베이스를 증설하는 경우, 어플리케이션 단에서 원하는 데이터 또는 원하는 데이터베이스를 직접 찾아야 하기 때문에 어플리케이션 단에도 변경이 발생하게 되는 문제점이 있다.
본 명세서에서는 복수의 데이터베이스에 분산 저장된 데이터들을 보다 효과적으로 관리할 수 있는 시스템 및 방법이 제공된다.
데이터베이스 미들웨어에서 샤딩(sharding) 처리를 통해 어플리케이션 단의 요청에 적합한 단일 데이터베이스를 복수의 데이터베이스 중에서 찾아 데이터를 조회 및 제공함으로써, 어플리케이션 단의 복잡도를 감소시킬 수 있는 데이터 관리 시스템 및 방법을 제공한다.
샤드 프로세싱 모듈을 포함한 데이터베이스 미들웨어를 이용하여 어플리케이션 단의 변경 없이 테이블의 추가 분할 또는 데이터베이스 증설이 가능한 데이터 관리 시스템 및 방법을 제공한다.
내부 해싱 기법이나 사용자에 의해 등록된 해싱 기법 등과 같이 다양한 해싱 기법을 사용할 수 있는 데이터 관리 시스템 및 방법을 제공한다.
데이터베이스 미들웨어를 포함하는 데이터 관리 시스템에 있어서, 데이터베이스 미들웨어는, 입력되는 쿼리에 기초하여 샤드 키 식별자(Shard Key ID)를 생성하고, 생성된 샤드 키 식별자와 샤드 메타데이터(Shard metadata)를 이용하여 결정된 샤드 식별자(shard ID)를 통해 복수의 데이터베이스들 중 하나의 데이터베이스를 선택하는 샤드 프로세싱 모듈을 포함하는 것을 특징으로 하는 데이터 관리 시스템을 제공한다.
일측에 따르면, 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함할 수 있고, 데이터베이스 미들웨어는, 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 더 포함할 수 있다.
다른 측면에 따르면, 데이터베이스 미들웨어는, 어플리케이션 단의 연결 요청을 가용한 프로세스에 분배하기 위한 잡 큐 모듈(job queue module), 동시에 다수의 사용자 및 데이터베이스와의 연결을 유지하고, 필요 시 연결을 재 사용하기 위한 커넥션 풀링 모듈(connection pooling module), 실시간 모니터링을 통해 상태 및 통계 정보를 수집하는 모니터링 모듈, 사용자로부터의 데이터베이스 명령을 처리하기 위한 데이터베이스 인터페이스 모듈, 에러 또는 수행한 질의에 대한 이벤트 로그를 생성하는 로깅 모듈(logging module) 중 적어도 하나의 모듈을 더 포함할 수 있다.
또 다른 측면에 따르면, 샤드 프로세싱 모듈은, 입력되는 쿼리에 포함되는 기설정된 힌트를 더 이용하여 샤드 식별자를 선택할 수 있다.
또 다른 측면에 따르면, 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 입력되는 쿼리를 처리할 샤드 식별자를 선택하기 위해 바인드 변수 또는 리터럴 값 앞에 위치하는 힌트를 포함할 수 있다.
또 다른 측면에 따르면, 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블의 처리를 위한 힌트를 포함할 수 있다.
또 다른 측면에 따르면, 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하기 위한 힌트를 포함할 수 있다.
또 다른 측면에 따르면, 기설정된 힌트는, 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 특정 샤드 키를 선택하여 데이터를 선택하기 위한 힌트를 포함할 수 있다.
데이터베이스 미들웨어를 포함하는 데이터 관리 시스템에서 데이터를 관리하는 방법으로서, 데이터베이스 미들웨어가 포함하는 샤드 프로세싱 모듈에서, 샤드 키 값(shard key value)을 얻기 위한 함수와 샤드 키 식별자를 얻기 위한 함수를 실행하는 단계 및 함수들의 리턴값과, 데이터베이스 미들웨어에 설정된 샤드 메타데이터를 이용하여 복수의 데이터베이스들 각각을 식별하는 샤드 식별자들 중 하나의 샤드 식별자를 선택하는 단계를 포함하는 데이터 관리 방법을 제공한다.
컴퓨터 시스템이 웹페이지를 제공하도록 제어하는 명령(instruction)을 포함하는 컴퓨터 판독가능 매체로서, 명령은, 샤드 키 값(shard key value)을 얻기 위한 함수와 샤드 키 식별자를 얻기 위한 함수를 실행하는 단계 및 함수들의 리턴값과, 데이터베이스 미들웨어에 설정된 샤드 메타데이터를 이용하여 복수의 데이터베이스들 각각을 식별하는 샤드 식별자들 중 하나의 샤드 식별자를 선택하는 단계를 포함하는 방법에 의하여 컴퓨터 시스템을 제어하는, 컴퓨터 판독가능 매체를 제공한다.
데이터베이스 미들웨어에서 샤딩(sharding) 처리를 통해 어플리케이션 단의 요청에 적합한 단일 데이터베이스를 복수의 데이터베이스 중에서 찾아 데이터를 조회 및 제공함으로써, 어플리케이션 단의 복잡도를 감소시킬 수 있다.
샤드 프로세싱 모듈을 포함한 데이터베이스 미들웨어를 이용하여 어플리케이션 단의 변경 없이 테이블을 추가 분할하거나 또는 데이터베이스 증설할 수 있다.
내부 해싱 기법이나 사용자에 의해 등록된 해싱 기법 등과 같이 다양한 해싱 기법을 사용할 수 있다.
도 1은 종래기술에 따른 데이터 관리 방법을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 데이터 관리 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키(shard key)를 갖는 경우, 데이터를 선택하는 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블을 처리하는 방법을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하는 방법을 나타낸 도면이다.
도 6은 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 데이터를 선택하는 방법을 나타낸 도면이다.
도 7은 본 발명의 일실시예에 있어서, 샤드 키 식별자 생성 및 샤드를 선택하는 방법의 일례를 나타낸 도면이다.
도 8은 본 발명의 일실시예에 있어서, 데이터 관리 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 9는 본 발명의 일실시예에 있어서, 데이터 관리 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 2는 본 발명의 일실시예에 있어서, 데이터 관리 방법을 설명하기 위한 도면이다. 도 1 및 도 2를 함께 참조하면, 도 2에서도 복수의 사용자들이 복수의 단말기들(어플리케이션 단)(210)을 통해 복수의 데이터베이스들(220)에 저장된 데이터를 조회함에 있어서, 데이터베이스 미들웨어(230)가 쿼리를 입력받아 데이터를 처리하는 모습을 나타내고 있다. 이때, 도 2에서 데이터베이스 미들웨어(230)는 샤드 프로세싱(shard processing) 모듈(231)을 포함하고 있다. 이때, 복수의 데이터베이스들(220)은 모두 단일 데이터베이스 이름(name)을 가질 수 있고, 복수의 샤드로 분류될 수 있다.
데이터베이스 미들웨어(230)는 샤드 프로세싱 모듈(231)을 이용하여 샤드 키 식별자(shard key ID)를 생성하고, 생성된 샤드 키 식별자와 샤드 메타데이터를 이용하여 샤드(데이터베이스)를 선택할 수 있다. 일례로, 데이터베이스 미들웨어(230)는 샤드 키를 해시 함수를 이용하여 해싱하여 해시 값을 샤드 키 식별자로서 생성할 수 있다. 이때, 해시 함수는 샤드 키 값을 입력으로 받아 해시 값을 출력할 수 있고, 출력된 해시 값이 샤드 키 식별자로 이용될 수 있다. 여기서, 샤드 메타데이터는 일실시예로, 데이터베이스 미들웨어(230)의 설정 파일에 포함될 수 있다.
또한, 다른 실시예로, 샤드 메타데이터는 각 데이터베이스들에 포함될 수도 있다. 이 경우, 데이터베이스 미들웨어(230)는 샤드 프로세싱 모듈(231)을 이용하여 적어도 하나의 데이터베이스에 포함된 샤드 메타데이터를 참고하여 샤드 식별자를 결정할 수 있다. 이때, 데이터베이스 미들웨어(230)는 결정된 샤드 식별자를 이용하여 샤드(데이터베이스)를 선택할 수 있다.
이러한, 데이터베이스 미들웨어(230)는 샤드 프로세싱 모듈(231)을 이용하여 적절한 데이터베이스를 선택하기 때문에 어플리케이션 단에서는 복수의 데이터베이스들(220) 중 적절한 데이터베이스를 직접 선택할 필요가 없어지고, 따라서 어플리케이션 단의 복잡도가 감소하게 된다. 또한, 이러한 데이터베이스 선택을 위해 종래기술에서 어플리케이션 단이 포함하던 메타데이터를 어플리케이션 단에서 포함할 필요가 없기 때문에 어플리케이션 단의 변경 없이 테이블을 추가 분할하거나 또는 데이터베이스 증설할 수 있다. 뿐만 아니라, 내부 해싱 기법이나 사용자에 의해 등록된 해싱 기법 등과 같이 다양한 해싱 기법을 사용할 수 있게 된다.
이때, 어플리케이션 단에서 데이터베이스 미들웨어(230)로 전달되는 쿼리는 다양한 종류의 힌트(hint)를 포함할 수 있다. 이후에서는, 다양한 종류의 힌트의 예들을 도 3 내지 도 5를 통해 자세히 설명한다.
도 3은 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키(shard key)를 갖는 경우, 데이터를 선택하는 방법을 설명하기 위한 도면이다. 도 3은 하나의 데이터베이스(300)를 나타내고 있다. 이때, 데이터베이스(300)에는 사용자 테이블(310)이 포함되어 있다. 여기서, 사용자 테이블(310)은 각각 'emp_no'라는 이름의 컬럼을 포함하는 세 개의 테이블 'emp', 'emp_평가' 및 'emp_경력'을 포함하고 있다. 이때, 도 2를 통해 설명한 데이터베이스 미들웨어(230)는 일례로, 설정 파일에 샤드 메타데이터를 포함할 수 있고, 샤드 메타데이터는 일례로, 'emp_no'와 같이 테이블을 식별하기 위한 정보를 포함할 수 있다. 이미 설명한 바와 같이 샤드 메타데이터는 다른 실시예로 각 데이터베이스에 포함될 수도 있다.
이때, 어플리케이션 단에서 전달되는 쿼리는 "/*+ SHARD_KEY */"와 같은 힌트를 포함할 수 있다. 힌트 "/*+ SHARD_KEY */"는 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우 사용될 수 있고, 샤드 키 컬럼(column)에 해당하는 리터럴 값 전에 위치하거나 바인드 변수를 위한 "?" 전에 위치할 수 있다. 아래 일례로서 제공된 쿼리에서 첫 번째와 세 번째 'SELECT'문에서는 바인드 변수를 가리키는 "?" 앞에 힌트 "/*+ SHARD_KEY */"가 위치한 모습을 나타내고 있고, 두 번째 'SELECT'문에서는 샤드 키 컬럼의 값인 '1' 앞에 힌트 "/*+ SHARD_KEY */"가 위치한 모습을 나타내고 있다.
SELECT * FROM emp
WHERE emp_no = /*+ SHARD_KEY */ ?
SELECT * FROM emp_평가
WHERE emp_no = /*+ SHARD_KEY */ 1
SELECT * FROM emp_경력
WHERE emp_no IN {/*+ SHARD_KEY */ ?, /*+ SHARD_KEY */ ?}
도 4는 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블을 처리하는 방법을 나타낸 도면이다. 도 4는 하나의 데이터베이스(400)를 나타내고 있다. 이때, 데이터베이스(400)에는 사용자 테이블(410)을 포함하고 있다. 여기서, 사용자 테이블(410)은 각각 'emp_no'라는 이름의 컬럼을 포함하는 두 개의 테이블 'emp' 및 'emp_평가'를 나타내고 있고, 샤드 키를 갖지 않는 테이블 'without_shard_table'을 나타내고 있다.
이때, 도 2를 통해 설명한 데이터베이스 미들웨어(230)에는 샤드 메타데이터가 포함될 수 있고, 샤드 메타데이터는 일례로, 'emp_no'와 같이 필요한 테이블을 식별하기 위한 정보를 포함할 수 있다. 이미 설명한 바와 같이 샤드 메타데이터는 다른 실시예로 각 데이터베이스에 포함될 수도 있다.
이 경우, 쿼리는 힌트로서 "/*+ SHARD_VAL(value) */"를 포함할 수 있다. 힌트 "/*+ SHARD_VAL(value) */"는 하나의 데이터베이스(400)가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블 'without_shard_table'의 처리를 위해 이용될 수 있다. 예를 들어, 아래의 쿼리와 같이 쿼리에 힌트가 포함될 수 있다.
SELECT * FROM emp
WHERE emp_no = /*+ SHARD_KEY*/ ?
SELECT * FROM without_shard_table
WHERE /*+ SHARD_VAL(1) */ no = 'a'
두 번째 'SELECT'문에서는 임시 샤드 키 값인 '1'을 이용하여 샤드 키가 없는 테이블 'without_shard_table' 에서 no 컬럼의 값이 'a'인 데이터를 조회하는 모습을 나타내고 있다.
도 5는 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하는 방법을 나타낸 도면이다. 도 5는 'shard 1'로 식별되는 데이터베이스(510)와 'shard 2'로 식별되는 데이터베이스(520)를 나타내고 있다. 이때, 데이터베이스(510) 및 데이터베이스(520)는 모두 동일한 데이터베이스 이름을 가질 수 있다. 각 데이터베이스(510 및 520)는 'emp_no'라는 이름의 컬럼을 포함하는 테이블 'emp' 를 포함한다, 이때, 힌트 "/*+ SHARD_ALL */"가 이용될 수 있다.
SELECT * FROM emp
WHERE emp_no = /*+ SHARD_KEY*/ ?
SELECT * FROM emp /*+ SHARD_ALL */
이때, 첫 번째 'SELECT'문에서 '?'의 값에 따라 'shard 1' 또는 'shard 2'가 다이나믹하게 바인딩되어 바인딩된 데이터베이스에서 데이터가 리턴될 수 있다.
또한, 힌트 "/*+ SHARD_ALL */"는 'shard 1'의 데이터와 'shard 2의 데이터가 모두 리턴됨을 의미할 수 있다. 이때, 어플리케이션 단은 'getMoreResult API'를 통해 'shard 1'의 데이터를 모두 받은 후, 'shard 2'의 데이터를 받을 수 있다.
도 6은 본 발명의 일실시예에 있어서, 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 데이터를 선택하는 방법을 나타낸 도면이다. 데이터베이스(600)는 사용자 테이블(610)을 포함하고 있다.
여기서, 사용자 테이블(610)은 각각 'emp_no'라는 이름의 컬럼을 포함하는 두 개의 테이블 'emp' 및 'emp_평가'를 나타내고 있고, 'level'이라는 이름의 컬럼을 포함하는 '역량레벨' 테이블을 더 나타내고 있다. 이때, 도 2를 통해 설명한 데이터베이스 미들웨어(230)에는 샤드 메타데이터가 포함될 수 있고, 샤드 메타데이터는 일례로, 'emp_no' 및 'level'과 같이 필요한 테이블 및 레벨을 식별하기 위한 정보를 포함할 수 있다. 이미 설명한 바와 같이 샤드 메타데이터는 다른 실시예로 각 데이터베이스에 포함될 수도 있다.
이 경우, 힌트 "/*+ SHARD_KEY(name) /"가 이용될 수 있다. 여기서, 'name'은 필요한 'level'에 대응될 수 있다. 즉, 아래 세 번째 'SELECT'문에서는 하나의 데이터베이스(600)가 포함하는 복수 개의 샤드 키 중에서 필요한 샤드 키를 'level'을 통해 선택하기 위해 힌트 "/+ SHARD_KEY(name) */"를 사용하는 모습을 나타내고 있다.
SELECT * FROM emp
WHERE emp_no = /*+ SHARD_KEY(emp_no) */ ?
SELECT * FROM emp_평가
WHERE emp_no = /*+ SHARD_KEY (emp_no) */ 1
SELECT * FROM 역량레벨
WHERE level = /*+ SHARD_KEY (level) */ ?
도 7은 본 발명의 일실시예에 있어서, 키 식별자 생성 및 샤드를 선택하는 방법의 일례를 나타낸 도면이다. 도 7은 데이터베이스 미들웨어(710)와 'shard 1'로 식별되는 데이터베이스(720) 및 'shard 2'로 식별되는 데이터베이스(730)를 도시하고 있다. 여기서, 데이터베이스(720)는 사용자 테이블(721)을 포함하고 있으며, 데이터베이스(730)는 사용자 테이블(731)을 포함하고 있다.
이때, 쿼리(740)가 데이터베이스 미들웨어(710)로 입력되면, 데이터베이스 미들웨어(710)는 데이터베이스 미들웨어(710)가 제공하는 계산 방식 또는 사용자 정의 함수를 사용하여 샤드 키에 대한 해시 값을 계산할 수 있고, 얻어진 해시 값을 이용하여 데이터베이스 미들웨어(710)가 포함하는 샤드 메타데이터의 내용에 따라 룰을 적용하여 샤드 식별자(Shard ID)를 선택하여 쿼리를 실행할 수 있다. 이때, 샤드 메타데이터는 다른 실시예로 각 데이터베이스에 포함될 수도 있다.
이미 여러 차례 설명한 바와 같이, 복수의 데이터베이스들은 복수의 샤드로 분류될 수 있다. 일례로, N개의 데이터베이스들이 M개의 샤드로 분류될 수 있다. 이 경우, N과 M은 모두 정수이고, N은 M보다 보다 크거나 같을 수 있다. 만약, 하나의 샤드로 분류되는 데이터베이스가 복수개인 경우, 하나의 샤드로 분류되는 데이터베이스들은 서로 동일 기종의 데이터베이스들일 수 있다.
도 7의 예에서는 '45'라는 샤드 키 식별자를 이용하여 데이터베이스 미들웨어(710)의 샤드 메타데이터를 조회하여 필요한 샤드 식별자(Shard ID)가 '1'임을 확인하여 'shard 1'로 식별되는 데이터베이스(720)를 선택하여 쿼리를 실행하는 모습을 나타내고 있다.
쿼리에는 하나의 샤드 키 값(Shard Key Value)당 하나의 샤드 키 힌트(SHARD_KEY Hint)가 명시될 수 있고, 하나 이상의 샤드 키 힌트가 사용되는 경우, 각 힌트들은 동일한 샤드 식별자(Shard ID)에 대해 적용될 수 있다. 또한, 샤드(Shard)를 넘어서는 조인(JOIN) 쿼리는 지원하지 않을 수 있다.
본 실시예에 따른 데이터 관리 시스템은 데이터베이스 미들웨어를 포함할 수 있고, 데이터베이스 미들웨어는 샤드 프로세싱 모듈을 포함할 수 있다. 여기서, 샤드 프로세싱 모듈은 입력되는 쿼리에 기초하여 샤드 키 식별자(Shard Key ID)를 생성하고, 생성된 샤드 키와 데이터베이스 미들웨어에 설정된 샤드 메타데이터(Shard metadata)를 이용하여 샤드 식별자를 선택할 수 있다. 이때, 데이터베이스 미들웨어는 선택된 샤드 식별자를 통해 복수의 데이터베이스들 중 하나의 데이터베이스를 선택할 수 있다. 일례로, 데이터베이스 미들웨어(230)는 샤드 키를 해시 함수를 이용하여 해싱하여 해시 값을 샤드 키 식별자로서 생성할 수 있다.
여기서, 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함할 수 있다. 다만, 하나의 샤드로 분류되는 데이터베이스들은 동일 기종의 데이터베이스들로 구성될 수 있다. 이때, 데이터베이스 미들웨어는, 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 필요에 따라 더 포함할 수 있다. 또한, 데이터베이스 미들웨어는, 필요에 따라 어플리케이션 단의 연결 요청을 가용한 프로세스에 분배하기 위한 잡 큐 모듈(job queue module), 동시에 다수의 사용자 및 데이터베이스와의 연결을 유지하고, 필요 시 연결을 재 사용하기 위한 커넥션 풀링 모듈(connection pooling module), 실시간 모니터링을 통해 상태 및 통계 정보를 수집하는 모니터링 모듈, 사용자로부터의 데이터베이스 명령을 처리하기 위한 데이터베이스 인터페이스 모듈, 에러 또는 수행한 쿼리에 대한 이벤트 로그를 생성하는 로깅 모듈(logging module) 중 적어도 하나의 모듈을 더 포함할 수 있다.
여기서, 샤드 프로세싱 모듈은 입력되는 쿼리에 포함되는 기설정된 힌트를 더 이용하여 샤드 식별자를 선택할 수 있다. 기설정된 힌트는 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우 입력되는 쿼리를 처리할 샤드 식별자를 선택하기 위해 샤드 키 값(바인드 변수 또는 리터럴 값) 앞에 위치하는 힌트, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우 샤드 키를 갖지 않는 테이블의 처리를 위한 힌트, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우 모든 샤드에 있는 데이터를 선택하기 위한 힌트 및 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우 특정 샤드 키를 선택하여 데이터를 선택하기 위한 힌트 중 적어도 하나의 힌트를 포함할 수 있다. 각각의 힌트들에 대해서는 도 3 내지 도 6을 통해 이미 자세히 설명하였다.
도 8은 본 발명의 일실시예에 있어서, 데이터 관리 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 도 8은 어플리케이션 단으로서 'DB Middleware Interface'(810)와 데이터베이스 미들웨어로서 'DB Middleware'(820)를, 그리고 이기종의 데이터베이스들로서 서로 다른 종류의 세 개의 데이터베이스들('CUBRID', 'Oracle' 및 'MySQL')(830)을 각각 나타내고 있다.
이때, 'DB Middleware'(820)는 상술한 모듈들을 모두 포함한 일례를 나타내고 있다. 또한, 'DB Middleware Interface'(810)는 자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스인 'JDBC(Java data base connectivity)'를 포함한 일례를 나타내고 있다.
도 9는 본 발명의 일실시예에 있어서, 데이터 관리 방법을 도시한 흐름도이다.
단계(910)에서 데이터 관리 시스템은 샤드 키 값(shard key value)을 얻기 위한 함수와 샤드 키 식별자를 얻기 위한 함수를 실행한다. 이때, 샤드 키 식별자는 샤드 키 값을 해싱한 해시 값으로서 생성될 수 있다. 즉, 샤드 키 식별자를 얻기 위한 함수는, 샤드 키 값을 해싱하기 위한 해시 함수일 수 있다.
단계(920)에서 데이터 관리 시스템은 함수들의 리턴값과, 데이터베이스 미들웨어에 설정된 샤드 메타데이터를 이용하여 복수의 데이터베이스들 각각을 식별하는 샤드 식별자들 중 하나의 샤드 식별자를 선택한다.
이러한 단계(910) 및 단계(920)은 데이터 관리 시스템이 포함하는 데이터베이스 미들웨어를 통해, 특히 데이터베이스 미들웨어가 포함하는 샤드 프로세싱 모듈에 의해 수행될 수 있다.
여기서, 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함할 수 있다. 다만, 하나의 샤드로 분류되는 데이터베이스들은 서로 동일한 기종의 데이터베이스들로 구성될 수 있다. 이때, 데이터베이스 미들웨어는 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 더 포함할 수 있다. 또한, 데이터베이스 미들웨어는, 어플리케이션 단의 연결 요청을 가용한 프로세스에 분배하기 위한 잡 큐 모듈(job queue module), 동시에 다수의 사용자 및 데이터베이스와의 연결을 유지하고, 필요 시 연결을 재 사용하기 위한 커넥션 풀링 모듈(connection pooling module), 실시간 모니터링을 통해 상태 및 통계 정보를 수집하는 모니터링 모듈, 사용자로부터의 데이터베이스 명령을 처리하기 위한 데이터베이스 인터페이스 모듈, 에러 또는 수행한 질의에 대한 이벤트 로그를 생성하는 로깅 모듈(logging module) 중 적어도 하나의 모듈을 더 포함할 수 있다.
또한, 단계(920)에서 데이터 관리 시스템은 입력되는 쿼리에 포함되는 기설정된 힌트를 더 이용하여 샤드 식별자를 선택할 수 있다. 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 입력되는 쿼리를 처리할 샤드 식별자를 선택하기 위해 샤드 키 값(바인드 변수 또는 리터럴 값) 앞에 위치하는 힌트, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블의 처리를 위한 힌트, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하기 위한 힌트 및 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 특정 샤드 키를 선택하여 데이터를 선택하기 위한 힌트 중 적어도 하나의 힌트를 포함할 수 있다. 각각의 힌트들에 대해서는 도 3 내지 도 6을 통해 이미 자세히 설명하였다.
이와 같이, 본 발명의 실시예들에 따르면, 데이터베이스 미들웨어에서 샤딩(sharding) 처리를 통해 어플리케이션 단의 요청에 적합한 단일 데이터베이스를 복수의 데이터베이스 중에서 찾아 데이터를 조회 및 제공함으로써, 어플리케이션 단의 복잡도를 감소시킬 수 있다. 또한, 샤드 프로세싱 모듈을 포함한 데이터베이스 미들웨어를 이용하여 어플리케이션 단의 변경 없이 테이블을 추가 분할하거나 또는 데이터베이스 증설할 수 있고, 내부 해싱 기법이나 사용자에 의해 등록된 해싱 기법 등과 같이 다양한 해싱 기법을 사용할 수 있다.
본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
230: 데이터베이스 미들웨어
231: 샤드 프로세싱 모듈

Claims (18)

  1. 데이터베이스 미들웨어를 포함하는 데이터 관리 시스템에 있어서,
    상기 데이터베이스 미들웨어는,
    입력되는 쿼리에 기초하여 샤드 키 식별자(Shard Key ID)를 생성하고, 상기 생성된 샤드 키 식별자와 샤드 메타데이터(Shard metadata)를 이용하여 결정된 샤드 식별자(shard ID)를 통해 복수의 데이터베이스들 중 하나의 데이터베이스를 선택하는 샤드 프로세싱 모듈
    을 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  2. 제1항에 있어서,
    상기 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함하고,
    상기 데이터베이스 미들웨어는,
    상기 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 더 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  3. 제1항에 있어서,
    상기 데이터베이스 미들웨어는,
    어플리케이션 단의 연결 요청을 가용한 프로세스에 분배하기 위한 잡 큐 모듈(job queue module), 동시에 다수의 사용자 및 데이터베이스와의 연결을 유지하고, 필요 시 연결을 재 사용하기 위한 커넥션 풀링 모듈(connection pooling module), 실시간 모니터링을 통해 상태 및 통계 정보를 수집하는 모니터링 모듈, 사용자로부터의 데이터베이스 명령을 처리하기 위한 데이터베이스 인터페이스 모듈, 에러 또는 수행한 질의에 대한 이벤트 로그를 생성하는 로깅 모듈(logging module) 중 적어도 하나의 모듈을 더 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  4. 제1항에 있어서,
    상기 샤드 프로세싱 모듈은,
    상기 입력되는 쿼리에 포함되는 기설정된 힌트를 더 이용하여 상기 샤드 식별자를 선택하는 것을 특징으로 하는 데이터 관리 시스템.
  5. 제4항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 상기 입력되는 쿼리를 처리할 샤드 식별자를 선택하기 위해 바인드 변수 또는 리터럴 값 앞에 위치하는 힌트를 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  6. 제4항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블의 처리를 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  7. 제4항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하기 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  8. 제4항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 특정 샤드 키를 선택하여 데이터를 선택하기 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 시스템.
  9. 데이터베이스 미들웨어를 포함하는 데이터 관리 시스템에서 데이터를 관리하는 방법으로서,
    상기 데이터베이스 미들웨어가 포함하는 샤드 프로세싱 모듈에서,
    샤드 키 값(shard key value)을 얻기 위한 함수와 샤드 키 식별자를 얻기 위한 함수를 실행하는 단계; 및
    상기 함수들의 리턴값과, 상기 데이터베이스 미들웨어에 설정된 샤드 메타데이터를 이용하여 복수의 데이터베이스들 각각을 식별하는 샤드 식별자들 중 하나의 샤드 식별자를 선택하는 단계
    를 포함하는 데이터 관리 방법.
  10. 제9항에 있어서,
    상기 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함하고,
    상기 데이터베이스 미들웨어는,
    상기 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  11. 제9항에 있어서,
    상기 데이터베이스 미들웨어는,
    어플리케이션 단의 연결 요청을 가용한 프로세스에 분배하기 위한 잡 큐 모듈(job queue module), 동시에 다수의 사용자 및 데이터베이스와의 연결을 유지하고, 필요 시 연결을 재 사용하기 위한 커넥션 풀링 모듈(connection pooling module), 실시간 모니터링을 통해 상태 및 통계 정보를 수집하는 모니터링 모듈, 사용자로부터의 데이터베이스 명령을 처리하기 위한 데이터베이스 인터페이스 모듈, 에러 또는 수행한 질의에 대한 이벤트 로그를 생성하는 로깅 모듈(logging module) 중 적어도 하나의 모듈을 더 포함하는 것을 특징으로 하는 데이터 관리 방법.
  12. 제9항에 있어서,
    상기 샤드 식별자를 선택하는 단계는,
    입력되는 쿼리에 포함되는 기설정된 힌트를 더 이용하여 상기 샤드 식별자를 선택하는 것을 특징으로 하는 데이터 관리 방법.
  13. 제12항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 상기 입력되는 쿼리를 처리할 샤드 식별자를 선택하기 위해 바인드 변수 또는 리터럴 값 앞에 위치하는 힌트를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  14. 제13항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 샤드 키를 갖지 않는 테이블의 처리를 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  15. 제13항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 하나의 샤드 키를 갖는 경우, 모든 샤드에 있는 데이터를 선택하기 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  16. 제13항에 있어서,
    상기 기설정된 힌트는, 하나의 데이터베이스가 여러 개의 샤드 키를 갖는 경우, 특정 샤드 키를 선택하여 데이터를 선택하기 위한 힌트를 포함하는 것을 특징으로 하는 데이터 관리 방법.
  17. 컴퓨터 시스템이 웹페이지를 제공하도록 제어하는 명령(instruction)을 포함하는 컴퓨터 판독가능 매체로서,
    상기 명령은,
    샤드 키 값(shard key value)을 얻기 위한 함수와 샤드 키 식별자를 얻기 위한 함수를 실행하는 단계; 및
    상기 함수들의 리턴값과, 데이터베이스 미들웨어에 설정된 샤드 메타데이터를 이용하여 복수의 데이터베이스들 각각을 식별하는 샤드 식별자들 중 하나의 샤드 식별자를 선택하는 단계
    를 포함하는 방법에 의하여 상기 컴퓨터 시스템을 제어하는, 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 복수의 데이터베이스들은 이기종의 데이터베이스들을 포함하고,
    상기 샤드 식별자를 선택하는 단계는,
    상기 이기종의 데이터베이스들 각각을 위해, 쿼리를 수행하는 복수의 클라이언트 라이브러리 모듈(client library module)들을 이용하여 상기 샤드 식별자를 선택하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
KR1020120022434A 2012-03-05 2012-03-05 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 KR101365464B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120022434A KR101365464B1 (ko) 2012-03-05 2012-03-05 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법
EP13151082.8A EP2637111B1 (en) 2012-03-05 2013-01-11 Data management system and method using database middleware
JP2013008599A JP6338817B2 (ja) 2012-03-05 2013-01-21 データベースミドルウェアを用いたデータ管理システム及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120022434A KR101365464B1 (ko) 2012-03-05 2012-03-05 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20130101349A KR20130101349A (ko) 2013-09-13
KR101365464B1 true KR101365464B1 (ko) 2014-02-20

Family

ID=47678575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120022434A KR101365464B1 (ko) 2012-03-05 2012-03-05 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법

Country Status (3)

Country Link
EP (1) EP2637111B1 (ko)
JP (1) JP6338817B2 (ko)
KR (1) KR101365464B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200136151A (ko) 2019-05-27 2020-12-07 삼성에스디에스 주식회사 동적 샤드 선택 장치 및 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105264521B (zh) * 2014-02-18 2018-10-30 华为技术有限公司 一种数据表的导入方法、数据管理器以及服务器
US10346897B2 (en) 2014-05-30 2019-07-09 Walmart Apollo, Llc Method and system for smart order management and application level sharding
US9659079B2 (en) 2014-05-30 2017-05-23 Wal-Mart Stores, Inc. Shard determination logic for scalable order and inventory management architecture with a sharded transactional database
US10043208B2 (en) 2014-05-30 2018-08-07 Walmart Apollo, Llc Smart order management and database sharding
US10410169B2 (en) 2014-05-30 2019-09-10 Walmart Apollo, Llc Smart inventory management and database sharding
EP3286664B1 (en) * 2015-04-20 2021-10-13 Oracle International Corporation System and method for providing access to a sharded database using a cache and a shard topology
US9672110B1 (en) 2015-09-22 2017-06-06 Amazon Technologies, Inc. Transmission time refinement in a storage system
US10254980B1 (en) 2015-09-22 2019-04-09 Amazon Technologies, Inc. Scheduling requests from data sources for efficient data decoding
US11290540B2 (en) 2016-08-12 2022-03-29 Oracle International Corporation System and method for use of server-side connection pool tagging in a multi-tenant environment
US10909211B2 (en) * 2016-08-12 2021-02-02 Oracle International Corporation System and method for control of maximum connections in a connection pool environment
CN108090056B (zh) * 2016-11-21 2021-06-15 中兴通讯股份有限公司 数据查询方法、装置及***
CN108874837B (zh) * 2017-05-16 2021-09-03 北京京东尚科信息技术有限公司 数据库分库方法、装置、中间件及存储介质和电子设备
KR101885554B1 (ko) * 2017-09-01 2018-08-06 한화시스템 주식회사 e-내비게이션 서비스를 위한 이종 데이터 처리 시스템 또는 데이터 서비스 플랫폼의 이종 데이터 처리 방법
US11061905B2 (en) 2017-12-08 2021-07-13 International Business Machines Corporation Job management in data processing system
KR102276600B1 (ko) * 2019-03-28 2021-07-13 한국전자기술연구원 열처리 공정의 전력 빅데이터 분석을 위한 데이터 분산처리 관리방법 및 시스템
CN111400285B (zh) * 2020-03-25 2023-06-20 杭州浮云网络科技有限公司 mySQL数据分片处理方法、装置、计算机设备和可读存储介质
CN111813573B (zh) * 2020-06-29 2022-09-20 中国平安人寿保险股份有限公司 管理平台与机器人软件的通信方法及其相关设备
WO2022032532A1 (en) * 2020-08-12 2022-02-17 Alibaba Group Holding Limited Sharding for workflow applications in serverless architectures
CN112417044B (zh) * 2020-11-20 2023-10-31 中国平安人寿保险股份有限公司 新增附加险***的数据处理方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050052800A (ko) * 2003-12-01 2005-06-07 김강인 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템
KR20050121778A (ko) * 2004-06-23 2005-12-28 육상수 데이터베이스 시스템의 감사, 통제 방법 및 시스템
JP2009187415A (ja) 2008-02-08 2009-08-20 Nec Corp グリッドコンピューティングシステム及びデータ処理方法
KR20100132752A (ko) * 2009-06-10 2010-12-20 (주)자이네스 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3786233B2 (ja) * 1996-09-11 2006-06-14 日本電信電話株式会社 情報検索方法および情報検索システム
JP3515050B2 (ja) * 2000-07-07 2004-04-05 三菱電機株式会社 データベース演算処理装置
JP2008090404A (ja) * 2006-09-29 2008-04-17 Just Syst Corp 文書検索装置、文書検索方法および文書検索プログラム
JP2008165293A (ja) * 2006-12-27 2008-07-17 Seiko Epson Corp データ検索装置、デバイス管理装置、データ検索方法、およびコンピュータプログラム
US8229945B2 (en) * 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050052800A (ko) * 2003-12-01 2005-06-07 김강인 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템
KR20050121778A (ko) * 2004-06-23 2005-12-28 육상수 데이터베이스 시스템의 감사, 통제 방법 및 시스템
JP2009187415A (ja) 2008-02-08 2009-08-20 Nec Corp グリッドコンピューティングシステム及びデータ処理方法
KR20100132752A (ko) * 2009-06-10 2010-12-20 (주)자이네스 데이터베이스 분산을 통한 서비스 성능 향상을 위한 질의 데이터 분산 처리시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200136151A (ko) 2019-05-27 2020-12-07 삼성에스디에스 주식회사 동적 샤드 선택 장치 및 방법

Also Published As

Publication number Publication date
EP2637111A1 (en) 2013-09-11
JP6338817B2 (ja) 2018-06-06
EP2637111B1 (en) 2019-05-29
JP2013186890A (ja) 2013-09-19
KR20130101349A (ko) 2013-09-13

Similar Documents

Publication Publication Date Title
KR101365464B1 (ko) 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법
CN107463632B (zh) 一种分布式NewSQL数据库***和数据查询方法
CN101727465B (zh) 分布式列存储数据库索引建立、查询方法及装置与***
US9336263B2 (en) Data loading systems and methods
US7512597B2 (en) Relational database architecture with dynamic load capability
US8812492B2 (en) Automatic and dynamic design of cache groups
US20150234888A1 (en) Selecting From OR-Expansion States Of A Query
US10565201B2 (en) Query processing management in a database management system
CN105550274B (zh) 双副本并行数据库的查询方法和装置
US11030196B2 (en) Method and apparatus for processing join query
CN104182405A (zh) 一种连接查询方法及装置
CN102915382A (zh) 一种基于索引的数据库的数据查询方法和装置
US9870394B2 (en) Query routing method, query routing server performing the same and storage medium storing the same
CN106815258B (zh) 一种数据存储方法和协调节点
CN104268298A (zh) 一种创建数据库索引及其查询的方法
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN111427931A (zh) 分布式查询引擎及其查询关系型数据库的方法
CN102750384A (zh) 从多数据库引擎获取数据的装置和方法
CN102117305B (zh) 查询数据的***、方法和数据管理***
CN114064707A (zh) 一种用于数据虚拟化服务器的数据查询方法、装置及存储介质
CN108228654A (zh) 一种大数据分布式存储方法和***
CN111143373A (zh) 数据处理方法、装置、电子设备及存储介质
US9378229B1 (en) Index selection based on a compressed workload
KR101106624B1 (ko) 추론 서비스를 위한 인덱스 서비스 매니저와 추론 서비스 시스템 및 그 방법
CN103891244B (zh) 一种进行数据存储和检索的方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 7