[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’ でこのフィールドにインデックスを付ける必要があります。