| キュブリッド | |
|---|---|
| 開発者 | CUBRID株式会社 |
| 初回リリース | 2008年11月20日 (2008年11月20日) |
| 安定版リリース | |
| リポジトリ | github |
| 書かれた | C、C++、Java |
| オペレーティング·システム | Linux、Windows |
| 入手可能な | 英語、韓国語 |
| タイプ | RDBMS |
| ライセンス | サーバーエンジンにはApacheライセンス、 APIとGUIツールにはBSDライセンス |
| Webサイト | キュブリッド |
CUBRID(/ ˈ k juː b r ɪ d /「キューブリッド」)は、CUBRID社がOLTP向けに開発した、オブジェクト拡張機能を備えたオープンソースのSQLベースのリレーショナルデータベース管理システム(RDBMS)です。CUBRIDという名前は、 「cube」と「bridge」という2つの単語を組み合わせたもので、「cube」はデータのための空間、「bridge」はデータブリッジを意味します。
CUBRIDは、サーバーエンジンとインターフェースにそれぞれ別々のライセンスを適用しています。サーバーエンジンはApache License 2.0を採用しており、ソースコードの配布、改変、取得が可能です。CUBRID APIとGUIツールは、派生作品の公開義務のないBerkeley Software Distributionライセンスを採用しています。2つの別々のライセンス体系を採用する理由は、独立系ソフトウェアベンダー(ISV)がCUBRIDベースのアプリケーションを開発・配布する完全な自由を提供するためです。[ 2 ]
CUBRID データベースを他のリレーショナル データベース システムと区別する特徴は、データベース サーバー、接続ブローカー、アプリケーション層で構成される 3 層クライアント サーバー アーキテクチャです。
CUBRID 接続ブローカーの主な役割は次のとおりです。
パフォーマンスをさらに向上させるため、接続ブローカーはローカルオブジェクトプールを使用します。これにより、タプルの挿入、削除、DDLステートメントなどの特定の操作をデータベースサーバーから遅延させることができます。これにより、サーバーの負荷が軽減され、応答性が向上します。
従来のデータベースシステムでは、コネクションブローカーとデータベースサーバーが同一マシン上に存在しますが、CUBRIDのブローカーは別々のマシン上で実行できます。この分散アーキテクチャにより、複数のマシンが単一のデータベースに対するクエリを処理できるため、リソース利用率、スケーラビリティ、高可用性が向上します。コネクションブローカーは、タスクのオフロードと処理能力の分散により、データベースの効率とパフォーマンスを大幅に向上させます。
CUBRID High Availability は、シェアードナッシング クラスタリング、自動フェイルオーバー、手動フェイルバック メカニズムを通じて、負荷分散、フォールト トレラント、継続的なサービス可用性を実現します。
CUBRIDの3層アーキテクチャは、ブローカーフェイルオーバーとサーバーフェイルオーバーの2段階自動フェイルオーバーによる高可用性のネイティブサポートを可能にします。[ 3 ]
クライアントAPIを介してブローカーに接続する際に、ユーザーは接続URLにおいて、ブローカーが受信リクエストを待機する代替ホストのリストを指定できます。いずれかのホストでハードウェア、ネットワーク、オペレーティングシステム、またはソフトウェアに障害が発生した場合、基盤となるクライアントAPIは、ユーザーが指定した次のホストに自動的にフェイルオーバーします。[ 4 ]
高可用性環境は、1:Nのマスター・スレーブサーバーノードで構築できます。各スレーブノードは、CUBRIDハートビートプロトコルを介してマスターと通信します。マスターノードが応答しなくなった場合、最初のスレーブノードがマスターに昇格します。ノード間のレプリケーションは、同期と非同期の2つのモードのいずれかで実行できます。
管理者は、各ブローカーが接続できるサーバー ホストのリストを指定でき、マスター ノードに障害が発生した場合には別のホストが使用されます。
CUBRID は、オンライン、オフライン、増分バックアップをサポートします。
接続ブローカーは4つの異なるモード(読み取り/書き込み、読み取り専用、スレーブ専用、優先ホスト読み取り専用)で設定できるため、ユーザーが接続URL経由で指定した代替ホストのリストを負荷分散の手段として使用できます。負荷分散を使用すると、クライアントAPIは接続URLで指定されたホスト(前回接続に使用されたホストを除く)の中からランダムに1つのホストを選択します。選択されたホストが利用できない場合、すべてのホストが利用不可と判断されるまで選択が続けられます。その場合、ドライバーはエラーを報告します。
頻繁に使用されるクエリのコンパイルステップの大部分を省略するために、ブローカーにはクエリ実行プランキャッシュが実装されています。クエリは解析中にパラメータ化されるため、リテラル定数の値のみが異なる2つのクエリは同じキャッシュエントリを共有します。[ 5 ]
CUBRIDは、単一列と複数列の両方の B+ツリーインデックスをサポートしています。以下の種類のインデックスを作成できます。
クエリオプティマイザーは、次のような方法を使用してインデックスを使用し、より高速な実行プランを生成できます。
CUBRIDは、範囲、ハッシュ、値リストによる水平分割をサポートし、テーブルごとに最大1024個のパーティションを作成できます。パーティションは個別にアクセスでき、通常のテーブルで有効なほとんどの操作をサポートします。
バージョン 9.0 以降、CUBRID は実行時のパーティションプルーニングを実装します。
CUBRID は、ANSI SQL:1999標準の大規模なサブセットを実装し、それ以降の SQL 標準の機能とカスタム機能で拡張されています。
CUBRIDは、 SQL:2003標準で定義されているウィンドウ関数をサポートしています。実装されている関数は、 ROW_NUMBER、COUNT、MIN、MAX、SUM、AVG、STDDEV_POP、STDDEV_SAMP、VAR_POP、VAR_SAMP、RANK、DENSE_RANK、LEAD、LAG、NTILEです。
CUBRIDでは、非標準のOracle構文を使用した階層クエリがサポートされています。クエリ実行の動作を制御するために、いくつかの特殊な擬似列と演算子が用意されています。 STARTWITH...CONNECTBY
CUBRIDは、Webアプリケーションにおいて、特定のイベント(ページビューなど)でデータベースフィールドをインクリメントする必要がある一般的なシナリオを最適化します。SELECT/UPDATE文の組み合わせを使用する一般的なアプローチとは対照的に、CUBRIDはSELECT文の実行中にフィールドをインクリメントできるため、UPDATE文に伴うコストのかかるコンパイル、実行、ロックのオーバーヘッドを回避できます。[ 6 ]
CUBRIDでサポートされている唯一のストアドプロシージャ言語はJavaであり、システムにJava仮想マシンをインストールする必要があります。 [ 7 ] 仮想マシンはサーバーによって起動および管理され、コード実行に使用されます。
データベース アクセスを必要とするストアド プロシージャ コードでは、親トランザクションを使用するか、新しいトランザクションを発行して、 JDBCドライバーを使用する必要があります。
CUBRIDは、LIKE演算子に加えて、正規表現パターンマッチング用のREGEXP演算子も提供しています。デフォルトでは、この演算子は入力文字列に対して大文字と小文字を区別しないマッチングを行いますが、大文字と小文字を区別する場合にはBINARY修飾子を使用できます。REGEXPのオプションのエイリアスはRLIKEです。[ 8 ]
CUBRID 11 の以前のバージョンでは、CUBRID はUnicode文字列のREGEXP をサポートしていません。
CUBRID 11から、CUBRIDは以下の正規表現関数を追加し、Unicode文字列でサポートするようになりました。[ 9 ]
CUBRID では さまざまなデータ タイプがサポートされています。
CUBRID は、 Microsoft WindowsおよびLinux (ほとんどのディストリビューション)、32 ビットおよび 64 ビット アーキテクチャで 利用できます。
CUBRIDにはcsqlというコマンドラインインターフェースが組み込まれており、これを使ってCUBRIDサーバー上でSQL文を実行することができます。[ 10 ] このツールは2つのモードのいずれかで使用できます。
CUBRID のcsql は、スキーマ情報、プラン生成、デバッグ、トランザクション制御、クエリタイミングなどに関連するいくつかの内部コマンドも実装しています。
CUBRIDは、言語固有のアプリケーションプログラミングインターフェイスを多数提供しています:[ 11 ] Cドライバ(CCIとも呼ばれ、CUBRIDのネイティブドライバ)、JDBC、PHP /PDOドライバ、ODBC、OLEDB、ADO.NET、Rubyドライバ、Pythonドライバ、Node.jsドライバ、Perlドライバ。
CUBRID 用に いくつかのグラフィカル ユーザー インターフェイスツールが開発されています。
| バージョン | 発売日 | ベータ版リリース日 | 追加事項 |
|---|---|---|---|
| 11.4 | 2025年5月 | Oracleとの互換性のためのPL/CSQLサポート。[ 15 ] | |
| 11.3 | 2023年9月 | 接続性:データベースリンクの改善により接続性が向上しました。[ 16 ] | |
| 11.2 | 2022年5月 | 接続性:データベースリンクと補足ログを通じて、同種および異種のDB間のスケーラビリティを提供します。[ 17 ] | |
| 11.0 | 2021年1月 | セキュリティ:TDE(透過的データ暗号化)など。[ 18 ] | |
| 10.2 | 2019年12月 | 新しいデータ型:JSON(JavaScript Object Notation)など。[ 19 ] | |
| 10.1 | 2017年7月 | 便利なSQL拡張機能(CTE(共通テーブル式)など)が含まれています。[ 20 ] | |
| 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レベルの負荷分散、監視サポート付きの組み込みWebマネージャー | |
| 8.4.1 | 2012年2月24日 | 2012年2月1日 | 重要なパフォーマンス最適化、SQL 拡張、REGEXP 演算子。 |
| 8.4.0 | 2011年7月1日 | 2011年5月12日 | 高可用性の改善、CUBRID C APIの改善、注目すべきパフォーマンスの最適化、カバーインデックス[ 21 ] [ 22 ] |
| 3.1 | 2010年12月31日 | 2010年11月12日 | BLOBおよびCLOBのサポート、高可用性監視のサポート、ドライバ(JDBC、ODBC、CUBRID C API)の改善[ 23 ] |
| 3.0 | 2010年10月4日 | 2010年7月19日 | SQL拡張機能、高可用性の改善[ 24 ] [ 25 ] |
| 2.2 | 2010年4月30日 | 高可用性の改善、CUBRID C APIの改善、いくつかのパフォーマンスの改善[ 26 ] | |
| 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 を搭載しているアプリケーションと Web サイトの一部: