メインコンテンツまでスキップ

Snowflake データベースを統合する

Snowflake データベースに接続し、Squid のリアルタイムストリーミング、堅牢なクエリ、及び AI 機能を活用しましょう。

TL;DR

このチュートリアルでは、新しい Snowflake データベースを Squid プロジェクトに接続する方法を学びます。以下が含まれます:

このチュートリアルでは、React と Squid を使用して Snowflake テーブルのサンプルデータに接続します。データベースの用語、React、及び Squid プラットフォームの基本的な理解があるとより良いですが、このガイドには前提条件はありません。

Environment setup

  1. In the Squid Console, switch to the dev environment.

switch environment

  1. Download the snowflake code sample using the following command. Replace the placeholders with the values from your Squid application as shown in the console.

  2. npx @squidcloud/cli init-sample snowflake --template snowflake --appId YOUR_SQUID_APP_ID --apiKey YOUR_SQUID_API_KEY --environmentId dev --squidDeveloperId YOUR_SQUID_DEVELOPER_ID --region YOUR_REGION

TIP

You can find your environment variables under: 'Application' -> 'Show env vars' as seen below:

switch environment

  1. Open the project in the IDE of your choice.
  2. Start the app locally by running the following command in the project folder:
npm run start
  1. To view the app, navigate to localhost:PORT, where PORT is logged in the terminal. The address will likely be http://localhost:5173.

新しい Snowflake データベースを作成する

Snowflake では、アカウント作成時にいくつかの共有データベースが提供されます。これらのデータベースは読み取り専用のため、編集可能なコピーを作成します。

Snowflake コンソールで、Snowflake Worksheet に移動して開きます。Worksheet 内で、Run all オプションを使用して次のコマンドを実行してください。<your_wh> をデータウェアハウス名に置き換えます:

USE WAREHOUSE <your_wh>;

CREATE DATABASE SQUID_TUTORIAL;

CREATE TABLE SQUID_TUTORIAL.PUBLIC.ORDERS LIKE "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."ORDERS";

INSERT INTO SQUID_TUTORIAL.PUBLIC.ORDERS SELECT * FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."ORDERS";

これらのコマンドは、新しいデータベースを作成し、サンプルテーブルの一つからデータを新しいデータベースにインポートします。

Snowflake から Squid への接続

  1. Integrations タブをクリックし、次に Available integrations をクリックしてすべての統合を表示します。
  2. Snowflake 統合を選択します。
  3. 次の構成情報を入力します:
注意

フィールドは大文字小文字を区別します。必要に応じて大文字を使用していることを確認してください。

  • Integration ID: snowflake-shop
  • Snowflake username
  • Snowflake password - プライベートに保つために、パスワードを Squid Secrets に保存してください。
  • Snowflake account ID - Snowflake コンソールの隅にあるユーザー名メニューを開き、メニューから Account オプションをクリックします。アカウントにカーソルを合わせると、アカウント情報の全体が表示されるモーダルが開きます。Snowflake の Copy account identifier ボタンを使用して ID をコピーしてください。Squid Console にこの ID を貼り付け、.- に置き換えて、以下のようにします:
    Before: AAAAAAA.AAA00000
    After: AAAAAAA-AAA00000
  • Snowflake database name: SQUID_TUTORIAL
  • Snowflake schema: PUBLIC
  • Snowflake warehouse - 前のステップでデータベースを作成したのと同じウェアハウスを使用してください。
  • Snowflake role - Snowflake データベースが存在するロールの名前です。Snowflake コンソールの自分のユーザー名の下で確認できます。

接続情報を入力したら、Test connection をクリックして接続が成功していることを確認してください。

  1. Add integration をクリックして統合を追加します。

  2. Squid によって Snowflake からスキーマが自動的に同期されます。各コレクションには、コレクション(テーブル)の各ドキュメント(行)を識別するための主キーが必要です。

  3. Squid Console のスキーマプレビューで ORDERS コレクション内の O_ORDERKEY 行の ... ボタンをクリックし、Edit field を選択します.

C_CUSTKEY 行を選択

  1. Primary key の下で、ドロップダウンメニューから Yes を選択します.

主キーを選択

  1. Save schema をクリックして検出されたスキーマを保存します.

セキュリティルール

データベースの統合にはすべてセキュリティルールが必要です。これにより、特定のコレクションやアクション、さらにはデータベース全体へのアクセスを認可するカスタムロジックを作成することができます。認証と認可はこのチュートリアルの範囲外のため、バックエンドコードには snowflake 統合へのパブリックアクセスを許可するセキュリティルールが含まれています。

ヒント

データのセキュリティについて詳しく知りたい場合は、Squid のバックエンド security rules についてご覧ください.

セキュリティルールは backend/src/service/example-service.ts ファイルに配置されています。セキュリティルールは SquidService クラスにデコレーターを追加することで拡張可能です。データベース統合のセキュリティルールを作成するには、データベースアクションの typeINTEGRATION_ID をパラメーターとして受け取る @secureDatabase デコレーターを使用します。現在のセキュリティルールは ExampleService クラスで確認できます:

backend/src/service/example-service.ts
export class ExampleService extends SquidService {
@secureDatabase('all', 'snowflake-shop')
allowAllAccessToSnowflakeDb(): boolean {
return true;
}
}

アプリをローカルで実行する

  1. Start the Squid backend locally using the following command in the terminal opened to your app's backend:
squid start
  1. Start the frontend using the following command in the terminal opened to your app's frontend:
npm run dev
  1. To view the app, navigate to localhost:PORT where PORT is logged in the terminal. The address will likely be http://localhost:5173.

アプリの機能を見る

  1. クエリに一致するすべてのドキュメントを、フロントエンドに表示されるテーブルで確認できます。以下の Squid フックはデータを読み取り、その後 DisplayOrders コンポーネントにより表示されます:
  const ordersCollection = useCollection<Order>('ORDERS','snowflake-shop');
const { data } = useQuery(ordersCollection.query().eq('O_CUSTKEY',121361).dereference());

...

return (
<div>
<h1>Orders</h1>
{data && <DisplayOrders orders={data} />}
<AddOrder />
</div>
);
  1. Add order をクリックしてランダムな新規注文を生成し、データベースに追加します。この注文がリアルタイムでビューに反映されることに気づくでしょう。Squid は Snowflake データベースとのリアルタイム同期を可能にします.

それだけです!

おめでとうございます!今回、あなたは Snowflake データベースを Squid に接続し、Squid のセキュリティ機能を使用してクライアントアプリケーションからの読み書きを管理しました。Squid は Snowflake やその他の統合でさらに多くのことが可能ですので、Squid Client SDK documentation を参照して、ミューテーションやクエリなどの他のデータベース機能について学んでください。また、Squid AI を使用してデータをクエリする様子を紹介する別のチュートリアルである this one も試してみてください.