2012-01-02 10 views
-1

に私はフラッシュクライアントのためのチャットサービスを提供するJavaを使用してサーバを作ってるんです。サーバーは、各ユーザーのデータをサーバー上の.txtファイルに保存します。たとえば、ユーザーがログインすると、このユーザーに関する情報がDatabaseMangerクラスに要求されます。その後、データベースを検索して情報を返します。ポイントは、人のアロケーションが短い時間内にログインすると、サーバは何度も繰り返しチェックをしているということです。それはその後、一定の間隔で、データベースの管理は、Java

String userData = DatabaseManager.getUserData(this.username); 

のDatabaseManagerが、その後すぐに検索しません、それはリクエストの配列にこの要求を格納します。私は実装したい アイデアは、接続クラスは、このような何かをするということですデータベース1の時間を経て、これを要求したクライアントにデータを返します。 15人のユーザーが1秒でログインすると、すべての情報を15回も渡すことはありません。これを実装する方法は?

+0

これを行う必要があることを確認するためにプロファイルしましたか? –

+0

同時に起こる書き込みコマンドがシステムを壊す可能性があるので、特に私にそれをするより良い方法のように思えます。定期的に更新したいのです。 – user1126865

+0

これは、あなたがそれを行うための最も逆戻った方法を選択したため、システムを破壊する可能性があります。同時WRITESによるトラブルを防ぐために定期的なREADSをどのように期待していますか? –

答えて

3

あなたは地球上で皆のような本当のDBMSを使用します。誰かがこのアプリケーション用にDBを選択しない理由を聞いて欲しいです。私はそれを妨げるものは考えられません。その日になって、RDBMSは、不自然で高価で複雑な獣でした。今日では、チェックアウトカウンターのタブロイドと同じくらい容易に利用できます。

は、最近DBにしないように、いくつかの言い訳があり、そして間違いなく、ほとんどすべてのアプリケーション用のファイルシステムよりもDBを使用するより多くの言い訳があります。

+0

あなたの返信に感謝します。ユーザーデータを保存するための単一の.txtファイルを使用して簡単なデータベースアプローチで解決しました。 Javaで実装する方法を知りたいのですが、関数が戻ってくるのを待って、マネージャークラスがそれらをすべて一定の間隔で返すようにします。 – user1126865

+0

@ user1126865:既存のデータベースソリューションを使用しないことで、挿入、クエリ、索引付け、キャッシュ、並行性などのためにホイールを改革することにコミットしています。 –

+0

+1。さらに、履歴書にJDBCとトランザクションを持たせることは、独自のテキストファイルベースの永続化メカニズムを持つよりもずっと便利です。 –

0

私はHSQLDBのような既存のデータベース・ソリューションを使用してお勧めします上記のように、この方法ではなく、一緒に独自のソリューションをハッキングのことをやって、長期的にオフはるかに良いだろう。

あなたが本当にとにかくこれをしたい場合は、ScheduledExecutorServiceを見ています。次に、遅延を伴う実行プログラム・サービスへの要求を起動し、その遅延でより多くのデータをlistenし、それを問合せに追加することができます。