はじめに
先日Oracle Database 23ai Freeがリリースされました。
たくさんの新機能がありますが、その1つであるOracle SQL Access to Kafkaを本記事ではご紹介します。
Oracle SQL Access to Kafkaとは
Oracle SQL Access to Kafka(OSaK)は、まずOracle Databaseを1つまたは複数のKafkaトピックに接続することができます。
接続後、Oracle SQL APIを使用して、Kafkaトピックに動的にクエリを実行できます。
この機能により、Oracle Databaseに取り込まれたデータと組み合わせて、リアルタイムにデータを分析することができます。また、Oracle SQL Access for Kafkaでは、KafkaトピックをOracle Databaseに高速、スケーラブル、ロスレスでロードすることができます。DBMS_KAFKA、DBMS_KAFKA_ADMパッケージで実行できるため、このプロセス全体をシンプルに実行することができます。
メリット
ストリーミング処理を行うには、そのためのアプリケーションを開発する必要があり、アプリケーション開発者ではない人には、そのデータの価値を分かっていてもなかなか活用するのが難しいことがあります。
しかし、Oracle SQL Access to Kafkaを使えば、KafkaストリーミングデータをSQLを使って簡単に処理できるようになるので、アプリケーション開発者ではない人でもその恩恵を受けられるようになります。
また、Oracle Databaseにあるデータと組み合わせて、アノマリーデータ(特異的なデータ)や、オンラインでのデータ統合を実現できます。
Kafkaデータを処理するために作成するOracle SQL Access to Kafkaアプリケーションは、Oracle Databaseのトランザクションとして操作を実行・制御することができ、データベースのACID(Atomicity, Consistency, Isolation, Durability)要件に準拠します。
これにより、障害発生時にレコードを失ったり繰り返したりすることなく、データ復旧を行うことができるため、Kafkaデータの分離と耐久性の向上に役立ちます。
3つの機能
Oracle SQL Access to Kafkaには主に3つの機能があります。
- ロード:KafkaレコードをOracle Databaseのテーブルにロードし、様々なアプリからアクセス可能にする(主にデータウェアハウス(DWH)用途)
- ストリーミング:KafkaレコードをSQLやPL/SQLを使って順番に加工処理するアプリケーションの作成
- シーカブル:ユーザが指定したタイムスタンプ間で、Kafkaトピックにあるレコードを再読み込みする
また、複数のストリーミング・アプリケーションを作成し、複数のKafkaトピックのデータをデータベース内で結合させることもできます。
ユースケース
上で挙げた主な3つの機能については、例えば以下のユースケースがあります。
複数の拠点を持っているコンピューター会社があるとします。各拠点へのアクセスはすべてカードキーで管理されており、以下のデータがKafkaでストリーミングされています。
- キーカードの使用状況 (KCdata)
- 施設モニタリング(Fdata)
- システム監視(稼働率、アクセス、侵入検知など) (Sdata)
ある拠点で何か問題が起きた場合、その日のキーカードのデータ(KCdata)をKafkaからOracle Databaseのテーブルにロードします。Oracle Databaseのデータは複数のアプリケーションからすぐに参照することができるので、例えば不動産チームがビルやオフィスの使用状況を追跡することに使用したり、IT部門が、誰がその拠点にいて指揮を取るべきかをこのデータから判断することに使えます。
また、ストリーミング・アプリケーションを作成して、施設データ(Fdata)に異常があるかどうかを確認することもできます。研究室の温度の急上昇、ドアが閉まらずアラームが鳴っている、火災検知システムがアラームを鳴らしているなど、さまざまな原因があるかもしれません。
ストリーミング・データから、午前3時17分にドアが開いたままになっていることを確認できました。シーカブル・クエリを使用すると、30分以内(3:02~3:32)に他の複数のデータ(KCdata、Fdata、Sdata)から、誰が建物にいたか、どの部屋にいたか、どのマシンがオフラインになったかなど、データを特定し、状況に対して適切な対応を取ることができます。
使用例
大まかな使用手順としては、以下です。
①Kafkaクラスタにアクセスするために必要な設定ファイルを作成し、適切なディレクトリに配置
②DBMS_KAFKA_ADM.REGISTER_CLUSTERプロシージャでKafkaクラスタを登録
③各機能のアプリケーションを作成
それぞれの機能の具体的な手順については、以下の記事で紹介していますので、ご参照ください。
- ロード
- ストリーミング
- シーカブル
サポートしているデータ形式
- csvなどの区切りテキストデータ
- JSON
- Avro