
【Databricks】OLTPデータベースであるLakebaseを触ってみた
データ事業本部のueharaです。
今回は、Databricks上で提供されるOLTPデータベースであるLakebaseを触ってみたいと思います。
はじめに
先日、Databricksから新しいデータベースである「Lakebase」が発表されました。
Lakebaseとは
Lakebaseは、一言でいうとストレージ層とコンピューティング層が分離したサーバレスなPostgresベースのOLTPデータベースです。
Databricksが2025年5月に買収を発表したNeonの技術をベースとしています。
レイクハウスとの統合
従来のアーキテクチャでは業務用DBと分析基盤はサイロ化しており、データを移動するにはETLパイプラインの構築や個別のアクセス制御が必要でした。
Lakebaseはレイクハウスとの統合により、業務レイヤーと分析レイヤー間でほぼリアルタイムの同期を実現するものとなっています。必要に応じて、Unity Catalogを使用してデータへのアクセスを制御することもできます。
Unity Catalogで管理しているテーブルは、Lakebaseに自動的に同期する設定をすることが可能です。
ユースケース
ユースケースとしては、分析基盤で作成した分析データをLakebaseに同期し、それをアプリケーションで使うような構成が考えられます。
これにより、例えばECにおいては「顧客セグメントに基づくリアルタイムレコメンデーション」を提供することが考えられます。
OLAPなデータベースはあくまで分析に特化しており、トランザクションレベルでのアクセスが必要な業務アプリケーションとしてのAI/MLの活用ユースケースを完璧にカバーできませんでした。
そのため、そのようなユースケースに対応するためのLakebaseという形かなと思います。
前述の通りUnity Catalogで管理しているテーブルからLakebaseへの同期はマネージドな機能を用いて実現可能ですが、アプリケーションからLakebaseに書き込んだデータについては別途ETLを行いLakebaseからUnity Catalogで管理するテーブルに出力することもできます。
やってみた
事前準備
記事執筆時点ではパブリックプレビューのため、機能有効化の設定から行います。
設定にアクセスするため、Databricksのプロフィールアイコンから『Previews』を選択します。
Previewsの一覧に『Lakebase』があると思うので、これをONにします。
これで事前準備は完了です。
インスタンスの作成
Lakebaseの有効化をすると、『Compute』に『Database instances』のタブが新しく出てきていると思います。
『Create database instance』ボタンを押下し、適当な設定値を入力しインスタンスの作成を行います。
Statusが『Available』となれば作成完了です。
Unity Catalogへ登録
作成したインスタンスの『Catalogs』からUnity Catalogの登録を行います。
カタログの作成後、Unity Catalog上で確認できるようになっていると思います。
クエリの実行
クエリエディタからクエリを実行してみます。
バージョン情報を取得するクエリを実行したところ、特に問題無く取得できました。
Unity Catalogテーブルの同期
Unity Catalogで管理しているテーブルを、Lakebaseに同期してみます。
Catalog上で適当にテーブルを選択し、『Create』ボタンから『Synced Table』を選択します。
先に作成したLakebaseに同期するよう設定を行います。
※上記はUnity Catalogで管理される workspace.default.sample_data
テーブル をLakebaseの databricks_postgres.public.sample_data
テーブルに同期する設定となります。
設定が完了すると、以下のようにテーブルデータが同期されたことを確認できました。
補足
冒頭でも少し述べましたが、検証日時点ではLakebaseで作成したテーブルからUnity Catalogで管理しているテーブルへの同期はマネージドな機能としては提供されていないようなのでご留意下さい。
外部から接続してみる
『Compute』から作成したDBインスタンスの『Connection details』にアクセスし、『Get OAuth Token』から認証情報の取得を行います。
作成が完了すると『Copy OAuth Token』ボタンが活性化するので、コピーして環境変数に設定しておきます。
$ export PGPASSWORD=<取得したToken>
提供されている接続情報を元に、以下Pythonスクリプトを作成してみました。
import os
import psycopg2
# 環境変数からパスワードを取得
password = os.getenv("PGPASSWORD")
# 接続パラメータ
conn_params = {
"host": "<YOUR_HOST_NAME>",
"port": 5432,
"database": "databricks_postgres",
"user": "<YOUR_USER_NAME>",
"password": password,
"sslmode": "require",
}
conn = None
cursor = None
try:
# 接続
conn = psycopg2.connect(**conn_params)
cursor = conn.cursor()
# クエリ実行例
cursor.execute("SELECT * FROM sample_data;")
result = cursor.fetchall()
print(result)
except psycopg2.Error as e:
print(f"データベース接続エラー: {e}")
finally:
if cursor:
cursor.close()
if conn:
conn.close()
※ <YOUR_HOST_NAME>
と <YOUR_USER_NAME>
はご自身の環境に合わせて置き換えて下さい。
上記スクリプトを実行してみたところ、無事アクセスおよびデータ取得を確認できました。
モニタリング
作成したインスタンスの『Metrics』からLakebaseインスタンスのパフォーマンスを確認することができます。
メトリクスには1秒あたりのトランザクション数やアクティブな接続数、ストレージやCPU使用率等があります。
最後に
今回は、Databricks上で提供されるOLTPデータベースであるLakebaseを触ってみました。
Unity Catalogテーブルとの同期も非常に簡単で、かつサーバレスなOLTPデータベースをすぐに使い始められるのは非常に良いと感じました。
参考になりましたら幸いです。