キュブリッド

キュブリッド
開発者CUBRID株式会社
初回リリース2008年11月20日 (2008年11月20日
安定版リリース
2025年5月11日[ 1 ] (2025年5月
リポジトリgithub .com /CUBRID /cubrid
書かれたCC++Java
オペレーティング·システムLinuxWindows
入手可能な英語、韓国語
タイプRDBMS
ライセンスサーバーエンジンにはApacheライセンス、 APIとGUIツールにはBSDライセンス
Webサイトキュブリッド.org

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_NUMBERCOUNTMINMAXSUMAVGSTDDEV_POPSTDDEV_SAMPVAR_POPVAR_SAMPRANKDENSE_RANKLEADLAGNTILEです

階層クエリ

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_COUNTREGEXP_INSTRREGEXP_LIKEREGEXP_REPLACEREGEXP_SUBSTR

データ型

CUBRID では さまざまなデータ タイプがサポートされています。

  • 数値の場合:
    • 整数値: SMALLINT (16 ビット)、INTEGER (32 ビット)、BIGINT (64 ビット)
    • 浮動小数点数値: FLOAT (32 ビット)、DOUBLE (64 ビット)
    • 任意精度数値: NUMERIC
    • 通貨値: MONETARY (倍精度浮動小数点)
  • 文字列値の場合:
    • 固定長の文字列とビット文字列: CHARBIT
    • 可変長文字列およびビット文字列: CHAR VARYINGBIT VARYING
  • 日付と時刻の値の場合:
    • 日付値: DATE
    • 時間の値: TIME
    • 日付と時刻の値: DATETIMETIMESTAMP (内部的にはUnixタイムスタンプとして保存されます)
  • コレクションの場合: SETMULTISETLIST
  • ユーザー定義列挙体: ENUM
  • 大きなオブジェクトの場合: BLOBCLOB
  • JavaScriptオブジェクト表記の場合: JSON

サポートされているプラ​​ットフォーム

CUBRID は、 Microsoft WindowsおよびLinux (ほとんどのディストリビューション)、32 ビットおよび 64 ビット アーキテクチャで 利用できます。

インターフェース

コマンドライン

CUBRIDにはcsqlというコマンドラインインターフェースが組み込まれており、これを使ってCUBRIDサーバー上でSQL文を実行することができます。[ 10 ] このツールは2つのモードのいずれかで使用できます。

  • CS(クライアント/サーバー)モードでは、ローカルまたはリモートのCUBRIDサーバーに接続できます。
  • SA(スタンドアロン)モードは主に管理目的で使用され、サーバーインスタンスをエミュレートしてローカルデータベースをマウントします。

CUBRID のcsql は、スキーマ情報、プラン生成、デバッグ、トランザクション制御、クエリタイミングなどに関連するいくつかの内部コマンドも実装しています。

プログラミング

CUBRIDは、言語固有のアプリケーションプログラミングインターフェイスを多数提供しています:[ 11 ] Cドライバ(CCIとも呼ばれ、CUBRIDのネイティブドライバ)、JDBCPHP /PDOドライバ、ODBCOLEDBADO.NETRubyドライバ、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 サイトの一部:

参照

参考文献

  1. ^ 「CUBRIDリリース」 . GitHub . 2025年5月19日閲覧
  2. ^ 「CUBRIDライセンス」
  3. ^ "CUBRIDHA" . 2020年5月22日. 2020年5月27日閲覧
  4. ^ 「AMQブローカーの設定 | Red Hat製品ドキュメント」 . docs.redhat.com . 2025年3月4日閲覧
  5. ^ 「CUBRIDにおける共有クエリプランのキャッシュ」 。 2014年6月22日時点のオリジナルよりアーカイブ2013年2月9日閲覧。
  6. ^ 「CUBRIDマニュアル - CUBRIDクリックカウンター」 。 2013年2月14日時点のオリジナルよりアーカイブ2013年2月11日閲覧。
  7. ^ 「CUBRID Javaストアドプロシージャ」 。 2013年2月14日時点のオリジナルよりアーカイブ2013年2月11日閲覧。
  8. ^ 「CUBRIDマニュアル - REGEXP/RLIKE条件式」 。 2013年6月4日時点のオリジナルよりアーカイブ2013年2月11日閲覧。
  9. ^ 「CUBRID 11 マニュアル - 正規表現関数と演算子」
  10. ^ 「CSQLユーティリティの使い方」 。 2013年2月14日時点のオリジナルよりアーカイブ2013年2月8日閲覧。
  11. ^ 「CUBRID APIs Wiki」 。 2014年6月26日時点のオリジナルよりアーカイブ2013年2月8日閲覧。
  12. ^ “CUBRID Manager” . 2013年1月16日時点のオリジナルよりアーカイブ2013年2月8日閲覧。
  13. ^ 「SQLGateはDelphiで構築された主要なデータベースIDEです」。エンバカデロテクノロジーズ。
  14. ^ 「CUBRID Migration Toolkit」2013年2月10日時点のオリジナルよりアーカイブ2013年2月8日閲覧。
  15. ^ 「CUBRID 11.4がリリースされました」。2025年5月19日。 2025年5月19日閲覧
  16. ^ 「CUBRID 11.3がリリースされました」。2023年9月27日。 2023年9月27日閲覧
  17. ^ 「CUBRID 11.2がリリースされました」。2022年5月23日。 2022年5月23日閲覧
  18. ^ 「CUBRID 11.0がリリースされました」。2021年1月27日。 2021年2月2日閲覧
  19. ^ 「CUBRID 10.2がリリースされました」。2020年3月20日。 2020年5月21日閲覧
  20. ^ 「CUBRID 10.1がリリースされました」。2020年3月20日。 2020年5月21日閲覧
  21. ^ 「CUBRID 8.4.0 が、データベースエンジンが2倍高速化されて登場!」オリジナルより2011年5月20日アーカイブ。 2011年5月17日閲覧
  22. ^ 「CUBRID 8.4.0 GAがダウンロード可能になりました」2011年8月25日時点のオリジナルよりアーカイブ2011年7月14日閲覧。
  23. ^ “CUBRID 3.1 Stable is now available!”オリジナルより2011年1月7日アーカイブ。 2011年1月3日閲覧
  24. ^ “CUBRID 3.0 Stable has arrived!”オリジナルより2010年10月8日アーカイブ。 2010年10月5日閲覧
  25. ^ 「新しいCUBRID 2008 R3.0ベータ版がリリースされました」 。 2011年8月27日時点のオリジナルよりアーカイブ2010年7月21日閲覧。
  26. ^ 「新バージョンリリース - CUBRID 2008 R2.2」2011年7月25日時点のオリジナルよりアーカイブ2010年5月7日閲覧。
  27. ^ 「MySQL INSERT文の拡張をシミュレートする方法」 Lukas Eder. 2012年5月15日. 2013年2月4日閲覧
  28. ^ 「SOFA統計」 . sofastatistics.com. 2012年11月20日. 2010年11月17日閲覧
  29. ^ 「SIDU 信じられないほどシンプルで直感的なWebベースのSQLクライアント」 . SIDU. 2012年5月25日. 2013年1月26日時点のオリジナルよりアーカイブ2013年2月4日閲覧。
  30. ^ 「ART シンプルかつ効果的なオープンソースレポートツール」 art.sourceforge.net. 2012年6月10日. 2013年2月4日閲覧
  31. ^ 「JWhoisServerで独自のWhoisサーバーを実行する」 Klaus Zerwes. 2012年7月6日. 2013年2月4日閲覧
  32. ^ 「Cubrid Query Builder」 . yii.com . 2015年3月20日閲覧。
  33. ^ 「RedBeanPHP 超簡単なPHP ORM」2013年3月29日時点のオリジナルよりアーカイブ2013年2月4日閲覧。
  34. ^ 「DBeaver 4.2.5」 。 2020年5月27日閲覧