큐브리드
CUBRID![]() | |
개발자 | 큐브리드 |
---|---|
초기 릴리즈 | 2008년 11월 20일 ( |
안정적 해제 | 11.0 / 2021년 1월;[1] 전 |
리포지토리 | github |
기록 위치 | C, C++, 자바 |
운영 체제 | Linux, Windows |
다음에서 사용 가능 | 영어, 한국어 |
유형 | RDBMS |
면허증 | API 및 GUI 도구를 위한 서버 엔진용 Apache 라이센스 및 BSD 라이센스 |
웹사이트 | cubrid |
CUBRID(/ˈkjuːbrɪd/ "큐브리드")는 CUBRID Corporation이 OLTP용으로 개발한 객체 확장 기능을 갖춘 오픈소스 SQL 기반 RDBMS(Relational Database Management System)이다.CUBRID라는 이름은 큐브와 브리지라는 두 단어의 합성어로, 데이터를 위한 공간을 위한 큐브와 데이터 브리지를 위한 브리지가 있다.[citation needed]
라이센스 정책
CUBRID는 서버 엔진과 인터페이스에 대한 별도의 라이선스를 가지고 있다.서버 엔진은 소스 코드의 배포, 수정, 획득이 가능한 Apache License 2.0을 채택한다.CUBRID API와 GUI 도구는 파생 저작물을 열 의무가 없는 버클리 소프트웨어 배포 라이센스를 가지고 있다.두 개의 별도 라이선스 시스템을 채택하는 이유는 독립 소프트웨어 벤더(ISV)가 CUBRID 기반 애플리케이션을 개발하고 배포할 수 있는 완전한 자유를 제공하기 위함이다.[2]
건축
CUBRID 데이터베이스를 다른 관계형 데이터베이스 시스템과 구별하는 기능은 데이터베이스 서버, 연결 브로커 및 애플리케이션 계층으로 구성된 3계층 클라이언트-서버 아키텍처다.
데이터베이스 서버
데이터베이스 서버는 저장 작업과 문 실행을 담당하는 CUBRID 데이터베이스 관리 시스템의 구성요소다.CUBRID 데이터베이스 서버 인스턴스는 단일 데이터베이스를 마운트하여 사용할 수 있으므로 데이터베이스 간 쿼리가 불가능해진다.그러나 시스템에서 둘 이상의 인스턴스를 실행할 수 있다.
데이터베이스 서버는 다른 솔루션과 달리 쿼리 자체를 컴파일하지 않고 사용자 정의 액세스 사양 언어로 미리 컴파일된 쿼리를 실행한다.[citation needed]
연결 브로커
CUBRID 연결 브로커의 주요 역할은 다음과 같다.
- 클라이언트 응용 프로그램 연결 관리
- 캐싱 및 릴레이 정보(예: 쿼리 결과)
- 질의 구문 분석, 최적화 및 실행 계획 생성
또한 로컬 오브젝트 풀은 실행의 일부를 데이터베이스 서버에서 지연시킬 수 있게 한다(예: 튜플 삽입 및 삭제, DDL 문). 따라서 데이터베이스 서버 로드가 낮아진다.
연결 브로커가 데이터베이스 서버와 동일한 시스템에 바인딩되어 있지 않기 때문에 CUBRID는 단일 데이터베이스에 대한 쿼리를 처리하는 동안 여러 시스템의 하드웨어 리소스를 활용할 수 있다.
응용 계층
애플리케이션은 사용 가능한 API 중 하나를 사용하여 CUBRID 연결 브로커에 연결할 수 있다.
특징들
고가용성
CUBRID High Availability는 공유 없는 클러스터링, 자동 페일오버 및 수동 페일백 메커니즘을 통해 로드 밸런싱, 내결함성 및 지속적인 서비스 가용성을 제공한다.
CUBRID의 3계층 아키텍처는 브로커 페일오버와 서버 페일오버라는 두 가지 레벨의 자동 페일오버를 통해 고가용성(HA)[3]을 기본적으로 지원할 수 있다.
브로커 페일오버
클라이언트 API를 통해 브로커에 연결할 때 사용자는 연결 URL에서 브로커가 수신 요청을 수신하는 대체 호스트 목록을 지정할 수 있다.호스트 중 하나에서 하드웨어, 네트워크, 운영 체제 또는 소프트웨어 오류가 발생하는 경우 기본 클라이언트 API는 사용자가 제공한 다음 호스트로 자동 페일오버된다.
서버 장애 조치
고가용성 환경은 1:N 마스터 슬레이브 서버 노드로 구축할 수 있다.각 슬레이브 노드는 CUBRID Heartbeat 프로토콜을 통해 마스터와 통신한다.마스터 노드가 응답하지 않으면 슬레이브 노드 중 첫 번째 노드가 마스터 역할로 승격된다.노드 간 복제는 동기식 및 비동기식의 두 가지 모드 중 하나로 달성할 수 있다.
관리자는 각 브로커가 연결할 수 있는 서버 호스트 목록을 지정할 수 있으며, 마스터 노드에 장애가 발생할 경우 다른 서버가 사용될 것이다.
확장성 및 유지 보수성
지원하다
CUBRID는 온라인, 오프라인 및 증분 백업을 지원한다.
퍼포먼스
API 레벨 로드 밸런싱
연결 브로커는 4가지 모드(읽기-쓰기, 읽기 전용, 슬레이브 전용, 선호 호스트 읽기 전용)로 구성할 수 있기 때문에 사용자가 연결 URL을 통해 제공한 대체 호스트 목록을 로드를 밸런싱하는 방법으로 사용할 수 있다.Load Balancing을 사용할 때 클라이언트 API는 지난번 연결에 사용된 호스트를 제외하고 연결 URL에 지정된 호스트 중 임의로 호스트를 선택한다.선택한 호스트를 사용할 수 없는 경우 모든 호스트를 사용할 수 없음으로 결정할 때까지 선택이 계속된다.이 경우 운전자는 오류를 보고하게 된다.
계획 캐싱 쿼리
자주 사용되는 쿼리에 대한 컴파일 단계의 대부분을 건너뛰기 위해 브로커에 쿼리 실행 계획 캐시가 구현된다.구문 분석 중에 쿼리가 매개 변수화되기 때문에 리터럴 상수의 값에 의해서만 다른 두 개의 쿼리는 동일한 캐시 엔트리를 공유한다.[4]
저장
인덱스
CUBRID는 단일기둥과 다중기둥 모두 B+트리 인덱스를 지원한다.다음과 같은 유형의 인덱스를 생성할 수 있다.
- 인덱스 및 역방향 인덱스
- 고유 인덱스 및 역방향 고유 인덱스
- 함수 기반 인덱스
- 필터링된 인덱스
쿼리 최적화 프로그램은 인덱스를 사용하여 다음과 같은 방법을 사용하여 더 빠른 실행 계획을 생성할 수 있다.
- 커버링 인덱스 식별
- 내림차순 인덱스 검색
- 건너뛰기별 주문
- 건너뛰기별 그룹화
- 다범위 제한 최적화[citation needed]
- 인덱스 루즈 스캔
- 인덱스 스킵 스캔
테이블 파티셔닝
CUBRID는 범위, 해시 및 값 목록별로 수평 파티셔닝을 지원하며 테이블당 최대 1024개의 파티션을 제공한다.파티션은 독립적으로 액세스할 수 있으며 일반 테이블에서 유효한 대부분의 작업을 지원한다.
버전 9.0을 기준으로 CUBRID는 실행 시간 파티션 제거 기능을 구현한다.
SQL 지원
CUBRID는 ANSI SQL:1999 표준의 큰 부분집합을 구현하며, 이후 SQL 표준과 사용자 지정 기능의 특징으로 확장된다.[citation needed]
창 기능
CUBRID는 SQL:2003 표준에 정의된 윈도우 기능을 지원한다.구현된 기능은 ROW_NUMB, Count, MIN, SUM, AVG, STDEV_SAMP, VAR_POP, VAR_SAMP, VAR_SAMP, LOCK, LOCK, READ, LAG, NTILE이다.
계층 쿼리
비표준 START WITH ... CONNECT BY Oracle 구문을 사용한 계층 쿼리는 CUBRID에서 지원된다.쿼리 실행의 동작을 제어하기 위해 다수의 전문 의사 프로토콜과 연산자가 제공된다.
클릭 카운터 내장
CUBRID는 특정 이벤트(예: 페이지 뷰)에서 데이터베이스 필드를 증가시켜야 하는 웹 애플리케이션에서 공통 시나리오를 최적화한다.CUBRID는 SELECT/UPDATE 문 조합을 사용하는 일반적인 접근 방식과 달리 SELECT 문 실행 내에서 필드를 증가시켜 UPDATE 문과 관련된 일부 값비싼 컴파일, 실행 및 잠금 오버헤드를 우회할 수 있다.[5]
Java 저장 프로시저
CUBRID에서 지원되는 유일한 저장 프로시저 언어는 Java로, 시스템에 Java 가상 머신을 설치해야 한다.[6]가상 시스템은 서버에서 시작 및 관리되며 코드 실행에 사용된다.
데이터베이스 액세스가 필요한 저장 프로시저 코드는 상위 트랜잭션을 사용하거나 새 트랜잭션을 발급하는 JDBC 드라이버를 사용해야 한다.
정규식
CUBRID는 LIKE 연산자 외에도 정규식 패턴 매칭을 위한 REGEXP 연산자를 제공한다.기본적으로 오퍼레이터는 입력 문자열에서 대소문자를 구분하지 않는 일치를 수행하지만 대소문자를 구분하는 시나리오에는 BININE이라는 수식어를 사용할 수 있다.REGEXP의 선택적 별칭은 RLICE이다.[7]
CUBRID 11의 이전 버전에서 CUBRID는 유니코드 문자열에서 REGEXP를 지원하지 않는다.[citation needed]
CUBRID 11에서 CUBRID는 다음과 같은 정규식 함수를 추가하여 유니코드 문자열에서 지원한다.[8]
- REGEXP_Count, REGEXP_INSTR, REGEXP_LICE, REGEXP_RENACE, REGEXP_Substr
데이터 유형
CUBRID에서 지원하는 다양한 데이터 유형:
- 숫자 값의 경우:
- 문자열 값의 경우:
- 고정 길이 문자 및 비트 문자열: CHAR, BIT
- 가변 길이 문자 및 비트 문자열: CHAR 가변, 비트 가변
- 날짜 및 시간 값의 경우:
- 날짜 값: 날짜
- 시간 값:시간
- 날짜 및 시간 값: DATETIME, TIMAPS(내부적으로 Unix 타임스탬프로 저장됨)
- 컬렉션의 경우: SET, Multiset, LIST
- 사용자 정의 열거형: ENUM
- 큰 개체의 경우: BLOB, CLOB
- JavaScript 객체 표기법: JSON
지원되는 플랫폼
CUBRID는 마이크로소프트 윈도우즈 및 리눅스(대부분 배포), 32비트 및 64비트 아키텍처에 사용할 수 있다.
인터페이스
명령줄
CUBRID에는 Csql이라는 이름의 내장 명령줄 인터페이스가 함께 제공되며, CUBRID 서버에서 SQL 문을 실행하는 데 사용할 수 있다.[9]공구는 다음 두 가지 모드 중 하나로 사용할 수 있다.
- 로컬 또는 원격 CUBRID 서버에 연결할 수 있는 CS(클라이언트/서버) 모드
- 주로 관리 목적으로 사용되는 SA(독립 실행형) 모드, 서버 인스턴스를 에뮬레이션하여 로컬 데이터베이스를 마운트함
또한 CUBRID의 csql은 스키마 정보, 계획 생성, 디버깅, 트랜잭션 제어, 쿼리 타이밍 등과 관련된 일부 내부 명령을 구현한다.
프로그래밍
CUBRID는 C 드라이버(CCI라고도 함),[10] JDBC, PHP/PDO 드라이버, ODBC, OLEDB, ADO 등 다양한 언어별 애플리케이션 프로그래밍 인터페이스를 제공한다.NET, Ruby 드라이버, Python 드라이버, Node.js 드라이버, Perl 드라이버.
그래픽
CUBRID를 위해 몇 가지 그래픽 사용자 인터페이스 도구가 개발되었다.
- CUBRID Manager는[11] MacOS와 Linux에서 BSD 라이센스에 따라 배포되는 쿼리 브라우저 및 데이터베이스 관리 도구다.
- CUBRID Admin은 윈도우즈의 BSD 라이센스에 따라 배포되는 관리 도구다.
- SQLGate는 CHEQ에서 개발한 쿼리 브라우저 툴이다.UER on Windows.
- CUBRID 마이그레이션 툴킷은[12] 오라클, MS-SQL, MySQL 및 이전 버전의 CUBRID 데이터베이스에서 최신 CUBRID 데이터베이스 서버로 데이터를 마이그레이션할 수 있는 툴이다.
발매이력
버전 | 출시일자 | 베타 릴리스 날짜 | 추가 사항 |
---|---|---|---|
11.0 | 2021년 1월 | 보안 : TDE(투명 데이터 암호화) 등[13] | |
10.2 | 2019년 12월 | 새 데이터 유형: JSON(JavaScript 객체 표기법)[14] 및 기타 | |
10.1 | 2017년 7월 | 유용한 SQL 확장자: CTE(Common Table Expression) 및 기타.[15] | |
10.0 | 2016년 2월 | MVCC 프로토콜을 기반으로 한 스냅샷 격리 기능 제공.많은 SQL 확장자 및 함수/운영자 포함. | |
9.3 | 2014년 5월 | 새로운 SQL 기능, 지원 스키마 잠금, 다양한 SHOW 구문, 성능 향상 지원. | |
9.2 | 2013년 9월 | SQL 프로파일링, 새로운 SQL 지원, 몇 가지 개선 사항 | |
9.1 | 2013년 3월 | 새로운 SQL 기능 및 인덱스 힌트, 성능 향상 및 최적화. | |
9.0 | 2012년 10월 | 국제화 지원, 함수 인덱스, 필터 인덱스, 인덱스 스킵 스캔, MERGE 문, 창 기능. | |
8.4.3 | 2012년 11월 20일 | 데이터베이스 샤딩, API 레벨 로드 밸런싱, 모니터링 지원을 포함한 내장 웹 관리자 | |
8.4.1 | 2012년 2월 24일 | 2012년 2월 1일 | 중요한 성능 최적화, SQL 확장, REGEXP 연산자. |
8.4.0 | 2011년 7월 1일 | 2011년 5월 12일 | 고가용성[16][17] 향상, CUBRID C API 개선, 주목할 만한 성능 최적화, 인덱스 포함 |
3.1 | 2010년 12월 31일 | 2010년 11월 12일 | BLOB 및 CLOB 지원, 고가용성 모니터링 지원, 드라이버(JDBC, ODBC 및 CUBRID C API) 개선[18] |
3.0 | 2010년 10월 4일 | 2010년 7월 19일 | SQL 확장, 고가용성 향상[19][20] |
2.2 | 2010년 4월 30일 | 고가용성 향상, CUBRID C API 향상, 일부 성능 향상[21] | |
2.1 | 2009년 12월 | ||
2.0 | 2009년 8월 | ||
1.4 | 2009년 3월 | ||
1.3 | 2009년 2월 | ||
1.2 | 2009년 1월 | ||
1.1 | 2008년 11월 | CUBRID는 오픈 소스 프로젝트가 되었다. | |
1.0 | 2008년 10월 | 첫 번째 안정적 해제 |
적용들
CUBRID 지원을 추가했거나 CUBRID로 구동되는 일부 응용 프로그램 및 웹 사이트:
- JOOQ[22]
- SOFA 통계[23]
- SIDU[24]
- 아트[25]
- 스크립텔라
- JWhoisServer[26]
- Ii2 PHP 프레임워크[27]
- RedBeanPHP[28]
- 디비어버[29]
참고 항목
참조
- ^ "CUBRID Release". Retrieved 21 May 2020.
- ^ "CUBRID License".
- ^ "CUBRIDHA". Retrieved 2020-05-27.
- ^ "Shared Query Plan Caching in CUBRID". Archived from the original on 22 June 2014. Retrieved 9 February 2013.
- ^ "CUBRID Manual - CUBRID Click Counter". Archived from the original on 14 February 2013. Retrieved 11 February 2013.
- ^ "CUBRID Java Stored Procedures". Archived from the original on 14 February 2013. Retrieved 11 February 2013.
- ^ "CUBRID Manual - REGEXP/RLIKE Conditional Expressions". Archived from the original on 4 June 2013. Retrieved 11 February 2013.
- ^ "CUBRID 11 Manual - Regular Expressions Functions and Operators".
- ^ "How to use CSQL utilities". Archived from the original on 14 February 2013. Retrieved 8 February 2013.
- ^ "CUBRID APIs Wiki". Archived from the original on 26 June 2014. Retrieved 8 February 2013.
- ^ "CUBRID Manager". Archived from the original on 16 January 2013. Retrieved 8 February 2013.
- ^ "CUBRID Migration Toolkit". Archived from the original on 10 February 2013. Retrieved 8 February 2013.
- ^ "CUBRID 11.0 has been released". Retrieved 2021-02-02.
- ^ "CUBRID 10.2 has been released". Retrieved 2020-05-21.
- ^ "CUBRID 10.1 is released". Retrieved 2020-05-21.
- ^ "CUBRID 8.4.0 has arrived w/ x2 faster database engine!". Archived from the original on 2011-05-20. Retrieved 2011-05-17.
- ^ "CUBRID 8.4.0 GA is now available for download". Archived from the original on 2011-08-25. Retrieved 2011-07-14.
- ^ "CUBRID 3.1 Stable is now available!". Archived from the original on 2011-01-07. Retrieved 2011-01-03.
- ^ "CUBRID 3.0 Stable has arrived!". Archived from the original on 2010-10-08. Retrieved 2010-10-05.
- ^ "New CUBRID 2008 R3.0 Beta has been released". Archived from the original on 2011-08-27. Retrieved 2010-07-21.
- ^ "New Version Release - CUBRID 2008 R2.2". Archived from the original on 2011-07-25. Retrieved 2010-05-07.
- ^ "How to simulate MySQL INSERT statement extensions". Lukas Eder. 2012-05-15. Retrieved 2013-02-04.
- ^ "SOFA Statistics". sofastatistics.com. 2012-11-20. Retrieved 2010-11-17.
- ^ "SIDU Incredibly Simple Intuitive Web Based SQL Client". SIDU. 2012-05-25. Retrieved 2013-02-04.
- ^ "ART Simple Yet Effective Open Source Reporting Tool". art.sourceforge.net. 2012-06-10. Retrieved 2013-02-04.
- ^ "Run Your Own Whois Server With JWhoisServer". Klaus Zerwes. 2012-07-06. Retrieved 2013-02-04.
- ^ "Cubrid Query Builder". yii.com. Retrieved 2015-03-20.
- ^ "RedBeanPHP Super Easy to Use PHP ORM". Archived from the original on 2013-03-29. Retrieved 2013-02-04.
- ^ "DBeaver 4.2.5". Retrieved 2020-05-27.