データサブスクリプション(Data Subscription)は、データソースの増分変更を継続的にキャプチャする技術です。その中核となるのは、変更データキャプチャ(CDC, Change Data Capture)であり、データの変更(追加、更新、削除)をリアルタイムまたは準リアルタイムでターゲットシステムに転送します。OceanBaseのエコシステムにおいて、データサブスクリプションは主にデータベースの増分移行で利用され、移行元データベースと移行先であるOceanBaseデータベースとのデータ一貫性を保証します。
利用シーン
データサブスクリプションには、以下の特長があります。
- 低遅延同期:ターゲットシステムとソースシステムのデータの一貫性を確保し、遅延は通常、秒単位またはミリ秒単位です。
- リソース効率化:全てのデータではなく変更があった差分データのみを転送するため、ネットワーク帯域幅とストレージリソースの消費を大幅に削減します。
- 柔軟な拡張性:データウェアハウス、分析プラットフォーム、キャッシュシステムなど、複数のターゲットシステムへの並行したサブスクリプションをサポートします。
- 高い耐障害性:障害からの回復機能や中断した箇所からの転送再開機能を備えており、データ損失を防ぎます。
代表的な利用シーンは以下の通りです。
- リアルタイムデータ同期
- 業務システム連携:注文管理システムからBIプラットフォームへリアルタイムにデータを同期し、リアルタイムでのレポート作成や意思決定分析を支援します。
- キャッシュの更新:データベースの変更を、Redis、Memcachedなどのキャッシュシステムへリアルタイムに反映させます。
- 検索エンジンの同期:データベースの変更を、ElasticsearchやSolrなどの検索エンジンへリアルタイムに反映させます。
- データアーキテクチャの高度化
- データベース移行:従来のデータベースからOceanBaseへ、サービス停止なしで移行します。
- アーキテクチャの最新化:スタンドアロンのデータベースを分散アーキテクチャに分割し、読み取りと書き込みを分離します。
- クラウドネイティブ移行:オンプレミスのデータベースをクラウド上のOceanBaseインスタンスへ移行します。
- データガバナンスとデータ分析
- データレイクの構築:業務データをデータレイクへリアルタイムに同期し、オフラインでの分析を可能にします。
- リアルタイムデータウェアハウス:リアルタイムデータウェアハウスを構築し、ストリーミング分析や機械学習を支援します。
- アクティブ/アクティブアーキテクチャ:複数地域にまたがるアクティブ/アクティブ構成のデータベースを実現し、システムの可用性を向上させます。
主要なツールと機能の比較
OceanBaseエコシステムにおけるデータサブスクリプションでは、主に3種類のツールが使用されます。自社開発の移行ツール(OMSなど)、外部の移行ツール(Flink CDC、DataXなど)、そしてメッセージミドルウェア(Kafkaなど)です。これらのツールは、それぞれ異なるデータサブスクリプションのシナリオに適しています。ここでは、その代表的なツールをいくつか取り上げ、それぞれの特徴、適用シーン、技術的な強みを紹介します。
自社開発の移行ツール:OMS
OMS (OceanBase Migration Service)は、OceanBaseが公式に提供するエンタープライズレベルのデータ移行・サブスクリプションサービスです。OceanBaseデータベースエコシステム専用に設計されており、従来のデータベースからOceanBaseへのワンストップ移行ソリューションを提供します。
主要な機能
- 高性能なフル移行と増分移行:テラバイト級のデータを迅速に移行できます。フル移行は論理バックアップまたは物理バックアップに基づいており、増分移行はログ解析(MySQLのBinlog、OracleのArchive Logなど)によって増分データを同期します。
- ゼロダウンタイム移行:業務を停止することなくスムーズな切り替えをサポートし、ビジネスの継続性を確保します。
- 多様なデータベースとの互換性:MySQL、Oracle、PostgreSQL、DB2など、主要なデータベースからの移行をネイティブでサポートしており、追加のアダプター開発などは不要です。
- 可視化されたモニタリング:移行の進捗、遅延、エラーアラートなどをリアルタイムで監視する機能を提供し、移行タスクの全工程を可視化して管理できます。
技術的な強み
- OceanBaseネイティブの最適化:针对OceanBase的分布式架构和存储引擎进行深度优化,迁移效率显著高于通用工具
- 非破壊:データベースのログを読み取るだけで、移行元のデータベース設定を変更する必要がなく、ソースシステムへの影響を最小限に抑えます。
- 高可用性:マルチノードでのデプロイをサポートし、自動フェイルオーバー機能を備えているため、移行サービスの高い可用性を保証します。
- データ一貫性:分散トランザクションをサポートし、データの一貫性と完全性を確保することで、エンタープライズレベルのデータ品質要件を満たします。
適用シナリオ
- エンタープライズレベルのデータベース移行プロジェクト(特に従来のデータベースからOceanBaseへの移行)
- データの一貫性と可用性に対する要件が厳しいビジネスシーン
- 大規模なデータ移行とリアルタイム同期が必要なケース(基幹業務システムのデータベースアップグレードなど)
外部移行ツール:Flink CDC
Flink CDCは、Apache Flinkを基盤とする分散ストリーム処理エンジンであり、リアルタイムのデータサブスクリプションとストリームコンピューティングに特化しています。CDCコネクタを通じてデータベースログを直接読み取り、エンド・ツー・エンドのリアルタイムデータ処理を実現します。
主要な機能
- エンド・ツー・エンドのExactly-Once(一回限りの)一貫性:データ転送と計算の正確性を保証し、データの重複や損失を防ぎます。
- 柔軟なデータ変換:フィールドマッピング、データクレンジング、集計計算など、複雑なビジネスロジックに対応します。
- 多様なデータソースのサポート:CDCコネクタを介して、MySQL、Oracle、PostgreSQL、MongoDBなど、複数のデータソースをサポートします。
- ストリーム処理とバッチ処理の統合:リアルタイムのストリーミングデータとバッチデータを統一的に処理し、データ処理アーキテクチャを簡素化します。
技術的な強み
- 高性能計算:大規模なパラレル処理をサポートし、スループットは毎秒数百万件のトランザクション(TPS)に達することができ、高同時実行のデータ処理のニーズに対応します。
- ステート管理:内蔵のステートストレージを備えており、セッション分析やリアルタイム集計など、複雑なステート計算やウィンドウ操作をサポートします。
- 耐障害性メカニズム:チェックポイント(Checkpoint)に基づく耐障害性メカニズムにより、災害復旧後のデータ一貫性を確保します。
- 豊富なエコシステム:Kafka、Hive、Elasticsearchなどのビッグデータコンポーネントとシームレスに連携し、完全なデータ処理エコシステムを構築します。
適用シナリオ
- リアルタイムデータ分析やストリームコンピューティング(リアルタイムレポート、リアルタイムリスク管理など)
- 複雑なデータ変換やクレンジングのニーズがある場合(複数のデータソースの統合、データの標準化など)
- 複数のデータソースの統合とリアルタイムデータウェアハウスの構築(リアルタイムデータレイク、ストリーミングデータウェアハウスなど)
メッセージミドルウェア:Kafka
Kafkaは、分散データ・ストリーミング・プラットフォームであり、データサブスクリプションのアーキテクチャにおいては、主にデータプロデューサー(生産者)とコンシューマー(消費者)を接続する中間層およびバッファ層として機能します。
主要な機能
- 高スループットなメッセージ転送:毎秒数百万件のトランザクション(TPS)をサポートし、大規模なデータストリーム処理のニーズに対応します。
- 永続的なストレージ:データをディスクに永続化し、Exactly-Once(一回限りの処理)セマンティクスをサポートすることで、データの損失を防ぎます。
- マルチコンシューマーによるサブスクリプション:複数のコンシューマーが同じトピックを並行してサブスクライブすることをサポートし、データの再利用を実現します。
- パーティションとレプリカのメカニズム:水平スケーリングと高可用性なデプロイをサポートし、大規模クラスタの要件を満たします。
技術的な強み
- 疎結合アーキテクチャ:データプロデューサーとコンシューマーを疎結合にすることで、システムの柔軟性を向上させ、独立した拡張やメンテナンスを容易にします。
- バッファリング能力:下流システムの変動やピーク時のトラフィックに対応し、データをバッファリングすることでトラフィックの変動を平準化します。
- 複数ターゲットへの配信:一つのデータを複数のコンシューマーがサブスクライブできるため、データの再利用を促進し、データ取得コストを削減します。
- 水平スケーリング:クラスタの水平スケーリングをサポートし、大規模なデータ処理ニーズに対応可能で、優れた拡張性を備えています。
適用シナリオ
- CDCツールの中間層として変更データを一時的に保存する(例:OMSからターゲットシステムへのデータバッファリング)
- リアルタイムデータパイプラインを構築し、異なるデータ処理コンポーネントを接続する(例:データベースから分析システムへのデータストリーム)
- データのバッファリングとトラフィックのピークシェービング(ピークを平準化する)により、ビジネスのピーク時やシステムの変動に対応する
ツールの選定
データソースの種類に応じた選定:リレーショナルデータベースからOceanBaseへ
推奨ツール:OMS
適用シナリオ:MySQL、Oracle、PostgreSQLなどのデータベースからOceanBaseへの移行
主な強み:
- ネイティブの最適化:OceanBaseの分散アーキテクチャとストレージエンジンに合わせて最適化が施されており、汎用的なツールよりも移行効率が大幅に向上しています。
- 可視化されたUI:移行の進捗、遅延、エラーアラートなどをリアルタイムで監視する機能を提供し、運用・保守の複雑さを軽減します。
- エンタープライズレベルの保証:自動化された障害復旧やロールバックをサポートし、エンタープライズレベルのSLAを提供します。
- 非破壊:データベースのログを読み取るだけで、移行元のデータベース設定を変更する必要がありません。
ビジネスシナリオに応じた選定
リアルタイムデータ同期のシナリオ
推奨ツールの組み合わせ:OMS + Kafka
代表的な利用例:
- 業務システム間のリアルタイムデータ同期
- キャッシュシステム(Redis、Memcached)のリアルタイム更新
- 検索エンジン(Elasticsearch、Solr)のリアルタイムでのインデックス更新
- メッセージキューへのリアルタイムでのデータプッシュ
適用シナリオ:
- データの一貫性に対する要求が高い金融機関やEコマース企業の場合
- リアルタイムでのデータ同期を必要とするオンライン業務システムにの場合
- 運用・保守コストに敏感な中小企業の場合
リアルタイム分析のシナリオ
推奨ツールの組み合わせ:Flink CDC + Kafka + 分析システム
代表的な利用例:
- リアルタイムでのデータ分析とレポート生成
- ストリーミング機械学習とAIアプリケーション
- リアルタイムでのリスク管理・監視システム
- リアルタイムレコメンデーションとパーソナライゼーションサービス
適用シナリオ:
- リアルタイムデータ分析を必要とするインターネット企業の場合
- データ処理性能に対する要求が極めて高いシーンの場合
- ビッグデータ技術に精通したチームを持つ企業の場合
データレイク構築のシナリオ
推奨ツールの組み合わせ:Flink CDC + Kafka + データレイク
代表的な利用例:
- リアルタイムデータレイクの構築
- 複数ソースからのデータ統合と一元管理
- リアルタイムデータウェアハウスの構築
- データガバナンス・分析プラットフォーム
適用シナリオ:
- データ基盤プラットフォームの構築を必要とする大企業の場合
- 複数の事業部門にまたがるデータ統合のニーズがある場合
- データガバナンスに対する要求が高い企業の場合