私のFlaskアプリケーションは現在、PostgreSQLを使用してすべての認証情報(ユーザー、トークン)を保存し、それを操作しています。他のロジックについては、MongoDB を使用する必要があります。アプリケーションの複雑さを軽減するために、複数ではなく 1 つのタイプの 1 つのテクノロジを使用するのが好きです (たとえば、Redis + memcached ではなく Redis のみ)。
今のところ、認証プロセスのバックエンドとして使用する MongoDB のみを使用することを考えています。
現在のワークフローは次のとおりです。PostgreSQL は、ユーザーとトークンの 2 つのテーブルを格納します。ユーザーをサインアップしたら、トランザクションを開き、ユーザーのデータ (ユーザー名、ログイン、パスワード) をユーザー テーブルに保存し、アクティベーション トークンをトークン テーブルに挿入し、アクティベーション レターを送信して、トランザクションを閉じます。そのため、ユーザー、トークン、またはそれ以降をコードに格納する際に問題が発生し、電子メールを送信しようとすると、トランザクションがロールバックされます。ユーザーが作成したがトークンが作成されていないため、アカウントをアクティブ化できない場合を防ぎます。
私が知っているように、トランザクションは MongoDB の機能ではありません。したがって、User と Token の 2 つのドキュメントがある場合、2 番目のドキュメントを作成できない場合、最初のドキュメントの作成をロールバックすることはできません。
私の質問は次のとおりです。
- 説明されている動作を MongoDB でどのように実装しますか?
- 認証に PostgreSQL を、ドキュメントに MongoDB を使用する代わりに、MongoDB のみを使用することをお勧めしますか?