【Databricks】OLTPデータベースであるLakebaseを触ってみた

【Databricks】OLTPデータベースであるLakebaseを触ってみた

Clock Icon2025.06.13

データ事業本部のueharaです。

今回は、Databricks上で提供されるOLTPデータベースであるLakebaseを触ってみたいと思います。

はじめに

先日、Databricksから新しいデータベースである「Lakebase」が発表されました。

https://www.databricks.com/product/lakebase

Lakebaseとは

Lakebaseは、一言でいうとストレージ層とコンピューティング層が分離したサーバレスなPostgresベースのOLTPデータベースです。

https://www.databricks.com/blog/what-is-a-lakebase

Databricksが2025年5月に買収を発表したNeonの技術をベースとしています。

レイクハウスとの統合

従来のアーキテクチャでは業務用DBと分析基盤はサイロ化しており、データを移動するにはETLパイプラインの構築や個別のアクセス制御が必要でした。

Lakebaseはレイクハウスとの統合により、業務レイヤーと分析レイヤー間でほぼリアルタイムの同期を実現するものとなっています。必要に応じて、Unity Catalogを使用してデータへのアクセスを制御することもできます。

Unity Catalogで管理しているテーブルは、Lakebaseに自動的に同期する設定をすることが可能です。

ユースケース

ユースケースとしては、分析基盤で作成した分析データをLakebaseに同期し、それをアプリケーションで使うような構成が考えられます。

20250613_databricks_01
引用元

これにより、例えばECにおいては「顧客セグメントに基づくリアルタイムレコメンデーション」を提供することが考えられます。

OLAPなデータベースはあくまで分析に特化しており、トランザクションレベルでのアクセスが必要な業務アプリケーションとしてのAI/MLの活用ユースケースを完璧にカバーできませんでした。

そのため、そのようなユースケースに対応するためのLakebaseという形かなと思います。

前述の通りUnity Catalogで管理しているテーブルからLakebaseへの同期はマネージドな機能を用いて実現可能ですが、アプリケーションからLakebaseに書き込んだデータについては別途ETLを行いLakebaseからUnity Catalogで管理するテーブルに出力することもできます。

20250613_databricks_03
引用元

やってみた

事前準備

記事執筆時点ではパブリックプレビューのため、機能有効化の設定から行います。

設定にアクセスするため、Databricksのプロフィールアイコンから『Previews』を選択します。

20250612_databricks_01

Previewsの一覧に『Lakebase』があると思うので、これをONにします。

20250613_databricks_04

これで事前準備は完了です。

インスタンスの作成

Lakebaseの有効化をすると、『Compute』に『Database instances』のタブが新しく出てきていると思います。

20250613_databricks_05

『Create database instance』ボタンを押下し、適当な設定値を入力しインスタンスの作成を行います。

20250613_databricks_06

Statusが『Available』となれば作成完了です。

20250613_databricks_07

Unity Catalogへ登録

作成したインスタンスの『Catalogs』からUnity Catalogの登録を行います。

20250613_databricks_08

カタログの作成後、Unity Catalog上で確認できるようになっていると思います。

20250613_databricks_09

クエリの実行

クエリエディタからクエリを実行してみます。

20250613_databricks_15

バージョン情報を取得するクエリを実行したところ、特に問題無く取得できました。

Unity Catalogテーブルの同期

Unity Catalogで管理しているテーブルを、Lakebaseに同期してみます。

Catalog上で適当にテーブルを選択し、『Create』ボタンから『Synced Table』を選択します。

20250613_databricks_10_2

先に作成したLakebaseに同期するよう設定を行います。

20250613_databricks_11

※上記はUnity Catalogで管理される workspace.default.sample_data テーブル をLakebaseの databricks_postgres.public.sample_data テーブルに同期する設定となります。

設定が完了すると、以下のようにテーブルデータが同期されたことを確認できました。

20250613_databricks_12_2

補足

冒頭でも少し述べましたが、検証日時点ではLakebaseで作成したテーブルからUnity Catalogで管理しているテーブルへの同期はマネージドな機能としては提供されていないようなのでご留意下さい。

20250613_databricks_17

外部から接続してみる

『Compute』から作成したDBインスタンスの『Connection details』にアクセスし、『Get OAuth Token』から認証情報の取得を行います。

20250613_databricks_13

作成が完了すると『Copy OAuth Token』ボタンが活性化するので、コピーして環境変数に設定しておきます。

$ export PGPASSWORD=<取得したToken>

提供されている接続情報を元に、以下Pythonスクリプトを作成してみました。

test_connection.py
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> はご自身の環境に合わせて置き換えて下さい。

上記スクリプトを実行してみたところ、無事アクセスおよびデータ取得を確認できました。

20250613_databricks_14

モニタリング

作成したインスタンスの『Metrics』からLakebaseインスタンスのパフォーマンスを確認することができます。

メトリクスには1秒あたりのトランザクション数やアクティブな接続数、ストレージやCPU使用率等があります。

20250613_databricks_16

最後に

今回は、Databricks上で提供されるOLTPデータベースであるLakebaseを触ってみました。

Unity Catalogテーブルとの同期も非常に簡単で、かつサーバレスなOLTPデータベースをすぐに使い始められるのは非常に良いと感じました。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.