| 開発者 | 株式会社キューブリッド |
|---|---|
| 初回リリース | 2008年11月20日 |
| 安定版リリース | 11.3 / 2023年9月[1] |
| リポジトリ | github.com/CUBRID/cubrid |
| 書かれた | C、C++、Java |
| オペレーティング·システム | Linux、Windows |
| 利用可能 | 英語、韓国語 |
| タイプ | RDBMS |
| ライセンス | サーバーエンジンにはApacheライセンス、 APIとGUIツールにはBSDライセンス |
| Webサイト | キュブリッド |
CUBRID ( / ˈ k juː b r ɪ d /「キューブリッド」) は、 CUBRID Corp. が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 は、ユーザーが指定した次のホストに自動的にフェールオーバーします。
サーバーフェイルオーバー
高可用性環境は、1:N マスター スレーブ サーバー ノードで構築できます。各スレーブ ノードは、CUBRID ハートビート プロトコルを介してマスターと通信します。マスター ノードが応答しない場合は、最初のスレーブ ノードがマスター ロールに昇格されます。ノード間のレプリケーションは、同期と非同期の 2 つのモードのいずれかで実行できます。
管理者は、各ブローカーが接続できるサーバー ホストのリストを指定でき、マスター ノードに障害が発生した場合は別のノードが使用されます。
スケーラビリティと保守性
バックアップ
CUBRID はオンライン、オフライン、増分バックアップをサポートします。
パフォーマンス
APIレベルの負荷分散
接続ブローカーは 4 つの異なるモード (読み取り/書き込み、読み取り専用、スレーブ専用、優先ホスト読み取り専用) で構成できるため、ユーザーが接続 URL 経由で提供した代替ホストのリストを負荷分散の方法として使用できます。負荷分散を使用すると、クライアント API は、前回接続に使用されたホストを除き、接続 URL で指定されたホストの中からランダムにホストを選択します。選択されたホストが利用できない場合は、すべてのホストが利用不可と判断されるまで選択が続けられます。このような場合、ドライバーはエラーを報告します。
クエリプランのキャッシュ
頻繁に使用されるクエリのコンパイル手順のほとんどを省略するために、ブローカーにクエリ実行プランキャッシュが実装されています。クエリは解析中にパラメータ化されるため、リテラル 定数の値のみが異なる 2 つのクエリは同じキャッシュエントリを共有します。[4]
ストレージ
インデックス
CUBRID は、単一列と複数列の両方の B+ ツリーインデックスをサポートしています。次の種類のインデックスを作成できます。
- インデックスと逆インデックス
- ユニークインデックスと逆ユニークインデックス
- 関数ベースのインデックス
- フィルタリングされたインデックス
クエリオプティマイザーは、次のような方法を使用してインデックスを使用し、より高速な実行プランを生成できます。
- カバーインデックスの特定
- 降順インデックススキャン
- ORDER BY スキップ
- GROUP BY スキップ
- マルチレンジ制限最適化[引用が必要]
- インデックスルーススキャン
- インデックススキップスキャン
テーブルパーティション
CUBRID は、範囲、ハッシュ、値リストによる水平パーティション分割をサポートし、テーブルごとに最大 1024 個のパーティションをサポートします。パーティションは個別にアクセスでき、通常のテーブルで有効なほとんどの操作をサポートします。
バージョン 9.0 以降、CUBRID は実行時のパーティションプルーニングを実装します。
SQL サポート
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構文を使用した階層クエリがサポートされています。クエリ実行の動作を制御するために、いくつかの特殊な疑似列と演算子が提供されています。
START WITH ... CONNECT BY
クリックカウンター内蔵
CUBRIDは、特定のイベント(ページビューなど)でデータベースフィールドを増分する必要があるWebアプリケーションの一般的なシナリオを最適化します。SELECT/UPDATEステートメントの組み合わせを使用する通常のアプローチとは対照的に、CUBRIDはSELECTステートメントの実行内からフィールドを増分することができ、UPDATEステートメントに関連する高価なコンパイル、実行、ロックのオーバーヘッドを回避します。[5]
Java ストアド プロシージャ
CUBRIDでサポートされている唯一のストアドプロシージャ言語はJavaであり、システムにJava仮想マシンをインストールする必要があります。 [6] 仮想マシンはサーバーによって起動および管理され、コードの実行に使用されます。
データベース アクセスを必要とするストアド プロシージャ コードでは、親トランザクションを使用するか、新しいトランザクションを発行して、 JDBCドライバーを使用する必要があります。
正規表現
LIKE演算子に加えて、CUBRIDは正規表現パターンマッチング用のREGEXP演算子も提供します。デフォルトでは、この演算子は入力文字列に対して大文字と小文字を区別しないマッチングを行いますが、大文字と小文字を区別するシナリオでは修飾子BINARYを使用できます。REGEXPのオプションのエイリアスはRLIKEです。[7]
CUBRID 11 の以前のバージョンでは、CUBRID はUnicode文字列のREGEXP をサポートしていません。[引用が必要]
CUBRID 11から、CUBRIDは以下の正規表現関数を追加し、Unicode文字列でサポートするようになりました。[8]
- REGEXP_COUNT、REGEXP_INSTR、REGEXP_LIKE、REGEXP_REPLACE、REGEXP_SUBSTR など
データ型
CUBRID ではさまざまなデータ タイプがサポートされています。
- 数値の場合:
- 文字列値の場合:
- 固定長の文字列とビット文字列: CHAR、BIT
- 可変長の文字列とビット文字列: CHAR VARYING、BIT VARYING
- 日付と時刻の値の場合:
- 日付値: DATE
- 時間の値: TIME
- 日付と時刻の値: DATETIME、TIMESTAMP (内部的にはUnix タイムスタンプとして保存されます)
- コレクションの場合: SET、MULTISET、LIST
- ユーザー定義列挙: ENUM
- 大きなオブジェクトの場合: BLOB、CLOB
- JavaScript オブジェクト表記の場合: JSON
サポートされているプラットフォーム
CUBRID は、 Microsoft WindowsおよびLinux (ほとんどのディストリビューション)、32 ビットおよび 64 ビット アーキテクチャで 利用できます。
インターフェース
コマンドライン
CUBRIDには、CUBRIDサーバー上でSQL文を実行するために使用できるcsqlという組み込みのコマンドラインインターフェイスが付属しています。 [9] このツールは、次の2つのモードのいずれかで使用できます。
- CS(クライアント/サーバー)モード。ローカルまたはリモートのCUBRIDサーバーに接続できます。
- SA(スタンドアロン)モードは主に管理目的で使用され、サーバーインスタンスをエミュレートしてローカルデータベースをマウントします。
CUBRID のcsql は、スキーマ情報、プラン生成、デバッグ、トランザクション制御、クエリタイミングなどに関連するいくつかの内部コマンドも実装しています。
プログラミング
CUBRIDは、言語固有のアプリケーションプログラミングインターフェイスを多数提供しています:[10] Cドライバ(CCIとも呼ばれ、CUBRIDのネイティブドライバ)、JDBC、PHP /PDOドライバ、ODBC、OLEDB、ADO.NET、Rubyドライバ、Pythonドライバ、Node.jsドライバ、Perlドライバ。
グラフィカル
CUBRID 用に いくつかのグラフィカル ユーザー インターフェイスツールが開発されています。
- CUBRID Manager [11]は、 macOSおよびLinux上でBSDライセンスの下で配布されているクエリブラウザおよびデータベース管理ツールです。
- CUBRID Admin は、Windows 上でBSD ライセンスに基づいて配布される管理ツールです。
- SQLGate は、CHEQUER が Windows 上で開発したクエリ ブラウザー ツールです。
- CUBRID移行ツールキット[12]は、Oracle、MS-SQL、MySQL、および以前のバージョンのCUBRIDデータベースから最新のCUBRIDデータベースサーバーへのデータ移行を可能にするツールです。
リリース履歴
アプリケーション
CUBRID サポートを追加した、または CUBRID を搭載しているアプリケーションと Web サイトの一部:
- ジョーク[24]
- SOFA統計[25]
- シドゥ[26]
- 芸術[27]
- スクリプテラ
- JWhoisServer [28]
- Yii2 PHPフレームワーク[29]
- レッドビーンPHP [30]
- DBeaver [31]
参照
参考文献
- ^ 「CUBRID Release」。GitHub 。 2023年9月27日閲覧。
- ^ 「CUBRIDライセンス」。
- ^ “CUBRIDHA”. 2020年5月22日. 2020年5月27日閲覧。
- ^ 「CUBRID での共有クエリ プラン キャッシュ」。2014 年 6 月 22 日時点のオリジナルよりアーカイブ。2013年2 月 9 日閲覧。
- ^ 「CUBRID マニュアル - CUBRID クリック カウンター」。2013 年 2 月 14 日時点のオリジナルよりアーカイブ。2013年2 月 11 日閲覧。
- ^ 「CUBRID Java ストアド プロシージャ」。2013 年 2 月 14 日時点のオリジナルよりアーカイブ。2013年2 月 11 日閲覧。
- ^ 「CUBRID マニュアル - REGEXP/RLIKE 条件式」。2013 年 6 月 4 日時点のオリジナルよりアーカイブ。2013年2 月 11 日閲覧。
- ^ 「CUBRID 11 マニュアル - 正規表現関数と演算子」。
- ^ 「CSQL ユーティリティの使用方法」。2013 年 2 月 14 日時点のオリジナルよりアーカイブ。2013 年2 月 8 日閲覧。
- ^ 「CUBRID APIs Wiki」。2014年6月26日時点のオリジナルよりアーカイブ。 2013年2月8日閲覧。
- ^ 「CUBRID Manager」。2013年1月16日時点のオリジナルよりアーカイブ。2013年2月8日閲覧。
- ^ 「CUBRID Migration Toolkit」。2013年2月10日時点のオリジナルよりアーカイブ。 2013年2月8日閲覧。
- ^ 「CUBRID 11.3がリリースされました」。2023年9月27日。 2023年9月27日閲覧。
- ^ 「CUBRID 11.2がリリースされました」。2022年5月23日。 2022年5月23日閲覧。
- ^ 「CUBRID 11.0がリリースされました」。2021年1月27日。 2021年2月2日閲覧。
- ^ 「CUBRID 10.2がリリースされました」。2020年3月20日。 2020年5月21日閲覧。
- ^ 「CUBRID 10.1がリリースされました」。2020年3月20日。 2020年5月21日閲覧。
- ^ 「CUBRID 8.4.0 が x2 高速データベース エンジンを搭載して登場しました!」。2011 年 5 月 20 日時点のオリジナルよりアーカイブ。2011年 5 月 17 日閲覧。
- ^ 「CUBRID 8.4.0 GA がダウンロード可能になりました」。2011 年 8 月 25 日時点のオリジナルよりアーカイブ。2011年 7 月 14 日閲覧。
- ^ 「CUBRID 3.1 Stable が利用可能になりました!」。2011 年 1 月 7 日時点のオリジナルよりアーカイブ。2011 年 1 月 3 日閲覧。
- ^ 「CUBRID 3.0 Stable が登場!」。2010 年 10 月 8 日時点のオリジナルよりアーカイブ。2010 年 10 月 5 日閲覧。
- ^ 「新しい CUBRID 2008 R3.0 ベータ版がリリースされました」。2011 年 8 月 27 日時点のオリジナルよりアーカイブ。2010 年 7 月 21 日閲覧。
- ^ 「新バージョンリリース - CUBRID 2008 R2.2」。2011年7月25日時点のオリジナルよりアーカイブ。2010年5月7日閲覧。
- ^ 「MySQL INSERT ステートメント拡張をシミュレートする方法」 Lukas Eder。2012 年 5 月 15 日。2013年 2 月 4 日閲覧。
- ^ 「SOFA統計」。sofastatistics.com。2012年11月20日。 2010年11月17日閲覧。
- ^ 「SIDU 信じられないほどシンプルで直感的な Web ベースの SQL クライアント」。SIDU。2012 年 5 月 25 日。2013年 2 月 4 日閲覧。
- ^ 「ART シンプルかつ効果的なオープンソースレポートツール」 art.sourceforge.net. 2012-06-10 . 2013-02-04に閲覧。
- ^ 「JWhoisServer で独自の Whois サーバーを実行する」Klaus Zerwes。2012 年 7 月 6 日。2013年 2 月 4 日閲覧。
- ^ 「Cubrid Query Builder」. yii.com . 2015年3月20日閲覧。
- ^ 「RedBeanPHP 超簡単に使える PHP ORM」。2013 年 3 月 29 日時点のオリジナルよりアーカイブ。2013 年 2 月 4 日閲覧。
- ^ 「DBeaver 4.2.5」。2020年5月27日閲覧。
外部リンク
- 公式サイト
