📘

Prisma 3.9.0リリース

2022/02/05に公開

2022年2月2日にPrismaの3.9.0がリリースされたので、GitHubのリリースを日本語訳しています。 Prismaユーザー待望のinteractiveTransactionsの並行処理に関する問題も解決されたようなので、3.9.0には早くアップデートしたいですね。

主な改善点・新機能

interactiveTransactionsの並行処理に関する問題

3.9.0 では、読み取りと書き込みが同時に行われた場合のタイムアウトとロールバックに関する多くの問題を修正しました。

これはinteractiveTransactionsのプレビュー リリースの一部であるため、この機能を有効にするには interactiveTransactions プレビュー機能を有効にする必要があります。

タイムアウトが発生したり、interactiveTransactionsが期待通りに動作しなかったりした場合は、今こそアップグレードして再挑戦する時です!

インタラクティブ・トランザクションについて詳しくは、ドキュメントをご覧ください。

Prisma Migrateの改良で移行のトラブルシューティングを実現

昨年、私たちはPrisma Migrateを一般公開しました。それ以来、私たちはお客様からフィードバックをいただき、移行を構築、テスト、および展開する際に経験する課題を理解しました。

このたび、移行に関するトラブルシューティングの経験を向上させるために、新しいCLIコマンドを導入することをお知らせします。

  • prisma migrate diff
  • prisma db execute

prisma migrate diff コマンドは、データベーススキーマ、Prisma スキーマファイル、または移行履歴の diff を作成します。このコマンドにスキーマの状態とスキーマの状態を入力するだけで、SQLスクリプトまたは人間が読める diff が返されます。

prisma migrate diffの仲間として、データベースに対してSQLスクリプトを実行するprisma db executeも作りました。prisma migrate diffの出力を直接prisma db executeにパイプすることができます。

どちらのコマンドも非対話型なので、いくつかの自動化ツールを使って、前方移行や後方移行など、多くの新しいワークフローを構築することが可能です。

ちらのコマンドもPreview版です。
詳細は、こちら

CockroachDBのプレビュー対応について

CockroachDBのプレビューサポートを発表します🎉。

CockroachDBは、開発者の俊敏性を維持し、運用のオーバーヘッドを削減しながら、効率的に拡張する能力に秀でた分散型SQLデータベースです。

PrismaのCockroachDBサポートは、Cockroach Labsチームとのコラボレーションの成果であり、このリリースにより、既存のCockroachDBプロジェクトでPrismaをイントロスペクションで使用できるようになります。

詳しくはリリースブログポストをご覧ください。
スタートガイドでお試しください。
フィードバックの共有
今週木曜日は、Cockroach LabsのAydrian HowardがCockroachDBについて説明し、デモを行うWhat's new in Prisma 3.9.0にご参加ください。

MongoDBのRawクエリサポート

Prisma バージョン 3.9.0 では、MongoDB (Preview) コネクタにロークエリを導入しました。ロークエリは、Prismaがまだサポートしていない次のようなクエリを書くのに便利です。

// To find zero or more documents matching a filter
const result = await prisma.user.findRaw({
  filter: { age: { $gt: 25 } },
  options: { projection: { _id: false } },
})

// To perform aggregation operations on a collection
await prisma.user.aggregateRaw({
  pipeline: [
    { $match: { status: 'registered' } },
    { $group: { _id: '$country', total: { $sum: 1 } } },
  ],
})

// To run a command against the database
await prisma.$runCommandRaw({
  aggregate: 'User',
  pipeline: [
    { $match: { name: 'Bob' } },
    { $project: { email: true, _id: false } },
  ],
  explain: false,
})

MongoDB の raw クエリ API は、Prisma の $queryRaw SQL API とは異なり、 データベース間の低レベルの違いを処理することで、よりよい API と開発者の体験を提供することができます。

Prismaの新しいrawクエリAPIとその使用方法については、ドキュメントを参照してください。

Discussion