2016-06-30 7 views
0

私はWebSocketサーバーとして機能するJavaアプリケーションの開発を計画しています。基本的な考え方は、必要なすべてのデータを格納するArrayListを用意し、1分に1回更新することによって、SQLクエリ数を減らすことです。私の考えは、内部にデータが格納されているクラスと、クラスThreadを拡張してデータ格納クラスのデータを更新するクラスを作成することです。私の質問は、それが良いアプローチであるかどうか、そして他の選択肢は何かです。 WebSocketのスレッドが「一時停止」され、ユーザーがその瞬間にリクエストを送信する状況について、私は敬意を表します。理論的にはどうなるでしょうか?Javaスレッドはwebsocketを使用してデータとユーザーにデータを提供しています

+0

ハムは覚えているのか、本当のプロジェットのためにこれをやっているのですか?本当のプロジェクトでは、まずHibernateやEclipseLinkのようなORMを使うことを学ぶことをお勧めします。**よく使われています**(悪いことに、最悪です...)。 Aniway、SOは既存のコードをデバッグすることですが、あなたは質問が広すぎるか、または原初的に意見に基づいているので、話題にはなりません。最後に、websocketのようなものを使用したいのであれば、本当のwebsocketとjava websocketclientを使用しないのはなぜですか?学習するためのものでなければ、ホイールをやり直す必要はありません。 – Walfrat

+0

これに答えるには、アプリがこのArrayListの中に格納できると思うデータ量と予想されるスループットを知る必要があります。 –

+0

配列リストに配列リストがあり、約100個のオブジェクトを格納し、約10個のフィールドを格納します。入力タイプはJSONになります。ユーザーIDとトークンとデータ要求を与えます – Berrigan

答えて

1

あなたの質問ではなく、学術(知的好奇心)よりも実用的である場合、データベース

を使用し、その後、答えは簡単です:データベースを使用してください。

データベースの主な目的の1つは、データと同時クエリを変更する複数のスレッドを効率的かつ安全に処理することです。なぜホイールを再発明するか、特に非常にトリッキーな車輪?

H2 Database Engineのようなものは、あなたのニーズに適しているようです。この種の製品は、アプリ内に埋め込まれて実行することもできます。

データをストレージに保存する気にならない場合は、さらに高速で“in memory” databaseとして実行できます。

関連する問題