CUBRID

**CUBRID** 是一個全面開源，且完全免費的關係資料庫管理系統。CUBRID 為高效執行**線上交易處理 (OLTP)** 進行了高度優化，特別是需要處理大數據量和高並發請求的複雜商務服務。通過提供獨特的最優化特性，CUBRID 可以支持更多的並發請求，更少的響應時間。

## CUBRID 名稱的起源

CUBRID 這個名稱，實際上是兩個單詞的組合:"Cube"(立方體) 和 "Bride"(橋梁)。對 CUBRID 而言，"Bride" 代表 "data bridge"(數據橋)，而 "Cube" 代表儲存數據的盒子，寓意為放在其中的數據提供安全。因此，CUBRID 代表可以為機密信息提供安全保障。

## 產品許可信息 (License Policy)

CUBRID 針對 DBMS 引擎和應用程式編程接口 (API)，使用了不同類型的許可。DBMS 引擎使用 GNU 通用公共許可協議第二版或更高版本 (GPL v2.0 or later)，允許用戶發布，修改和獲取源碼。應用程式編程接口 (API) 使用伯克利軟體分發 (BSD) 許可協議，商業用戶可以自由開發和分發基於 CUBRID 的應用程式，而不必被迫開源自己的衍生產品。CUBRID 之所以採用兩種不同類型的許可，是為了減少帶給獨立軟體開發商 (ISV 開發和發布各種基於 CUBRID 應用的限制。

CUBRID license policy 的許可政策，同其他資料庫系統不同。如果要發布或銷售基於 MySQL 的應用，需要開放應用源碼或購買商業許可。而 CUBRID 由於針對引擎和 API 使用了不同的許可政策，從而降低了對傳統開源資料庫管理系統的使用限制，有效的為商業公司減輕了開支。

## 支持平台 (Supported platform)

CUBRID 可用於 Microsoft Windows 和 Linux（兩者為大多數發行版本）以及 32 位和 64 位體系結構。

## 接口 (Interface)

CUBRID 的伺服器和官方程序庫是使用 C/C++ 開發的，而 GUI 資料庫管理工具 CUBRID Manager，以及其他的 CUBRID 管理工具，則是使用 Java 開發的。

### 命令列（Command Line）

CUBRID 提供了一個稱為 **CSQL** 的命令行管理工具，通過此工具，用戶可以在 CUBRID 伺服器上上執行 SQL 語句。 並實現架構，障礙排除，事務控制等相關的內部命令例如： 
此工具通常可以在一下兩種模式之一中使用：

* CS (_client/server_) 模式：連接到本地或遠程 CUBRID 服務器
* SA (_stand alone_) 模式：主要用於管理目的

### 編程接口 (Programming Interface)

CUBRID 提供包括 JDBC、PHP/PHO、ODBC、ADO.NET、CCI、NODE.JS、PERL、Ruby 和 Python 等在內的特定程式語言的 API。

### 圖形用戶接口 (Graphical User Interface)

CUBRID 開發了以下 Graphical User Interface：

* CUBRID Manager：是在 BSD license 下開發的一款適用於 Microsoft Windows 和 Linux 的用於查詢瀏覽器和資料庫管理的工具
* CUBRID Admin：是在 BSD license 下開發的一款適用於 Microsoft Windows 的資料庫管理的工具
* SQLGate：是 CHEQUER Corp 研發的適用於 Microsoft Windows 的查詢瀏覽器工具
* CUBRID Migration Toolkit: 是一款允許用戶把資料庫從 Oracle, MS-SQL, MySQL 和舊版 CUBRID 移動到最新版本 CUBRID 伺服器的工具

## CUBRID 性能

### 高可用性（High Availability）

CUBRID HA 通過無共享群集 (shared-nothing clustering)，自動故障轉移和手動故障回復機制，提供了負載平衡，故障容許和連續的服務可用性。CUBRID 的 3 層體系結構允許通過兩級自動故障轉移對伺服器的高可用性提供本地支持：伺服器故障轉移和服務器故障轉移。

### 擴展性和維護性（Scalability and Maintainability）

* 備份（Backup): CUBRID 支持在線，離線和增量備份；
* API 負載均衡（API-level load balancing)；
* 查詢計劃緩存（Query plan caching）；
* Indexes: CUBRID 支持單列和多列 B + 樹索引，用戶可以利用 CUBRID 創建以下類型的索引：
  * 索引和反向索引；
  * 唯一索引和反向唯一索引；
  * 基於功能的索引；
  * 篩選索引；
* 資料表格分割（Table Partitioning）；
* SQL Support:CUBRID 實現了 ANSI SQL：1999 標準的較大子集，並擴展了更高版本的 SQL 標準和自定義功能
* 多種數據類型支援（Various Data Types supported）:
  * 數值:
    * integer numerics: _SMALLINT_ (16 bit), _INTEGER_ (32 bit), _BIGINT_ (64 bit)
    * floating point numerics: _FLOAT_ (32 bit), _DOUBLE_ (64 bit)
    * arbitrary precision numerics: _NUMERIC_
    * monetary values: _MONETARY_ (double precision floating point)
  * String 值:
    * fixed-length character and bit strings: _CHAR_, _BIT_
    * variable-length character and bit strings: _CHAR VARYING_, _BIT VARYING_
  * 日期和時間值:
    * date values: _DATE_
    * time values: _TIME_
    * date and time values: _DATETIME_, _TIMESTAMP_ (internally stored as a Unix timestamp)
  * 整合值: _SET_, _MULTISET_, _LIST_
    * 列舉（defined Enumerated type|enumerations）: _ENUM_
  * 大對象（large objects）: _BLOB_, _CLOB_
  * JS 對象簡譜（JavaScript Object Notation）: _JSON_

## 最新版本特性

CUBRID 的最新版本，是 2019 年 12 月發布的 CUBRID 10.2。與 CUBRID 10.1 版本相比，CUBRID 10.2 添加了一個在線並行加載器（online parallel loader），將海量數據加載性能提高了 10 倍。此外，CUBRID 10.2 為了提高給其索引功能，還添加了 JSON 數據類型和在線並行索引（online parallel index）。一般資料表運算式 (Common Table Expressions, CTE) 也在 CUBRID 10.2 版本中得到擴展。 為了提高穩定性，CUBRID 10.2 還添加了 Double Write Buffer，以防止部分頁面寫到磁盤上以及主要代碼的重構和錯誤修復。

## 產品開發歷史

## 參考

## 相關連結

* CUBRID 企業網站（頁面存檔備份，存於網際網路檔案館）