2009-05-26 6 views
1

javaのsqliteデータベースにアクセスするプログラムの複数のインスタンス(常に同じファイル)を実行しようとしていますが、実際には複数のジョブが同じデータベースにアクセスできるかどうかはわかりません....複数のプロセスでsqlitejdbcを使用する

+0

私はmakeコマンドラインを表示すると、あなたの持っているようなランタイムの問題(Javaの場合、あなたのタグが正しいならば)は何もわかりません。実際にデータベースを使用するコードを表示できますか? – lothar

+0

質問を編集しました。これは本当に特定の問題よりも一般的な質問です。 – LB40

答えて

1

異なるプロセスから単一のSQLiteデータベースにアクセスしようとすると、SQLiteは適切なロックを保証するので、(あなたが使用している言語を問わず)完全に正確です。しかし、SQLiteはロックの競合を特にうまく処理しないので、複数のプロセスが同時にデータベースに絶えずアクセスしている場合は、別のデータベースを検討したり、データベースにアクセスするために単一のサーバーを使用することができます。

+0

sqlite DBにFileLockを追加しましたが、この例外を回避するようです。 何かを挿入しようとすると、sqliteがロックを保持しているので、例外が発生するので、ドライバからの問題です... – LB40

2

実際には、SQLiteはロックを処理するため、並行性の問題は期待できません。いずれにせよ、SQLiteで起きたものではありません。

ただし、この解決策は完全にでスケーラブルではありません。です。それがアプリケーションに関する問題であれば、他のDBソリューションをチェックアウトする必要があります。

+0

私はコンカレント環境でそれをするつもりはありませんでした。別のDBソリューションに切り替えることは次のステップです。 – LB40

関連する問題