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

データベース

Squid は、複数の database connectors とシームレスに統合する機能を提供し、データへの簡単なアクセスを実現します。各データベースは、異なる認証およびアクセス制御で設定でき、公開したいデータのみがユーザーにアクセスされるように制御されます。

Squid のデータベース・コネクタは、そのパワーとシンプルさにおいて非常に優れています。一度データベース・コネクタを追加すれば、洗練された SDK を使ってデータにアクセスし、操作することができます。

Squid は、無限にカスタマイズ可能なセキュリティ機能、自然言語でデータに関するアドホックな質問ができる Query with AI、さらには複数のデータベース・コネクタからの結果を結合できる細かなデータクエリ機能など、さまざまなデータベース機能を提供します。

データベースへの接続

  1. Squid Console の Connectors タブに移動します。
  2. 「Available Connectors」をクリックし、データベースタイプを選択します。
  3. 必要な接続情報を入力し、接続をテストします。
  4. 「Next」をクリックして、表示されている schema が正確であることを確認します。必要であれば、Squid で使用しないテーブルを削除してください(これらは後でいつでも追加可能です)。
  5. 「Save」をクリックして、コネクタの設定を確定します。

Squid's IP address

To prevent denial-of-service attacks, brute force password attacks, and other forms of malicious activity, some providers recommend restricting your network to allow access only from specific IP addresses. This procedure is commonly known as allowlisting, and it limits access to your resources by only accepting connections from a specific list of endpoints.

Refer to your resource provider to determine if you need to add Squid's IP addresses to your access list. If allowlisting is required, you can find Squid's IP addresses on the application overview page of the Squid Console (located in the Cloud Provider section).

Query with AI

Query with AI を使用すると、自然言語でデータに関する質問をすることができます。Squid AI は、データベースクエリと回答を得るために実行された手順とともに、自然言語形式で回答を返します。これにより、SQL や NoSQL クエリを書かずに、データを探索したりアドホックな質問を行ったりすることができます。Query with AI は、データベース・コネクタの Schema タブ、または Squid の AI Agent Studio 内にあります。

Query with AI でできることの詳細については、documentation をご覧ください。

接続済みデータベースの使用

クライアントからデータにアクセスするには、コネクタ作成時に提供した値である connector ID を使用します。Squid Console の connectors ページで connector ID を確認できます.

Client code
await squid
.collection('COLLECTION_NAME', 'YOUR_CONNECTOR_ID')
.query()
.eq('field', 'value')
.snapshots()
.subscribe((data) => {
// Do something with your data
});

フルスタックアプリケーションでデータベース・コネクタと対話する方法の詳細は、documentation をご覧ください.

データベースのセキュリティ

データベース・コネクタのセキュリティを確保するには、@secureDatabase または @secureCollection といったデータベースセキュリティデコレータを使用した関数を1つ以上記述します。以下は、ユーザーがドキュメント内の userId フィールドを変更できないようにするために、バックエンドプロジェクトに追加できる、より複雑なセキュリティルールの例です:

Backend code
export class ExampleService extends SquidService {
@secureCollection('table_name', 'update', 'CONNECTOR_ID')
secureUpdate(context: MutationContext): boolean {
// If the user is not authenticated, the update is not allowed.
const auth = this.getUserAuth();
if (!auth) return false;

// If the userId has changed, the update is not allowed.
const { after, before } = context.beforeAndAfterDocs;
if (after.userId !== before.userId) return false;

// The update is only allowed if the user making the request
// matches the user being updated.
return after.userId !== auth.userId;
}
}

データベース・コネクタのセキュリティに関する詳細は、documentation on securing data をご覧ください.

データベーススキーマ

データベースを Squid に接続すると、データベース内の既存データのスキーマに基づいてスキーマが自動生成されます。スキーマを表示するには、Squid Console のデータベース・コネクタに移動し、... ボタンをクリックして、ドロップダウンメニューから Schema を選択します.

このインターフェースを使用して、スキーマ構造を検証したり、スキーマ変更やルールのバリデーション管理を行い、データの正確性を確保します.

コレクションとフィールドの概要

コレクションはデータベース内の主要な組織単位で、その基本構造はデータベース・コネクタのタイプによって異なります。SQL データベースでは、コレクションは table を表し、NoSQL データベースでは collection of documents を表します.

コレクションは、コネクタ内で一意の名前によって識別されます。コレクションは 1 つ以上のドキュメントで構成され、SQL データベースではドキュメントが row を、NoSQL データベースでは document を表します。ドキュメントは、異なるデータ要素を示す 1 つ以上のフィールドを含みます。各フィールドは特定の属性セットによって特徴付けられており、効率的なデータ管理とコネクタの利用を支援します.

以下は、コレクションとフィールドの一般的な構造および属性の詳細です:

コレクション:

  • Name: コネクタ内で一意な識別子であり、関連する行やドキュメントのグループ化および参照に役立ちます。

ドキュメント:

  • ID: コレクション内で一意な識別子です。ID はランダムなものもあれば、ユーザーIDや他の重要なデータポイントの場合もあります。

フィールド:

  • Name: フィールド名。挿入、更新、クエリ実行時に、この名前はドキュメント内のフィールド名と一致する必要があります。
  • Type: フィールドが属するデータカテゴリを指定します。これは、string, number, boolean, date, map, array などのタイプを含み、選択したタイプにより追加のバリデーションルールが適用される場合があります:
    • String: 最小および最大長の設定が可能です.
    • Number: 最小および最大値の設定が可能です.
  • Primary Key: フィールドがコレクション内で一意の識別子として機能し、レコードの識別に役立つかどうかを示します.
  • Required: フィールドへのデータ入力が必須かどうかを示します.
  • Default Value: フィールドに予め設定された値を割り当てます.

追加フィールドの許可

一部のデータベース・コネクタ(特に NoSQL データ構造のもの)は、動的スキーマをサポートしています。動的スキーマでは、データの追加に伴いスキーマが変化するため、あらかじめスキーマを定義する必要がありません。データの挿入、更新、削除時に、データベースが自動的にスキーマを構築します。動的スキーマがサポートされているかどうかは、各データベース・コネクタの documentation を参照してください.

動的スキーマをサポートするコネクタでは、追加フィールドはデフォルトで許可されています。コレクションにおけるスキーマ変更を防ぐには、Schema に移動し、対象のコレクションを選択してから Allow extra fields をオフに切り替えます。一度無効にすると、追加フィールドを含むドキュメントの挿入または更新は拒否されます.

追加フィールドの許可トグル

以前は未知であったフィールドが、Rediscover schema をクリックした後に既知のスキーマの一部となった場合、Allow extra fields が無効になっていても、その新しいフィールドはシームレスに受け入れられます.