カラムナエンジン
大規模データの複雑な分析や膨大なデータのアドホッククエリシナリオにおいて、カラムナストレージはAPデータベースの重要な機能の一つです。カラムナストレージは、行指向ストレージとは異なるデータファイルの編成方法であり、テーブル内のデータを列単位で物理的に配置します。データをカラムナストレージで格納すると、分析シナリオにおいてクエリ計算に使用される列データのみをスキャンでき、行全体のスキャンを回避して、I/Oやメモリなどのリソース使用量を削減し、計算速度を向上させます。また、列単位での格納は本質的にデータ圧縮に適しており、高い圧縮率を得やすく、ストレージ容量とネットワーク転送帯域幅を削減できます。
OceanBaseは、LSM-Tree(Log Structured Merge-Tree)のデータストレージ構造に基づき、高同時実行トランザクション処理(TP)能力の継続的な最適化を通じて、ランダム書き込み、リアルタイム更新、強整合性などのシナリオでパフォーマンスを向上させ続け、豊富なエンジニアリング実践経験を蓄積し、独自のストレージエンジン技術体系を構築してきました。同時に、LSM-Treeの階層メジャーコンパクション特性とデータの静的組織化能力により、バッチ書き込みと低頻度更新を特徴とするOLAPシナリオに本質的に適合しています。カラムナデータ圧縮、階層メジャーコンパクション戦略、ストレージ断片化の最適化により、分析型ワークロードの効率的なスキャン要件を満たすとともに、TPとAPの混合ワークロードを単一アーキテクチャでサポートすることを実現しています。
V4.3バージョンでは、既存の技術的蓄積に基づき、OceanBaseストレージエンジンをさらに拡張し、カラムナストレージのサポートを実現してストレージの統合を図りました。一つのコード、一つのアーキテクチャ、一つのOBServerで、カラムナデータと行指向データが共存し、TP型とAP型のクエリ性能を真に両立させています。
カラムナエンジンアーキテクチャ
OceanBaseデータベースは、ネイティブ分散型データベースとして、ユーザーデータをデフォルトでマルチレプリカで保存します。マルチレプリカの利点を活用し、ユーザーに強力なデータ検証やデータ移行の再利用などの拡張体験を提供するため、独自開発のLSM-Treeストレージエンジンにも多くの特化設計が施されています。まず、ユーザーデータ全体は大きく二つの部分に分けられます:ベースラインデータと増分データです。
ベースラインデータ
グローバル整合性バージョン管理:従来のLSM-Tree設計パラダイムを超え、OceanBaseデータベースは分散マルチレプリカアーキテクチャの基盤を活用して「日次メジャーコンパクション」メカニズムを実現しています。システムは定期的またはオンデマンドでグローバルバージョン番号を選定し、テナントは定期的またはユーザー操作に基づいてグローバルバージョン番号を選択します。すべてのレプリカはこのバージョンに基づいてメジャーコンパクションを完了し、このバージョンのベースラインデータを生成します。すべてのレプリカの同一バージョンのベースラインデータは物理的に完全に一致します。
多様なストレージ形式のサポート:ベースラインデータは、行指向、カラムナ、および行列混合の三つの物理形態をサポートしています。ユーザーはテーブル作成時の設定を通じて柔軟に選択でき、異なるビジネスシナリオのストレージ要件を満たせます。
増分データ
- 動的マルチバージョン管理:最新のベースラインデータバージョン以降のすべての書き込み(MemTableに書き込まれたばかりのメモリデータ、またはSSTableにフラッシュされたディスクデータ)は増分データに分類されます。各レプリカは独立してマルチバージョンレコードを管理し、一貫性は保たれません。また、ベースラインデータが指定バージョンに基づいて生成されるのとは異なり、増分データにはすべてのマルチバージョンデータが含まれます。
- 行指向優先戦略:増分データは強制的に行指向モードを採用し、トランザクション処理(TP)のパスがネイティブの行指向アーキテクチャと完全に互換性を持つことを保証し、トランザクションログやロック機構などのコアコンポーネントを共有します。

行列混合ストレージ体系
カラムナストレージのシナリオにおける更新制御の特性に基づき、OceanBaseデータベースは自身のベースラインデータと増分データの特性を組み合わせ、上位層に対して透過的なカラムナストレージの実装方法を提案しています:
- ストレージ形態の分離:ベースラインデータはカラムナ形式で編成され(各列は独立したSSTableとして、仮想的に論理テーブルに組み合わされる)、増分データは行指向形式を維持します。DML操作と上流・下流との同期は完全に意識する必要がありません。
- 動的同期エンジン:基盤となる行列データの双方向同期パイプラインを構築し、OLAPシステムの移行や行指向からのアップグレードをスムーズに移行することをサポートします。業務ではストレージ形式の違いを意識する必要はありません。
- インテリジェントなルーティング機構:オプティマイザーから実行エンジンまで、システムはワークロード特性に基づいて最適な行/列アクセスパスを自動選択し、カラムナストレージの性能優位性をAPシナリオで十分に発揮させると同時に、行指向のTPトランザクションに対するネイティブサポートを維持します。
主要な統合能力
能力の観点 |
主要な技術実装 |
|---|---|
| SQLの統合 |
|
| ストレージの統合 |
|
| トランザクションの統合 |
|

カラムナストレージの主な特徴
特徴1:適応型Compaction
新しいカラムナストレージモードを導入した後、データのメジャーコンパクション動作は従来の行指向データとは大きく異なります。増分データはすべて行指向形式であるため、ベースラインデータとメジャーコンパクションを行った後、各列の独立したSSTableに分割されます。そのため、メジャーコンパクション時間とリソース使用量は行指向形式に比べて相対的に大幅に増加します。カラムナテーブルのメジャーコンパクションを高速化するため、ストレージ層でもCompactionプロセスを適応・最適化しています。カラムナテーブルでは、行指向テーブルと同様に水平分割による並列メジャーコンパクションの高速化に加え、垂直分割による高速化も追加されています。カラムナテーブルでは、複数列のメジャーコンパクション処理を一つのメジャーコンパクションタスク内で行い、タスク内の列数はシステムリソースに応じて自動的に調整可能です。これにより、全体としてメジャーコンパクション速度とメモリ消費のバランスをより良く実現しています。
特徴2:カラムナエンコーディングアルゴリズム
OceanBaseデータベースでは、データの保存時に2段階の圧縮が施されます。第1段階はOceanBase独自の行列混合エンコーディングによる圧縮であり、第2段階は汎用圧縮です。行列混合エンコーディングはデータベースの組み込みアルゴリズムであるため、解凍せずに直接クエリを実行でき、エンコーディング情報を活用してクエリフィルタリングを高速化することができます。しかし、従来の行列混合エンコーディングアルゴリズムは依然として行指向であったため、カラムストアテーブル向けに全く新しい列指向エンコーディングアルゴリズムを実装しました。新アルゴリズムは、従来のエンコーディングアルゴリズムと比較して、クエリの全面的なベクトル化実行をサポートし、異なる命令セットと互換性のあるSIMD最適化をサポートします。また、数値型に対して圧縮率を大幅に向上させ、従来のアルゴリズムに比べて性能と圧縮率の両面で全面的な向上を実現しています。
機能3:Skip Index
一般的なカラムストアデータベースでは、各列データに対して一定の粒度で事前集計計算を行い、集計結果をデータと共に永続化します。ユーザーがクエリで列データにアクセスする際、データベースは事前集計データを用いてデータをフィルタリングし、データアクセスのオーバヘッドを大幅に削減し、不要なI/O消費を抑えることができます。カラムストアエンジンでは、skip indexのサポートも追加されており、各列データに対してマイクロブロック単位で最大値、最小値、null総数など複数の次元で集計計算を行い、段階的に上層へ集計累積してマクロブロックやSSTableなどより大きな粒度の集計値を得ます。ユーザークエリはスキャン範囲に応じて適切な粒度の集計値を選択し、フィルタリングや集計出力を行うことができます。
機能4:クエリプッシュダウン
OceanBaseデータベースはV4.xバージョンから、ストレージ層の演算子および式が全面的にベクトル化実行に対応し、一部のシナリオでクエリプッシュダウンをサポートしています。カラムストアエンジンでは、プッシュダウン機能がさらに強化・拡張され、具体的には以下の内容が含まれます:
すべてのクエリフィルタのプッシュダウン。同時に、フィルタの種類に応じてskip indexやエンコーディング情報を活用した高速化も可能です。
一般的な集約関数のプッシュダウン。非group byシナリオにおいて、現在count/max/min/sum/avgなどの集約関数はストレージエンジンまでプッシュダウン可能です。
group byのプッシュダウン。NDVが少ない列に対して、group byのストレージ計算をプッシュダウンし、マイクロブロック内のディクショナリ情報を活用して大幅に高速化します。
カラムストアの詳細な紹介と使用方法については、カラムストアをご参照ください。
ベクトル化実行エンジン
ベクトル化実行は、データを効率的にバッチ処理する技術であり、分析系クエリにおいて実行性能を大幅に向上させることができます。OceanBaseデータベースはV3.2バージョンでベクトル化実行エンジンを導入しましたが、デフォルトでは無効でした。OceanBaseデータベースV4.0バージョンから、ベクトル化実行エンジンはデフォルトで有効になり、OceanBaseデータベースV4.3バージョンではベクトル化エンジン2.0が実装されました。データ形式、演算子実装の最適化、ストレージのベクトル化最適化などにより、ベクトル化エンジンの実行性能が大幅に向上しました。

データ形式の概要
ベクトル化エンジン2.0では、新しい列単位のデータ形式が導入され、データ記述情報(null、len、ptr)をそれぞれ列ごとに分けて格納することで、冗長なストレージを回避しています。異なるデータ型と使用シナリオに基づき、固定長データ形式、可変長離散形式、可変長連続形式の3種類のデータ形式が設計されています。
- 固定長データ形式:length値は一度だけ格納すればよく、冗長な格納は不要で、直接アクセスが可能です。データの局所性に優れており、1.0バージョンと比較して、スペースの節約、効率の向上が図られ、ポインタのswizzling操作も省略されています。
- 可変長離散形式:各データはメモリ内で連続していない可能性があり、アドレスポインタと長さで記述されます。この形式では、データをエンコードする際にディープコピーを回避でき、ショートサーキット計算シナリオに適しており、データの再構成を回避します。
- 可変長連続形式:データはメモリ内で連続して格納され、長さ情報とオフセットアドレスはoffset配列によって記述されます。この形式はデータアクセスの効率を向上させますが、ショートサーキット計算やカラムストアエンコーディングの投影時には再構成とディープコピーが必要となります。この形式は主に列単位のマテリアライゼーションシナリオで使用されます。
演算子および式の性能最適化
ベクトル化エンジン2.0では、演算子および式が全面的に最適化されています。コアとなる考え方は、新しい形式の情報とデータ構造の特化実装を活用することで、CPUキャッシュミスと命令オーバヘッドを低減し、全体の実行性能を向上させることです。主な最適化には以下のものが含まれます:
- batchデータ属性情報の活用:batchデータの特徴情報を維持し、NULL値の特別処理やフィルタリング判断を排除することで、SIMD計算を最適化します。
- アルゴリズムおよびデータ構造の最適化:中間結果のマテリアライズ構造を最適化し、行/列マテリアライズをサポートします。Sort演算子では、ソートキーと非ソートキーの分離マテリアライズを実装し、ソート処理中のキャッシュミスを低減し、全体の効率を向上させます。
- 特化実装による最適化:具体的なシナリオに応じた最適化を行います。例えば、複数列の固定長join keyを一つの固定長列にエンコードする方法や、集計計算の特化実装により、実行効率を顕著に向上させます。
ストレージのベクトル化最適化
ストレージ層は新しいベクトル化形式を全面的にサポートし、SIMDによる投影の高速化、述語プッシュダウン、集計プッシュダウン、groupbyプッシュダウンなどの操作を通じて性能を向上させます。投影時には列タイプと長さに応じたカスタマイズテンプレートを使用し、計算を簡略化します。述語計算は列エンコード上で直接行われ、複雑な式の高速計算を促進します。集計プッシュダウンは中間層の事前集計情報を活用し、統計関数を効率的に処理します。groupbyプッシュダウンはエンコードデータ情報を活用して性能を顕著に向上させます。
リアルタイム書き込み
OceanBaseはLSM-Tree(Log-Structured Merge-tree)アーキテクチャを採用しており、この設計によりデータベースのリアルタイム書き込み機能が保証されています。以下では、OceanBaseデータベースのリアルタイム書き込み機能について詳しく説明します。
コアストレージメカニズム
LSM-Tree
効率的なリアルタイム書き込みをサポートするため、OceanBaseはLSM-Tree構造を採用して増分データを格納します。LSM-Treeは、書き込み操作を最適化するために特別に設計されたツリー構造です。そのコアとなる考え方は、書き込み操作をまずメモリ内の構造に記録し、一定量に達した後に非同期でバッチ処理としてディスクに書き込むことで、ディスクI/Oの回数を大幅に減らし、書き込み性能を向上させることです。OceanBaseはこれらの増分データを定期的にダンプやメジャーコンパクションのプロセスを通じてベースラインデータと統合し、データの一貫性と完全性を確保します。
リアルタイム書き込み機能
OceanBaseデータベースはLSM-Treeアーキテクチャを採用しており、リアルタイムデータの書き込み処理において優れた性能を発揮します。少量のデータ更新であっても大量のデータインポートであっても、OceanBaseデータベースは迅速に応答し、データのリアルタイム書き込みを保証します。その主な利点は以下の点です:
- 効率的な書き込み処理:LSM-Treeにより、OceanBaseデータベースは書き込み操作を集中的に処理し、ディスク操作を削減して書き込み効率を向上させます。
- データの即時検索可能性:データがLSM-Treeのメモリ構造に書き込まれると、すぐに外部へのクエリ提供が可能となり、データのリアルタイム性が保証されます。
- 最適化されたデータコンパクションプロセス:インテリジェントなダンプとメジャーコンパクション戦略により、効率的なクエリをサポートします。
- 強力な並行処理能力:分散アーキテクチャを活用することで、OceanBaseデータベースは複数ノード上で書き込み操作を並行処理でき、リアルタイムデータ処理能力を大幅に向上させます。

マテリアライズドビュー
マテリアライズドビュー(Materialized View, MV)は、AP業務を支える重要な機能の一つです。ビューのクエリ結果を事前に計算・保存することで、リアルタイム計算を削減し、クエリ性能を向上させるとともに、複雑なクエリロジックを簡素化します。主に、高速なレポート生成やデータ分析のシナリオで利用されます。
OceanBaseデータベースがサポートするのは非同期マテリアライズドビューです。これは、ベーステーブルのデータが変更されても、マテリアライズドビューが即座に更新されない仕組みであり、ベーステーブルのDML操作の実行性能を保証します。ただし、マテリアライズドビューのデータはベーステーブルに対して遅延が生じるため、タイムリーなリフレッシュによるデータ更新が必要です。マテリアライズドビューのデータ更新には、全量リフレッシュと増分リフレッシュの2つの戦略がサポートされています。
- 全量リフレッシュは、マテリアライズドビューに対応するクエリステートメントを直接再実行し、既存のビュー結果データを完全に計算して上書きします。遅延要件が低く、ベーステーブルのデータ更新頻度が低い、またはデータ量が少ないシナリオに適しています。例えば、毎日または毎週更新されるデータ集計レポートなどが該当します。
- 増分リフレッシュは、前回のリフレッシュ以降のデータ変更部分のみを処理します。この方法により、リフレッシュに必要な時間とリソースを大幅に削減できます。正確な増分リフレッシュを実現するため、OceanBaseデータベースはOracle MLOG(Materialized View Log)に類似したマテリアライズドビューのログ機能を実装しています。これにより、ベーステーブルの増分更新データを詳細に記録し、マテリアライズドビューが迅速に増分リフレッシュできるようにします。増分リフレッシュ方式は、特に遅延要件が高く、データ量が膨大で変更頻度が高い業務シナリオに適しています。例えば、リアルタイム取引システムでは、データが毎分、あるいは毎秒変化する可能性があります。
OceanBaseデータベースは、リアルタイムマテリアライズドビューもサポートしており、データのリアルタイム分析を可能にします。リアルタイムマテリアライズドビューは、マテリアライズドビューのログメカニズムを利用してベーステーブルデータの変更をキャプチャ・処理し、クエリ時にオンラインで計算・データ変更を統合します。これにより、マテリアライズドビューが物理的に最新の変更データを保持していなくても、ユーザーがベーステーブルを直接クエリした場合と一致する結果を得られることが保証されます。同時に、マテリアライズドビューのクエリリライト能力を活用して、透過的なクエリ高速化を実現します。
OceanBaseデータベースでは、マテリアライズドビューに主キーを指定したり、インデックスを作成したりすることができます。これにより、主キーやインデックスに基づく単一行検索、範囲検索、関連シナリオの性能が最適化されます。マテリアライズドビューが複数テーブルのJOINによって形成されるワイドテーブルの場合、列指向ストレージのマテリアライズドビューを作成することで、特定のクエリの性能を向上させることができます。また、パーティションマテリアライズドビューを作成することで、パーティションプルーニングの能力を活用して、操作対象のデータ量を削減できます。
最新のOceanBase V4.3.5バージョンでは、ネストされたマテリアライズドビュー(Nested Materialized View, Nested MV)機能が導入されました。これにより、既存のマテリアライズドビューを基に新しいマテリアライズドビューを容易に構築できるようになりました。データウェアハウスのETLプロセスに適しており、ネストされたマテリアライズドビューはデータ変換やロード段階で中間結果を生成できます。これらの結果は後続処理の入力として利用でき、データ処理プロセス全体の効率をさらに最適化できます。
マテリアライズドビューの詳細な紹介と使用ガイドについては、マテリアライズドビューの概要(MySQLモード)およびマテリアライズドビューの概要(Oracleモード)をご参照ください。
オプティマイザー
OceanBase APオプティマイザーは、TPオプティマイザーの機能を完全に継承しつつ、各種複雑なクエリシナリオに対して、各モジュールを専門的に強化しています。
より完璧なクエリリライト能力:クエリリライトモジュールは豊富なリライトアルゴリズムをサポートしており、異なるリライトアルゴリズムは異なるパターンにマッチし、対応する等価変換を行い、業務SQLをより「良い」方向へと変換します。現在、ビューの統合、サブクエリの昇格、内部結合の除去、外部結合の除去、恒真・恒偽条件の除去など、ルールベースのリライトアルゴリズムをサポートしているほか、OR Expansion、JAサブクエリの昇格、Win Magic、Group-By Placementなど、コストベースのリライトアルゴリズムもサポートしています。
より正確な統計情報と行数推定メカニズム:OceanBaseは現在、テーブル、列、インデックスなどのオブジェクトに対する基本統計情報、ヒストグラムなどの収集をサポートしており、毎日の定時収集、期限切れ後の非同期収集、オンライン収集、手動収集など、多様な方法を提供しています。また、行数推定には2つの方法があります。1つは統計情報から関連する選択率を計算し、その選択率に基づいて行数を推定する方法です。もう1つは、オプティマイザーがプラン生成時に、ベーステーブルパスのQuery Rangeに基づいてストレージ層で事前に行数を推定し、リアルタイムで正確な行数を得る方法です。より完璧な統計情報と行数推定メカニズムにより、コストモデルが最適な実行計画を選択しやすくなります。
より使いやすいAuto DOP:通常、データベースは並列実行を利用して複雑なSQLの実行を高速化しますが、実際の業務シナリオでは、並列を有効にするかどうかや並列度の大きさを容易に評価することは難しいです。OceanBaseはAuto DOP機能を提供しており、オプティマイザーがプラン生成時にクエリの実行時間を評価し、並列を有効にするかどうか、適切な並列度を自動的に決定します。これにより、SQLはデフォルトで比較的良好な性能を得ることができます。
より正確な計画選択:行と列の混合ストレージを持つレプリカモードでは、オプティマイザーはコストに基づいて行ストアまたは列ストアのレプリカを自動選択でき、HTAP混合負荷業務をサポートします。SQLが複数のインデックスを含む場合でも、不良な分岐のプルーニングや最適な実行パスの選択をより正確に行うことができます。
詳細については、統計情報と推定行メカニズムの概要をご参照ください。
特殊インデックス
従来のリレーショナルデータベースでは、B-Tree や Hash などのインデックスは、主に構造化データの厳密値検索(数値、日付など)を対象としています。しかし、実際の業務では、半構造化データ(JSON ドキュメントなど)、半構造化テキスト(ログ、長文)、および多次元分析シナリオの普及に伴い、OceanBase は以下の 2 種類の特殊インデックスを提供しています:
- 全文インデックス:転置インデックスに基づいて実装され、分かち書き技術を用いてテキスト内容に対するキーワードマッピングを構築します。ログ分析や文書検索などのシナリオに適しています。
- 複数値インデックス:JSON 配列フィールドに対して要素レベルのインデックスを構築し、配列を仮想行レコードに展開して B-Tree インデックスを作成することで、集合データのクエリ効率を大幅に向上させます。
これら 2 種類のインデックスは、それぞれ異なるデータ構造設計により、異なるデータ型(テキスト/JSON)とクエリパターン(あいまい一致)に対して最適化を提供し、複雑なデータクエリの高速化レイヤーを共同で構成しています。
全文インデックス
リレーショナルデータベースでは、インデックスは通常、厳密値検索のクエリを高速化するために使用されます。しかし、従来の B-Tree インデックスは、大量のテキストデータやあいまい検索を処理する際に、しばしばパフォーマンス要件を満たせません。この場合、全表スキャンを実行して各行ごとに一致するデータを探すと、特にテキスト量が多くデータ量が膨大なシナリオでは、パフォーマンスボトルネックが発生します。さらに、近似一致や相関性ソートなどの複雑なクエリ要件も、単純な SQL の書き換えだけでは実現が困難です。
これらの問題を解決するため、OceanBase は現在、MySQL 互換の全文インデックス機能をサポートしています。全文インデックスは、テキスト内容を事前処理してキーワードインデックスを構築することで、全文検索の効率を大幅に向上させます。
全文インデックスは、テキストデータを迅速に検索するための技術であり、その主な機能は以下の通りです:
- 全文検索:全文インデックスを構築することで、文書全体や長いテキスト内容を包括的にインデックス化し、より柔軟で効率的な検索を実現します。
- 迅速な検索:ユーザーは入力したキーワードに基づいてデータベース内で一致するテキストを迅速に検索でき、検索時間を大幅に短縮できます。
- 大量のテキストを効率的に処理する:全文インデックスは、記事、レポート、ウェブページ、電子メールなど、さまざまな種類のテキストデータを効果的に処理でき、ユーザーに正確で迅速な検索体験を提供します。
- 複雑なクエリをサポートする:基本的なキーワード検索に加え、全文インデックスは近似一致や相関性ソートなどの複雑なクエリ要件もサポートし、データベースの検索機能を大幅に豊かにします。
全文インデックス機能を導入することで、OceanBase は大規模なテキストデータや複雑な検索要件に直面した際に、クエリパフォーマンスを大幅に向上させ、ユーザーが必要な情報をより効率的に取得できるようにします。
全文インデックスの詳細な説明と使用方法については、全文インデックス(MySQLモード)に関するドキュメントをご参照ください。
複数値インデックス
複数値インデックスは、OceanBase データベースの MySQL モードにおける特殊なインデックス機能であり、主に JSON ドキュメントや集合データ型の処理に使用されます。複数の値や属性に対するクエリが必要なシナリオに適しています。その主な特徴は以下の通りです:
- 配列や集合にインデックスを作成できます。
- 現在は JSON ドキュメントに適用されます。
- JSON 配列要素に基づく検索のクエリ効率を向上させることができます。
複数値インデックスは AP シナリオで非常に有用です。AP シナリオは通常、複雑なデータ分析やレポート生成を伴いますが、複数値インデックスはこれらの操作を高速化できます。例えば、データウェアハウスでは、複数値インデックスを使用して多次元のデータ分析を高速化し、レポート生成の効率を向上させることができます。具体的な適用シナリオは以下の通りです:
- 多対多関連クエリ:複数値インデックスを使用すると、エンティティ間の多対多関係のクエリを最適化できます。例えば、俳優と映画の関係では、映画のすべての俳優を JSON 配列で保存し、JSON 複数値インデックスを使用して特定の俳優が出演したすべての映画を迅速に検索できます。
- タグと分類クエリ:エンティティが複数のタグや分類を持つ場合、複数値インデックスは関連するクエリを高速化できます。例えば、商品の複数のタグを JSON 配列に保存し、JSON 複数値インデックスを使用して特定のタグを含む商品を迅速に検索できます。
複数値インデックスの詳細な説明と使用方法については、複数値インデックスに関するドキュメントをご参照ください。
複雑なデータ型
OceanBase APシナリオにおいて、効率的に圧縮されたビットマップ(RoaringBitmap)、配列(Array)、およびJSONデータ型のアプリケーションと最適化は非常に重要です。これらのデータ型は複雑なデータ分析ニーズを満たし、クエリ効率とデータ処理能力を向上させることができます。
JSON型は、ユーザーの設定情報、ログデータ、ソーシャルメディアデータなど、複雑で半構造化されたデータの格納と処理に使用できます。JSON型の柔軟性と拡張性により、APシナリオで非常に有用です。例えば、大量の設定データ、ログデータ、またはソーシャルメディアデータを処理する際に、これらのデータを格納および処理するためにJSON型を使用できます。特定のAPシナリオでは、JSONと複数値インデックスの組み合わせを使用してString型の複数値列を置き換えることができ、ストレージとクエリの効率を向上させることができます。
効率的に圧縮されたビットマップデータ型(RoaringBitmap)は、疎行列(つまり、レコード数が少なく、重複値が高いビット配列)の格納に長けています。従来のビットマップと比較して、このようなシナリオにおいて数百倍の高速化と優れた圧縮効果を実現します。アプリケーションシナリオには、APシナリオにおけるユーザープロファイリング、セグメント選択、集計と重複除去などが含まれます。効率的に圧縮されたビットマップデータ型の詳細な説明と使用方法については、効率的に圧縮されたビットマップデータ型(RoaringBitmap)に関するドキュメントをご参照ください。
配列型は、同じ型を持つ複数のデータの格納と処理に主に使用されます。あるエンティティの複数値属性を記述する場合(例えば、製品が複数のカテゴリに属する、ユーザーの複数のタグ、センサーの複数の測定値など)、配列型を使用すると、このような関係をより自然に表現できます。データ分析では、配列に特定の値が含まれているかどうかを判断するためによく使用されます。配列型の詳細な説明と使用方法については、配列型に関するドキュメントをご参照ください。
カラムストアレプリカ
HTAP混合負荷シナリオにおいて、TPリソースとAPリソースの物理的強制分離の要件を満たすために、OceanBaseデータベースはカラムストアレプリカ(Column Store Replica、Cレプリカ)をサポートしています。カラムストアレプリカは新しいレプリカタイプで、読み取り専用特性を持ち、レプリカ上のすべてのユーザーテーブルのベースラインデータはカラムストア形式のみが格納されます。カラムストアレプリカは独立したZoneにデプロイされ、OLAP業務は独立したODPエントリポイントを介してカラムストアレプリカにアクセスし、弱い読み取り(weak read)方式で実行されます。これにより、カラムストアのバッチ処理の利点を活用してクエリを高速化でき、既存のOLTP業務に影響を与えません。2F1Aのデプロイメントモードでは、行列混合方式と比較して、2F1A1Cをデプロイすることで、TP/APの物理的強制分離の要件を実現するだけでなく、ストレージコストも節約できます。
カラムストアレプリカは、レプリカ分散戦略と弱い読み取り解放メカニズムにおいて、通常の読み取り専用レプリカのルールに完全に従います。両者の主な違いは基礎データのストレージ構造にあります。通常の読み取り専用レプリカと同様に、カラムストアレプリカはプライマリノードの選出やログ同期投票プロセスには参加しませんが、静的データテーブル、コミット済みログ、メモリデータテーブルなどのコアコンポーネントを完全に含んでいます。
カラムストアレプリカの使用方法については、カラムストアレプリカに関するドキュメントをご参照ください。
MySQLエコシステム互換性
極致のパフォーマンスと拡張性を追求すると同時に、OceanBaseデータベースはMySQLエコシステムとの高い互換性を提供することにも努めています。これにより、MySQLの業務はOceanBaseデータベースへのシームレスな移行が可能となり、既存のOLAPエコツールや技術スタックを最大限に活用して、データ分析とビジネスインサイトの迅速な反復と革新を実現できます。
構文互換性:OceanBaseデータベースは、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)を含む、MySQLのSQL標準構文を全面的にサポートしています。これは、以前MySQLで作成したデータクエリ、テーブル構造定義、インデックス作成、権限管理などのステートメントを、ほぼそのままOceanBaseデータベースで実行できることを意味し、大幅な構文調整が不要で、移行コストと学習曲線を大幅に低減できます。
- シームレスな移行:既存のMySQLアプリケーションはOceanBaseデータベースへ迅速に移行でき、移行プロセスにおけるコード修正作業量を削減できます。
- スキルの再利用:MySQL開発者とDBAは新しいデータベース構文を追加で学ぶ必要がなく、適応期間を短縮できます。
- エコシステムの統合:MySQLエコシステムと互換性のある構文基盤により、OceanBaseデータベースは既存のBI、ETL、データ可視化などのツールチェーンにより良く統合できます。
ビューの互換性:OceanBaseはMySQLのinformation_schemaビューに互換性があります。例えば:
- テーブル情報のクエリ:TABLESやCOLUMNSビューをサポートしており、ユーザーはデータベース内のすべてのテーブルの構造や列情報をクエリできます。これはデータディクショナリ管理やサードパーティツールとの連携に不可欠です。
- 権限管理:SCHEMATAやSCHEMA_PRIVILEGESなどのビューをサポートしており、管理者がデータベースやテーブルの権限設定を簡単に確認し管理するのに役立ちます。
多くのデータベース管理、監視、分析ツールはINFORMATION_SCHEMAに依存してデータベースの状態やアーキテクチャ情報を取得します。OceanBaseデータベースのこの互換性により、これらのツールはカスタマイズや適合処理を行うことなく、OceanBaseデータベース上で直接実行できます。OceanBaseデータベースは、さまざまなOLAPエコツールをサポートしています。例えば:
BIツール
- Tableau:業界をリードするビジネスインテリジェンスツールとして、Tableauはデータ可視化分析に広く使用されています。OceanBaseデータベースのMySQL互換性により、Tableauはデータベースに直接接続し、SQLクエリを利用してダッシュボードやレポートを迅速に構築できます。
- Quick BI:Alibaba Cloud Quick BIは、効率的なエンタープライズ向けのビッグデータ分析および表示ツールであり、ユーザーがデータポータルの構築、インタラクティブレポートの作成、データの柔軟な分析を迅速に行い、ビジネスのインテリジェントな意思決定を支援します。OceanBaseデータベースのMySQL互換性により、Quick BIはデータベースに直接接続できます。
- Fine BI:帆软FineBIは、セルフサービス型のデータ分析プラットフォームであり、強力なデータ処理と可視化分析機能を提供し、多様なデータソースへのアクセスをサポートしています。これにより、企業はデータから価値への迅速な変換を容易に実現できます。OceanBaseデータベースは、その検証と適合を完了しています。
ETLツール
- Apache Flink:Apache Flinkは、オープンソースのストリーム処理とバッチ処理の統合フレームワークであり、高スループット、低遅延のデータストリーム処理に長けており、イベント時間処理と状態管理をサポートしています。OceanBaseと深く統合し、リアルタイムデータウェアハウスのストリーム処理統合ソリューションを提供できます。