ネットワーク ドライブに保存でき、複数のユーザー (最大 20 人) がサーバー ソフトウェアなしで使用できるデータベースが必要です。
MS Access または Berkeley DB を検討しています。
ファイル データベースに関する経験を共有できますか?
どちらを使用しましたか、問題はありませんでしたか?
ネットワーク ドライブに保存でき、複数のユーザー (最大 20 人) がサーバー ソフトウェアなしで使用できるデータベースが必要です。
MS Access または Berkeley DB を検討しています。
ファイル データベースに関する経験を共有できますか?
どちらを使用しましたか、問題はありませんでしたか?
私は、ファイルベースのデータベースが半ダースのユーザーを超えて拡張できるとは本当に思いません。私が最後に Access データベースを持っていたとき (確かにこれはかなり前のことです)、8 人から 9 人が利用できるようにするには、かなりの労力を要しました。
PostgreSQL または MySQL を使用して、古いジャンク コンピューターに Ubuntu をインストールする方がはるかに簡単です。これは、Access フロントエンドを維持していたときでさえ、私がしなければならなかったことです。
ファイルベースのデータベースには注意してください。それらはすべて同じ問題を抱えている可能性があります。あなたの状況では、クライアント/サーバー ソリューションが本当に必要です。
SQLite FAQ より
ネットワーク ファイル システムを介して多数のコンピュータから同時に同じデータベースにアクセスする状況では、SQLite を使用しないようにすることをお勧めします。
データベース全体が単一のファイルに保存され、同時にアクセスする複数のユーザーを非常に安全に処理できるため、SQLiteをお勧めします。クライアント アプリケーションに使用できるさまざまなライブラリがいくつかあり、サーバー ソフトウェアは必要ありません。
長所の 1 つは、SQL サーバーを非常によく模倣しているため、データベース ファイルの使用から本格的な SQL サーバーに変換する必要がある場合、クライアントのクエリのほとんどを変更する必要がないことです。データを新しいサーバー データベースに移行するだけで済みます (たとえば、SQLite データベースを MySQL データベースに変換するプログラムがあれば、驚くことではありません)。
アクセスは雌犬になることができます。私は、「デザインモード」に行ってフォームやおそらく列のデザインを変更できるように、20〜50人にアクセスを閉じるように言わなければならない立場にありました. まったく面白くありません。(アクセスが古いため、設定が悪いだけかもしれません)
私はAccessをしばらくの間、オンラインを含むさまざまな状況で使用しています。ガイドラインに従って適切に設定されていれば、Accessはうまく機能することがわかりました。Accessの利点の1つは、フォーム、クエリビルド、レポート、データベース管理、VBAのすべてが1つのパッケージに含まれていることです。さらに、他のすべてのOfficeアプリケーションとうまく連携します。Access 2007ランタイムは、ここから無料で入手できるため、配布のコストが低くなります。アクセスは確かに大規模な操作には適していませんが、20人のユーザーにはかなり適しているはずです。編集:マイクロソフトは同時ユーザーの数を255にしています。
Berkeley DB は高度な同時実行性 (20 をはるかに超える) をサポートしますが、これは主に共有メモリとミューテックス (場合によってはレプリケーションも) を利用することによって行われます。これは、BDB がネットワーク ドライブに格納されたファイルとして展開される場合にうまく機能しない機能です。 .
DBD の並行性機能を利用するには、それを中心にアプリケーションを構築する必要があります。
10 ~ 20 人のユーザーをサポートするように Access を設定できますか? はい。ただし、すべてのファイルベースのデータベースと同様に、ロックと同時実行制御にファイル システムを使用します。また、Access データ ファイルは、データベース サーバーよりもデータベースの破損の影響を受けやすくなっています。そして、これを設定することはできますが、David Fenton が上で述べたように、信頼できるシステムを完成させたい場合は、ベスト プラクティスに従わなければなりません。
個人的には、Access ソリューションに問題がないことを確認するためにジャンプする必要があることを考えると、MSDE/SQL Server Express または postgreSql のインスタンスを実装する方がはるかに問題が少ないと思います。
オプションが一緒に属していないという点で、元の質問は私には意味がありません。BerkeleyDB はデータベース エンジンのみですが、Access はアプリケーション開発ツールであり、既定のファイル ベース (サーバーではない) データベース エンジン (Jet) が付属しています。Access を Berkeley に組み込むことで、必要なのはデータベース エンジンだけで、アプリケーションはまったく必要ないことは明らかですが、エンド ユーザーがフロント エンドなしで Berkeley DB をどのように使用しているかはわかりません (私は使用しただけです)。コマンドラインから)。
Jet MDB を 20 人の同時ユーザーで実行できない人は、Jet をデータ ストアとして使用することについてアドバイスする資格がありません。ベストプラクティスに従っている限り、完全に実行可能です。Microsoft の Best Practices Web ページ、Tony Toews の Best Practices、およびTony の Corruption FAQ (アプリケーションを安定させるために避けたいこと) に加えて、私はお勧めします。
元の質問者がフロント エンド アプリケーションを作成していないことには強く疑問がありますが、どのようなフロント エンドが含まれているかを示していないため、それに対応するバック エンドを推奨することは困難です。アクセスには、方程式の両方の部分を提供するという利点があり、適切に使用すると、複数のユーザーに対して完全に信頼できます。