1

独自の個別のデータベースを持ついくつかの異なる Web アプリケーションがあります。これらのさまざまな Web アプリケーションはすべて、すべてのユーザーとユーザー名のリストを含む共通のデータベースを認証に使用します。簡単にするために、私のアプリケーション データベースはフォーラムのようなもので、ユーザーの投稿を追跡しているとしましょう。テーブルには、ユーザー ID といくつかの投稿テキストが格納されます。

今私が抱えている問題は、私のアプリケーションが投稿の横にユーザー名を表示する方法が非常に一般的なタスクであるため、私たちがやっていることは面倒で摩擦が多いと感じているチーム メンバーがいるということです。最初に、アプリケーション データベースに移動して、次のようなことを行う必要があります。SELECT userID, postText FROM tblPosts次に、それをuserID取得してユーザー データベースに移動し、実際の名前を取得する必要がありますSELECT name FROM tblUsers WHERE userID = X。次に、これら 2 つのクエリからのデータをマージして、ページに表示します。

個人的には、データの一貫性のために単一の個別のユーザー データベースを使用することが重要だと考えているため、私たちのやり方は気にしませんが、私のチーム メンバーの何人かは、すべてのユーザー名をローカル アプリケーション データベースにコピーして、投稿を記録するときにユーザーIDの隣にユーザー名を保存して、その情報を簡単に取り出せるようにします。ユーザーが自分の名前を変更したい場合 (非常にまれなイベントであり、約 100 人のユーザーしかいません)、共通データベースとすべてのアプリケーション データベースで更新を実行するだけです。

これは、人々が抱える可能性のある一般的な問題のようです。問題に対処するための一般的なアプローチと、私たちがやりたいことについて、誰かが検討してくれませんか。

4

1 に答える 1

1

シングル サインオン スキーム (一元化されたユーザー ID と認証) を備えたシステムがあります。これは大きな競争上の優位性です。

シンプルかつクリーンに構築しました。それはさらに巨大です。この種のことを正しく行うのは非常に困難であり、あなたはそれを成し遂げました。

(LDAP や Active Directory などのシステムでこれを構築しようとすると、多くの複雑なコードを維持する必要があります。)

仲間の開発者が個人的な便宜のためにその利点を犠牲にしないようにしてください。ユーザー データベースへの変更を同期する必要がある場合、同期が取れなくなると問題が発生します。ifではなくwhenの質問です。

ところで、ユーザー データベースと Web サイト固有のデータベースが同じ MySQL サーバー上にある場合、このようなことを行って 2 つの異なるデータベースの使用を統合できます。これにより、開発者のニーズを満たすことができます。

  SELECT u.username, d.opname
    FROM userdatabase.users u
    JOIN website.transaction d ON u.userid = d.userid

しかし、これを行うと、将来、さまざまな Web サイト データベースを他のサーバー マシンに移行することが難しくなります。

于 2013-05-10T18:07:14.517 に答える