Snowflake データベースを統合する
Snowflake データベースを接続し、Squid のリアルタイム・ストリーミング、堅牢なクエリ、AI 機能を活用しましょう。
TL;DR
このチュートリアルでは、新しい Snowflake データベースを Squid プロジェクトに接続する方法を学びます。内容は次のとおりです。
- Squid Console でインテグレーションを作成する
- 外部データベースに対するセキュリティルールを適用する
- クライアントプロジェクトから Squid を使って Snowflake データベースをクエリする
このチュートリアルでは React と Squid を使用して、Snowflake テーブル内のサンプルデータに接続します。データベース用語、React、Squid プラットフォームの基本的な理解があると役立ちますが、このガイドに前提条件はありません。
環境セットアップ
- In the Squid Console, switch to the
devenvironment.

Download the snowflake code sample using the following command. Replace the placeholders with the values from your Squid application as shown in the console.
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
You can find your environment variables under: 'Application' -> 'Show env vars' as seen below:

- Open the project in the IDE of your choice.
- Start the app locally by running the following command in the project folder:
npm run start
- 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 console で 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";
これらのコマンドにより、新しいデータベースが作成され、サンプルテーブルの 1 つから新しいデータベースへデータがインポートされます。
Snowflake を Squid に接続する
- Integrations タブをクリックし、続いて Available integrations をクリックして、すべてのインテグレーションを表示します。
- Snowflake integration を選択します。
- 次の設定情報を入力します。
フィールドは大文字・小文字を区別します。必要に応じて大文字を使用していることを確認してください。
-
Integration ID: snowflake-shop
-
Snowflake username
-
Snowflake password - 非公開にするため、パスワードは Squid Secrets に保存してください。
-
Snowflake account ID - Snowflake console で、右上(ユーザー名が表示されている)メニューを開き、メニューから 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 - 前の手順でデータベースを作成したのと同じ warehouse を使用します。
-
Snowflake role - Snowflake データベースが配置されている role 名です。Snowflake role は Snowflake console の Snowflake username 配下で確認できます。
接続情報を入力したら、Test connection をクリックして接続が成功していることを確認します。
-
Add integration をクリックしてインテグレーションを追加します。
-
スキーマは Snowflake から Squid へ自動的に同期されます。各 collection には、その collection(table)内の個々の document(row)を識別するための primary key が必要です。
-
Squid Console のスキーマプレビューで ORDERS collection を開き、O_ORDERKEY 行の ... ボタンをクリックして Edit field を選択します。

- Primary key のドロップダウンメニューから Yes を選択します。

- Save schema をクリックして検出されたスキーマを保存します。
セキュリティルール
セキュリティルールはすべての database integration に必須です。これにより、特定の collection やアクション、さらにはデータベース全体へのアクセスを承認するためのカスタムロジックを作成できます。認証(authentication)と認可(authorization)はこのチュートリアルの範囲外のため、バックエンドコードには snowflake integration への public access を許可するセキュリティルールが含まれています。
データを安全に保護する方法については、Squid のバックエンド security rules を参照してください。
セキュリティルールは backend/src/service/example-service.ts にあります。SquidService クラスにデコレーターを追加することで、セキュリティルールを拡張できます。database integration 用のセキュリティルールを作成するには @secureDatabase デコレーターを使用します。これはデータベースアクションの type と INTEGRATION_ID をパラメータとして受け取ります。ExampleService クラス内の現在のセキュリティルールは次のとおりです。
export class ExampleService extends SquidService {
@secureDatabase('all', 'snowflake-shop')
allowAllAccessToSnowflakeDb(): boolean {
return true;
}
}
アプリをローカルで実行する
- Start the Squid backend locally using the following command in the terminal opened to your app's backend:
squid start
- Start the frontend using the following command in the terminal opened to your app's frontend:
npm run dev
- To view the app, navigate to localhost:PORT where PORT is logged in the terminal. The address will likely be
http://localhost:5173.
アプリの機能を確認する
- クエリに一致するすべての documents を、フロントエンドに表示されるテーブルで確認できます。次の Squid hooks がデータを読み取り、その後
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>
);
- Add order をクリックして新しい注文をランダムに生成し、データベースへ追加します。この注文がリアルタイムでビューに表示されることに注目してください。Squid によって Snowflake データベースとのリアルタイム同期が可能になります。
以上です!
おめでとうございます!Snowflake データベースを Squid に接続し、Squid のセキュリティ機能を使ってクライアントアプリケーションからの読み取りと書き込みを管理しました。Squid には Snowflake や他のインテグレーションでできることがまだまだたくさんあります。Squid Client SDK documentation を参照して、mutations や queries といった他のデータベース機能について学んでみてください。また、Squid AI を使ったデータのクエリを紹介する このチュートリアル も試してみてください。