3

mysql のない PBS システムで多くのジョブを実行する必要があったため、MySQL の代わりに sqlite3 を使用するように切り替えました。もちろん、私のマシンには NFS がありませんが、PBS には NFS があります。sqlite3 への切り替えに多くの時間を費やした後、多くのジョブを実行し、データベースを破損させました。もちろん、sqlite3 FAQ で NFS について言及されていますが、私が始めたときは、これについて考えさえしませんでした。

ジョブの開始時にデータベースをコピーすることはできますが、それはマージの悪夢に変わります!

この単純な理由から、同僚に sqlite を勧めることは決してありません。

NFS が標準に達しておらず、それが彼らのせいであるという暴言を読んだことがあります。いくつかの回避策を試しましたが、この投稿が示唆するように、それは不可能です。

パフォーマンスを犠牲にする回避策はありませんか?

それで、私は何をしますか?他のdbソフトウェアを試してみませんか? どれ?

4

1 に答える 1

3

間違ったツールを使用しています。この経験に基づいて「sqliteはお勧めしません...」と言うのは、釘を打ち込むためにガラス瓶を使用すると壊れ続けた後、「ガラス瓶は決してお勧めしません」と言うようなものです。

問題をより正確に指定する必要があります。あなたの質問の行間を読み込もうとすると、次のような結果が得られます。

指定されていないパスを介して作業を行い、出力を生成する多くのノードがあります。データベースをコピーできると言っているため、ジョブは相互作用しません。すべてのジョブからの出力は、終了後にマージできます。マージされた出力を効果的に生成するにはどうすればよいですか?

質問として、これが私のアドバイスです:

各ジョブが、各ジョブに固有の構造化ファイルで出力を生成するようにします。ジョブが終了したら、各ファイルを解析して sqlite3 データベースに挿入するプログラムを作成します。これは、処理できる方法で NFS を使用し (単一プロセスでファイルに順次書き込みます)、また適切な方法で sqlite3 を使用します (ローカル ファイルシステム上のデータベースに単一プロセスで書き込みます)。これにより、ジョブの実行中に NFS ロックの問題が回避され、sqlite3 データベースで競合が発生しないため、スループットが向上します。

于 2012-12-06T22:57:00.347 に答える