2016-04-18 3 views
2

私はサービスに入ってくるデータ(Javaアプリケーション)がデータベースに入る必要があることを確認する必要があります。これを行うためにJavaから使用しなければならない正しいAPIはありますか?私はちょうどファイルにデータを保存し、後でそれらを再読み込みする必要がありますか?後で再試行するために、データベースが停止している場合、ディスクにデータを保存する正しい方法は何ですか?

+0

標準的なメカニズムはありません。 –

+0

@MarkRotteveelにはベストプラクティスがありますか? Google検索で何かを見つけるのが難しいです。 –

+0

データをJavaアプリケーションに直接送信するのではなく、キューに送信できますか?このシナリオでは、データベース停止を処理するための共通のパターンが存在します。 –

答えて

2

最適な解決策は、データベースが停止しないようにすることです。例えばホットスタンバイを実行します。典型的なデータベースシステムは、この種のものの既成のサポートを持っています。これは、データベースのレプリカをさらに立ち上げ、クライアントがそれらを使用するように構成するだけです。

ファイルに保存する際の問題は、維持する2つの永続性コードと、データベースがオフラインであることの検出に対処する一連の複雑なカスタムコードがあることです。ファイルに切り替え、データベースが存在することを検出します保存したデータをデータベースに再生することができます。

また、ファイルに保存されたものを失うとどうなるかを考慮する必要があります。例えばファイルベースの永続性とリカバリコードの不具合/不適切なテストが原因です。


永続的なキューを持つキューシステムを使用するという考えは、価値があります。ただし、キューイングシステムもダウンする可能性があることに注意する必要があります。これにより、システム全体の障害の可能性が増します。また、永続キューにはローカルディスク領域が必要です。これが満たされた場合(ダウンストリームデータベースが長時間ダウンしているため)、開始した場所に戻ります。

+0

これは最適な解決策ではありません。データベースに到達できない理由は何百万もあります。誰かが誤ってファイアウォールを変更して、DB(およびホットスタンバイ)に到達できなくなる可能性があります。ネットワークテーブルが誤って変更される可能性があります。その他*物事が落ちたり、到達不能になる理由は常にある*。私はその場合の計画を探しています。 –

+0

何でも。ネットワークファイアウォールをランダムに変更した人がいる場合は、その問題を最初に解決する必要があります。 –

+0

@DonRhummyこれらの種類の問題が運用環境で発生している場合は、対処する必要がある大きな問題があります。 –

関連する問題