| キュブリッド | |
|---|---|
| 開発者 | 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 は、オンライン、オフライン、増分バックアップをサポートします。
パフォーマンス
APIレベルの負荷分散
接続ブローカーは4つの異なるモード(読み取り/書き込み、読み取り専用、スレーブ専用、優先ホスト読み取り専用)で設定できるため、ユーザーが接続URL経由で指定した代替ホストのリストを負荷分散の手段として使用できます。負荷分散を使用すると、クライアントAPIは接続URLで指定されたホスト(前回接続に使用されたホストを除く)の中からランダムに1つのホストを選択します。選択されたホストが利用できない場合、すべてのホストが利用不可と判断されるまで選択が続けられます。その場合、ドライバーはエラーを報告します。
クエリプランのキャッシュ
頻繁に使用されるクエリのコンパイルステップの大部分を省略するために、ブローカーにはクエリ実行プランキャッシュが実装されています。クエリは解析中にパラメータ化されるため、リテラル定数の値のみが異なる2つのクエリは同じキャッシュエントリを共有します。[ 5 ]
ストレージ
インデックス
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構文を使用した階層クエリがサポートされています。クエリ実行の動作を制御するために、いくつかの特殊な擬似列と演算子が用意されています。 STARTWITH...CONNECTBY
クリックカウンター内蔵
CUBRIDは、Webアプリケーションにおいて、特定のイベント(ページビューなど)でデータベースフィールドをインクリメントする必要がある一般的なシナリオを最適化します。SELECT/UPDATE文の組み合わせを使用する一般的なアプローチとは対照的に、CUBRIDはSELECT文の実行中にフィールドをインクリメントできるため、UPDATE文に伴うコストのかかるコンパイル、実行、ロックのオーバーヘッドを回避できます。[ 6 ]
Javaストアドプロシージャ
CUBRIDでサポートされている唯一のストアドプロシージャ言語はJavaであり、システムにJava仮想マシンをインストールする必要があります。 [ 7 ] 仮想マシンはサーバーによって起動および管理され、コード実行に使用されます。
データベース アクセスを必要とするストアド プロシージャ コードでは、親トランザクションを使用するか、新しいトランザクションを発行して、 JDBCドライバーを使用する必要があります。
正規表現
CUBRIDは、LIKE演算子に加えて、正規表現パターンマッチング用のREGEXP演算子も提供しています。デフォルトでは、この演算子は入力文字列に対して大文字と小文字を区別しないマッチングを行いますが、大文字と小文字を区別する場合にはBINARY修飾子を使用できます。REGEXPのオプションのエイリアスはRLIKEです。[ 8 ]
CUBRID 11 の以前のバージョンでは、CUBRID はUnicode文字列のREGEXP をサポートしていません。
CUBRID 11から、CUBRIDは以下の正規表現関数を追加し、Unicode文字列でサポートするようになりました。[ 9 ]
- 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にはcsqlというコマンドラインインターフェースが組み込まれており、これを使ってCUBRIDサーバー上でSQL文を実行することができます。[ 10 ] このツールは2つのモードのいずれかで使用できます。
- CS(クライアント/サーバー)モードでは、ローカルまたはリモートのCUBRIDサーバーに接続できます。
- SA(スタンドアロン)モードは主に管理目的で使用され、サーバーインスタンスをエミュレートしてローカルデータベースをマウントします。
CUBRID のcsql は、スキーマ情報、プラン生成、デバッグ、トランザクション制御、クエリタイミングなどに関連するいくつかの内部コマンドも実装しています。
プログラミング
CUBRIDは、言語固有のアプリケーションプログラミングインターフェイスを多数提供しています:[ 11 ] Cドライバ(CCIとも呼ばれ、CUBRIDのネイティブドライバ)、JDBC、PHP /PDOドライバ、ODBC、OLEDB、ADO.NET、Rubyドライバ、Pythonドライバ、Node.jsドライバ、Perlドライバ。
グラフィカル
CUBRID 用に いくつかのグラフィカル ユーザー インターフェイスツールが開発されています。
- CUBRID Manager [ 12 ]は、 macOSおよびLinux上でBSDライセンスの下で配布されているクエリブラウザおよびデータベース管理ツールです。
- CUBRID Admin は、Windows 上でBSD ライセンスに基づいて配布される管理ツールです。
- SQLGateはCHEQUERがWindows上でDelphiプログラミング言語[ 13 ]を使用して開発したクエリブラウザツールです。
- CUBRID移行ツールキット[ 14 ]は、Oracle、MS-SQL、MySQL、および以前のバージョンのCUBRIDデータベースから最新の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 サイトの一部:
- ジョーク[ 27 ]
- SOFA統計[ 28 ]
- シドゥ[ 29 ]
- 芸術[ 30 ]
- スクリプテラ
- JWhoisサーバー[ 31 ]
- Yii2 PHPフレームワーク[ 32 ]
- レッドビーンPHP [ 33 ]
- DBeaver [ 34 ]
参照
参考文献
- ^ 「CUBRIDリリース」 . GitHub . 2025年5月19日閲覧。
- ^ 「CUBRIDライセンス」。
- ^ "CUBRIDHA" . 2020年5月22日. 2020年5月27日閲覧。
- ^ 「AMQブローカーの設定 | Red Hat製品ドキュメント」 . docs.redhat.com . 2025年3月4日閲覧。
- ^ 「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日閲覧。
- ^ 「SQLGateはDelphiで構築された主要なデータベースIDEです」。エンバカデロテクノロジーズ。
- ^ 「CUBRID Migration Toolkit」。2013年2月10日時点のオリジナルよりアーカイブ。2013年2月8日閲覧。
- ^ 「CUBRID 11.4がリリースされました」。2025年5月19日。 2025年5月19日閲覧。
- ^ 「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 が、データベースエンジンが2倍高速化されて登場!」オリジナルより2011年5月20日アーカイブ。 2011年5月17日閲覧。
- ^ 「CUBRID 8.4.0 GAがダウンロード可能になりました」。2011年8月25日時点のオリジナルよりアーカイブ。2011年7月14日閲覧。
- ^ “CUBRID 3.1 Stable is now available!”オリジナルより2011年1月7日アーカイブ。 2011年1月3日閲覧。
- ^ “CUBRID 3.0 Stable has arrived!”オリジナルより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年1月26日時点のオリジナルよりアーカイブ。2013年2月4日閲覧。
- ^ 「ART シンプルかつ効果的なオープンソースレポートツール」 art.sourceforge.net. 2012年6月10日. 2013年2月4日閲覧。
- ^ 「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日閲覧。