Accelerateの比較
Prisma Accelerateは、グローバルなキャッシュシステムと複数のリージョンにまたがるコネクションプールを備え、世界中のどこにユーザー(またはデータベース)がいても低遅延でデータへ一貫したアクセスを提供し、グローバルなオーディエンスにサービスを提供する製品をサポートします。
マネージドコネクションプールは、サーバーレスインフラストラクチャをサポートするように設計されており、大量の接続を処理し、トラフィックスパイクに容易に対応できます。
市場にある他のグローバルキャッシュおよびコネクションプールソリューションとPrisma Accelerateを比較し、その差別化要因を発見してください。
Accelerateがユニークな理由
Prisma Accelerateが多くの人に選ばれ、愛されているのは、Accelerateをユニークにするいくつかの主要な理由によるものです。
- クエリレベルのポリシー: Accelerateは、クエリレベルのキャッシュポリシーを提供する唯一のソリューションであり、各クエリのキャッシュ戦略を具体的に制御できます。長時間キャッシュする必要がある値、短時間キャッシュする必要がある値、まったくキャッシュすべきでない値があるのが一般的です。Accelerateを使えば、これを実現でき、さらにクエリごとに異なるキャッシュ戦略を設定することも可能です。
- デフォルトでグローバル: Accelerateはデフォルトでグローバルに分散されています。ユーザーがデータベースの場所に対してどこにいるか心配する必要は一切ありません。
- 完全マネージド: サーバーを管理したり、稼働時間を心配したりする必要はありません。Accelerateは完全にあなたのためにマネージドされます。
- オートスケーリング: Accelerateはワークロードの要求に合わせてリソースを自動的に調整し、トラフィックスパイク時でも高速かつ一貫したパフォーマンスを提供します。
Accelerateグローバルキャッシュ
Prisma Accelerateは強力なグローバルキャッシュを提供するため、データベースがどこにホストされていても、ユーザーが最も近い場所であるエッジでデータを提供できます。これにより、ユーザーエクスペリエンスが高速化されるだけでなく、ラウンドトリップを回避することでデータベースへの読み取り負荷も軽減されます。
Accelerate | Hyperdrive | Planetscale Boost | |
---|---|---|---|
完全マネージド | ✅ | ✅ | ✅ |
グローバルに分散されたエッジインフラ | ✅ | ✅ | ✅ |
コードからキャッシュポリシーを制御 | ✅ | ❌ | ❌ |
クエリレベルのキャッシュポリシー | ✅ | ❌ | ❌ |
APIキーで認証 | ✅ | ❌ | ❌ |
Postgres互換 | ✅ | ✅ | ❌ |
MySQL互換 | ✅ | ❌ | ✅ |
MongoDB互換 | ✅ | ❌ | ❌ |
自動キャッシュ更新 | ❌ | ❌ | ✅ |
これらが重要なのはなぜですか?
-
AccelerateはPrismaクライアントを拡張するため、コードベースから直接、たった1行の追加コードでキャッシュポリシーを制御できます。統合はシームレスです。以下に、stale-while-revalidatingキャッシュ戦略を使用した例を示します。
await prisma.user.findMany({
cacheStrategy: {
swr: 60,
},
}); -
クエリレベルのキャッシュポリシーは、どのクエリをキャッシュするか、およびポリシーの特性を制御できるため、重要なアプリケーションにとって不可欠です。アプリ内の特定のデータを数日間キャッシュしたい場合もあれば、数分間だけキャッシュしたい場合、まったくキャッシュしたくない場合もあります。これはPrisma Accelerateでのみ可能です。
-
APIキーでの認証は、データベースの認証情報をアプリケーションのシークレットから分離できるため、有用なセキュリティ対策となります。データベースの認証情報を変更することなく、APIキーを好きなだけ簡単にローテーションできます。
-
自動キャッシュ更新とは、データベースで変更が発生したときにキャッシュが自動的に更新されることを意味します。Accelerateでは、さまざまなキャッシュ戦略を使用して、キャッシュが無効化される方法を制御できます。
Accelerateコネクションプール
Prisma Accelerateには、グローバルにホストされたコネクションプーラーが含まれており、ピーク時の負荷も問題なく処理できます。コネクションプールを使用することは、特に性質上データベースへの接続量を自力で制御できないサーバーレスインフラストラクチャにとって重要です。Prisma Accelerateは、あらゆるワークロードをサポートするために自動スケーリングする、完全にマネージドされたグローバルなコロケーションオプションを提供します。
管理
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
完全マネージド | ✅ | ❌ | ❌ | 🟠 | ✅ | ❌ | ✅ |
グローバルに分散 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
ORMクライアントと統合 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
APIキーで認証 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
冗長性 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
これらが重要なのはなぜですか?
- コネクションプーラーを自分で管理することを選択した場合(例:pgbouncerまたはpgcatを使用)、その稼働時間を管理する責任も負うことになります。サーバーがクラッシュした場合、回復するまでアプリケーションが停止する可能性があります。Accelerateは完全マネージドソリューションとして、万が一のインフラストラクチャの問題が発生した場合でも、透過的に復旧されます。
- Digital Oceanのホストされたpgbouncerオプションはセミマネージドであり、Digital Oceanアカウントでセットアップし、常にスムーズに動作していることを確認する必要があります。
- APIキーでの認証は、データベースの認証情報をアプリケーションのシークレットから分離できるため、有用なセキュリティ対策となります。データベースの認証情報を変更することなく、APIキーを好きなだけ簡単にローテーションできます。
- 冗長性は、コネクションプールサービスが停止する万が一のシナリオで役立ちます。Accelerateでは、自動的かつシームレスに別のサーバーに引き継がれ、中断することなく復旧されます。
パフォーマンス
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
オートスケーリング | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
グローバルに分散 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
HTTP経由で最適化されたクエリ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
分離されたコンピューティング | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
これらが重要なのはなぜですか?
- Accelerateはアプリケーションのワークロードに合わせて自動的にスケールアップ・ダウンするため、コンピューティングリソースが不足することはありません。さらに、これにより単一のコンピューティングインスタンスの障害から保護する重要な冗長性も提供されます。万が一インスタンスがダウンした場合でも、Accelerateは自動的に新しいインスタンスを起動します。
- アプリケーションサーバーとPgBouncerまたはデータベース間のクロスリージョンTCPハンドシェイクは、コストがかかり時間も消費します。接続がPgBouncerレイヤーでのみ再利用される場合、TCPハンドシェイクと接続設定は、すべてのリクエストで不必要な時間を消費し続け、接続再利用の効率を損ないます。Prisma Accelerateは、接続管理により効率的なHTTPを活用することでこれを改善します。これにより、TCPハンドシェイクに関連するオーバーヘッドが削減され、アプリケーションとデータベース間のより高速で応答性の高いインタラクションが実現します。
- 分離されたコンピューティングリソースにより、「うるさい隣人」を心配する必要は一切ありません。他のお客様がご自身のパフォーマンスに影響を与えることはありません。
データベースサポート
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
PostgreSQL | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
MySQL | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Planetscale | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
CockroachDB | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
MongoDB | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |