[Keystone] 適切なデータベースを選択する

適切なデータベースを選択する

Keystone は、Postgres、MySQL、および SQLite データベースプロバイダをサポートしています。このガイドでは、これらのプロバイダの違いを強調し、プロジェクトに適したものを選択するのに役立ちます。

大文字・小文字の区別

デフォルトでは、Postgres は大文字小文字を区別しますが、MySQL は区別しません。また、SQLiteはcontains、startsWith、endsWith では区別しません。つまり、フィルタリングやソートの結果は、データベースの種類や照合順序によって異なることを意味します。GraphQL クエリで StringFilter を使用する場合、モードはデータベースに対して大文字小文字を区別するものとなります。Postgres でクエリを大文字小文字を区別しないようにするには、mode: insensitive を使用します。

デフォルトの型

Prisma は使用する各データベースに対して異なるデフォルトの型を持っています。たとえば、Keystone のテキストフィールドタイプは、Postgres では Prisma が text 列タイプを使用し、MySQL では varchar (191) 列タイプを使用するため、Prisma はそれぞれ異なるデフォルトの型を持ちます。フィールドタイプの違いの詳細については、Prisma スキーマリファレンスを参照してください。
Keystone のテキストフィールドは、db.nativeType オプションをサポートしています。これにより、これをオーバーライドすることができます。このオプションは、将来的に他のフィールドタイプにも追加される予定です。

自動インクリメント整数フィールド

defaultValue: { kind: ‘autoincrement’ } を使用した Integer フィールドでは、MySQL では isIndexed: true または isIndexed: ‘unique’ でこのフィールドにインデックスを付ける必要があります。