2017-01-09 4 views
2

現在、プログラミング言語としてJavaを使用してMySqlからNoSqlにデータを移行するプロジェクトを行っています。以下は、それに関連するプロセスです:MySqlからJavaのNoSqlにデータを転送する際にファイルを中間層として使用する

  • は、MySQLのデータを読み込み、JSON形式でファイルに書き込む
  • JSONファイルを読み込み、NoSQLの
  • に書き込むエラーのいずれかで発生した場合にエラーログを書き込みます。上のプロセス

ただし、中間層としてファイルを使用せずに移行することができます。私はツールと論文の多くが上記の設計で行われていることを発見したので、私はそれに追いついた。ファイルを中間層として使用する利点はありますか?

+0

私は回答を掲載しましたが、ポストした後にいくつかの説明が必要な場合があります。物理的な(ハードウェア)制限はありますか?処理やストレージ、ネットワークなどのような? – Sh4d0wsPlyr

+0

@ Sh4d0wsPlyrでは、ストレージと帯域幅の制限があります。 –

答えて

1

質問に完全に答えてください:はい、利点はありますが、それは全体的な実装に依存します。

ここでは、考慮すべきいくつかのことがあります(それが資産になる理由について)。

  1. エラーの場合の完全性。プロセスの実行方法によっては、転送中に何か重大なことが起こった場合、ファイルを持っているとどこに問題が発生したのかがわかります。
  2. データベースが物理的に分離されていると、ファイルはサーバー間のオーバーヘッドトラフィックを大幅に削減します。
  3. 一般にファイルをデバッグするのが簡単です。実行時に同じバグを追跡するのではなく、やや読みやすいファイルに書き出すときに問題を見るのは簡単です。

理由:

  1. ファイルは、使用したくない場合があり、余分なスペースを取ります。
  2. 全体的に遅いです(実際には、データベースの読み取り、ファイルへの保存、ファイルからの読み込み、データベースへの書き込みが必要です)。
  3. 追加の障害点が追加されます。あなたはデータベースに読み書きし、ファイルの実装に関係なく使用可能なフォーマットに変換する必要があります。ただし、ファイルを使用するレイヤーを追加すると、ファイルの欠落、破損、大きすぎるなど、障害の危険性が高まります。

あなたの状況でストレージと帯域幅が懸念されるので、ここに私の推薦があります。転送中にファイルを格納するのに十分なストレージがある場合(一時的な場合など)、ファイルを使用して転送すると、帯域幅が節約されます。後でファイルを削除すると、ストレージの問題が少なくなります。

+0

@ sh4dowsPlyrの場合、移行がローカルマシンで行われ、移行がサーバー全体で実行されている場合、何をすべきか教えてください。 –

+0

ローカルマシン - 直接転送、リモートファイル転送。両方のマシンに物理的にアクセスできる場合は、手動でファイルを転送して帯域幅を節約できますが、それは面倒かもしれません。しかし、それについてもっと考えてみると、私の推薦は、一般的なファイル方法論よりも重要です。 – Sh4d0wsPlyr

関連する問題