データベース
Squid は、複数のデータベースとシームレスに統合し、データへの簡単なアクセスを可能にする機能を提供します。各データベースは、異なる認証およびアクセス制御で設定でき、公開したいデータのみがユーザーによってアクセスされるようにできます。
Squid の database connectors は、そのパワーとシンプルさで非常に優れています。一度データベースコネクタを追加すると、シンプルな SDK を使用してデータにアクセスし、操作することができます。
Squid では、無限にカスタマイズ可能なセキュリティ機能、自然言語でデータに関するアドホックな質問が可能な Query with AI、さらには別々のデータベースコネクタからの結果を結合できる細かいデータクエリなど、多くのデータベース機能が提供されています。
Connecting to a database
- Squid Console の Connectors タブに移動します。
- 「Available Connectors」をクリックし、データベースの種類を選択します。
- 必要な接続詳細を入力し、接続をテストします。
- 「Next」をクリックし、表示される schema が正確であることを確認します。必要に応じて、Squid での使用が意図されていないテーブルを削除してください(これらは後で追加することも可能です)。
- 「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 をご覧ください。
Using a connected database
クライアントからデータにアクセスするには、コネクタ作成時に入力した値である connector ID を使用します。connector ID は Squid Console の connectors ページで確認できます。
await squid
.collection('COLLECTION_NAME', 'YOUR_CONNECTOR_ID')
.query()
.eq('field', 'value')
.snapshots()
.subscribe((data) => {
// Do something with your data
});
フルスタックアプリケーションでデータベースコネクタと連携する方法の詳細は、documentation をご覧ください。
Securing your database
データベースコネクタを保護するには、データベースセキュリティデコレーターである @secureDatabase
または @secureCollection
を使用する関数を1つ以上作成してください。以下は、ユーザーがドキュメント内の userId
フィールドを変更できないようにするために、バックエンドプロジェクトに追加できる、より複雑なセキュリティルールの例です:
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 をご参照ください。
Database schema
データベースを Squid に接続すると、既存のデータベーススキーマに基づいて自動的にスキーマが生成されます。スキーマを確認するには、Squid Console のデータベースコネクタに移動し、...
ボタンをクリックして、ドロップダウンメニューから Schema を選択してください。
このインターフェースを使用して、スキーマ構造の確認、スキーマの変更、およびルールの検証管理を行い、データの正確性を確保します。
Understanding collections and fields
コレクションはデータベース内の主要な組織単位であり、その基盤となる構造はデータベースコネクタの種類により異なります。SQL データベースでは、コレクションは table を表し、NoSQL データベースでは collection of documents を表します。
コレクションはコネクタ内で一意の名前で識別され、1つ以上のドキュメントから構成されます。SQL データベースではドキュメントが row を、NoSQL データベースでは document を表します。ドキュメントには、異なるデータ要素を示す1つ以上のフィールドが含まれ、各フィールドは特定の属性セットによって特徴付けられており、効率的なデータ管理とコネクタの利用を促進します。
以下は、コレクションとフィールドの一般的な構造と属性の詳細です:
Collections:
Name
: コネクタ内での一意の識別子。関連する行またはドキュメント群をグループ化し、参照するのに役立ちます。
Documents:
ID
: コレクション内での一意の識別子。ID はランダムなものでもよく、ユーザーIDや他の重要なデータポイントでも構いません。
Fields:
Name
: フィールド名。挿入、更新、クエリ実行時にはドキュメント内のフィールド名と一致する必要があります。Type
: フィールドが属するデータカテゴリを指定します。例えば、string, number, boolean, date, map, array などがあります。選択したタイプにより、追加の検証ルールが適用される場合があります:String
: 最小および最大の長さを設定できます。Number
: 最小および最大の値を設定できます。
Primary Key
: コレクション内でフィールドが一意の識別子として機能するかどうかを示し、レコードの識別に役立ちます。Required
: フィールドへのデータ入力が必須かどうかを示します。Default Value
: フィールドに予め定義された値を割り当てます。
Allowing extra fields
一部のデータベースコネクタ(特に NoSQL データ構造を持つもの)は、ダイナミックスキーマをサポートしています。ダイナミックスキーマはデータ追加に応じて変化するため、事前にスキーマを定義する必要はありません。データの挿入、更新、削除が行われると、データベースは自動的にスキーマを構築します。ダイナミックスキーマがサポートされているかどうかは、各データベースコネクタの documentation をご確認ください。
ダイナミックスキーマをサポートするコネクタでは、追加フィールドはデフォルトで許可されています。コレクションでのスキーマ変更を防ぐには、Schema に移動し、該当のコレクションを選択した後、Allow extra fields をオフに切り替えてください。無効にすると、追加フィールドを含むドキュメントの挿入や更新は拒否されます。
一度知られていなかったフィールドが Rediscover schema をクリックした後に既知のスキーマの一部となる場合、Allow extra fields が無効になっていても、新たなフィールドはシームレスに受け入れられます。