Databricks Appsで Lakebase を使用する
Lakebaseオートスケールは、オートスケールコンピュート、ゼロへのスケール、分岐、即時復元を備えたLakebaseの最新バージョンです。 サポートされているリージョンについては、 「リージョンの提供状況」を参照してください。Lakebaseプロビジョニング ユーザーの場合は、 Lakebaseプロビジョニング」を参照してください。
Databricks Appsすると、ワークスペースで直接インタラクティブなアプリケーションを構築して実行できます。 Lakebase をリソースとして追加すると、 Databricks認証チェーン全体を処理します。アプリ用にサービス プリンシパルが作成され、一致する Postgres ロールが付与され、接続の詳細が環境変数として挿入されます。 アプリは、資格情報や接続文字列を管理せずに、フルマネージド Postgres データベースに接続します。

このガイドでは、Lakebase データベースに接続されたテンプレート アプリをデプロイする手順を説明します。最終的には、Lakebase から直接検査およびクエリできるデータを含む実行中のアプリが完成し、オプションでレイクハウス データとともにUnity Catalogに登録することもできます。
Lakebase が有効になっているDatabricksワークスペースへのアクセス (必要に応じてワークスペース管理者に連絡)、コンピュート リソースとアプリを作成する権限、およびPythonとSQLの基本的な知識が必要です。
ステップ 1: Lakebase インスタンスのプロビジョニング
Lakebase プロジェクトは、アプリがリソースとして接続する管理された Postgres インスタンスです。プロジェクトはブランチに編成され、各ブランチは独立したデータベース環境を表します。
プロジェクトを作成する前に、ワークスペースでサーバレス コンピュートが有効になっていることを確認してください。 自分でこの変更を行えない場合は、管理者に連絡してください。
プロジェクトを作成するには:アプリスイッチャー→ Lakebase → オートスケール →プロジェクト作成→無事承諾
プロジェクトは、 productionブランチとdatabricks_postgresデータベースを使用して作成されます。
ステップ 2: テンプレートからDatabricksアプリを作成する
テンプレートはインフラストラクチャの複雑さを処理します。接続プーリング、 OAuthセキュリティ更新、エラー処理はすでに組み込まれています。 完全にカスタマイズされたアプリが必要な場合は、 「独自のアプリを作成する」を参照してください。
Lakebase 用の 3 つのオートスケール todo アプリ テンプレートが利用可能です: Dash、Flask、Streamlit。 [新規] > [アプリ] に移動してアプリ作成インターフェイスを開き、 [データベース] タブから希望するテンプレートを選択します。

ステップ 3: データベース リソースを構成する
Lakebase をリソースとして追加すると、2 つのことが行われます。適切なデータベース権限を持つサービスプリンシパルが作成され、接続の詳細が環境変数としてアプリに挿入されます。 これにより、コード内に接続文字列がなくても、テンプレートがデータベースに自動的に接続できるようになります。
Configure ステップで、アプリのデータベースとコンピュートのサイズを選択します。 データベース リソースの追加に関する詳細については、 Databricksアプリに Lakebase リソースを追加する」を参照してください。

[アプリ リソース] で、Lakebase プロジェクト、ブランチ、データベースを選択します。ブランチ名は ID として表示されます。ステップ 1 で安全を受け入れた場合、選択できるブランチ (本番運用) は 1 つだけです。 他のプロジェクトの場合、または ID と名前を一致させるには、プロジェクトのブランチ ページを参照してください。
[コンピュート サイズ] で、このガイドでは [中] を選択します。 これはアプリ サーバー コンピュートであり、 Lakebase データベース コンピュートとは別のものであり、独立してスケーリングされることに注意してください。
ステップ 4: 承認を確認する
各Databricksアプリは、個々のユーザーから分離された専用の ID である独自のサービス プリンシパルとして実行されます。 Lakebase をリソースとして接続すると、 Databricksそのサービスプリンシパルに一致するPostgres ロールを自動的に作成し、アプリのサービスプリンシパルに接続、独自のスキーマの作成、データの読み書きに必要なデータベース アクセスを付与します。手動のロール設定は必要ありません。

ユーザー認証 (プレビュー) を 使用すると、アプリが独自のサービスプリンシパルではなく、ログインしているユーザーに代わって動作できるようになります。これは、異なるユーザーが各自の権限に基づいて異なるデータを表示する必要がある場合に便利です。 このテンプレートでは、追加のユーザー スコープは必要ありません。後でユーザーに代わってアクセスを有効にするには、 「ユーザー認証」を参照してください。
ステップ 5: アプリに名前を付けてインストールします
ここで選択したアプリ名は、Lakebase がデータベースに自動的に作成するスキーマ名の一部になります。クライアント ID は、アプリに割り当てられたサービスプリンシパルからハイフンを削除したものです。 Lakebase では後からスキーマの名前を変更できますが、アプリ名自体は作成後に変更できません。テンプレートのデフォルトはlakebase-autoscaling-appです。
App name: lakebase-autoscaling-app
Service principal: aeb6ff91-98ff-4752-af7d-fc6d4cf570d0
↓
(same ID, hyphens removed)
Schema name: lakebase-autoscaling-app_schema_aeb6ff9198ff4752af7dfc6d4cf570d0
アプリ名を確認または変更し、事前に入力された説明を確認し、必要に応じてサーバーレス使用ポリシーを設定します。 「インストール」 をクリックしてアプリ構成を作成します。
ステップ 6: アプリをデプロイする
[インストール] を クリックすると、コンピュートが自動的に開始され、それ以上の操作を行わなくてもアプリがデプロイされます。 これには2〜3分かかります。アプリのステータスに 「実行中」 と表示されたら、その横にある URL をクリックしてアプリを開きます。ローカル開発と再デプロイを含む完全な開発ワークフローについては、 「Databricks アプリの開発」を参照してください。

コードを変更した後は、 [デプロイ] ボタンを使用して再デプロイします。デプロイメントが失敗した場合は、 [デプロイメント] タブを確認してください。失敗したステップ (「パッケージがインストールされました」や「アプリが起動しました」など) によって、確認する場所がわかります。
ステップ 7: 統合を確認する
提供された URL でアプリを開き、いくつかの ToDo を追加します。Lakebase プロジェクトで、 「テーブル」 を開き、アプリのスキーマの下にある todos テーブルを選択します。ステップ 3 で挿入された接続の詳細を使用して、アプリのサービスプリンシパルによって書き込まれた行がそこにあります。

データに対してカスタム クエリを実行するには、Lakebase プロジェクトで SQL エディターを 使用します。Lakebase は一定期間アクティビティがないとゼロにスケールします。そのため、一定期間アクティビティがないと、データベースがウォームアップする間、最初のリクエストに数秒かかることがあります。その他の接続オプションについては、 「Lakebase プロジェクトへの接続」を参照してください。
ステップ 8: Unity Catalogを介したクエリ (オプション)
デフォルトでは、アプリの Lakebase データには Postgres 接続を通じて直接アクセスできます。これを Unity Catalog に登録すると、標準の Databricks SQL を使用してレイクハウス データと一緒にクエリできるようになり、同じクエリでアプリのトランザクション テーブルと Delta テーブルを結合できるようになります。
登録するには、カタログ エクスプローラーを開いて新しいカタログを作成します。カタログ タイプとして Lakebase Postgres を 選択し、 オートスケール を選択して、アプリと同じプロジェクトとブランチを選択します。 詳細については、 「Unity Catalog にデータベースを登録する」を参照してください。
登録すると、Unity Catalog のスキーマ名にアプリ名のハイフンが保持されることに注意してください。カタログ名とスキーマ名の両方にバッククォート引用符が必要です。
SELECT * FROM `your-catalog-name`.`lakebase-autoscaling-app_schema_aeb6ff9198ff4752af7dfc6d4cf570d0`.todos;