質問

ネットワーク ドライブに保存でき、サーバー ソフトウェアなしで複数のユーザー (最大 20) が使用できるデータベースが必要です。

MS Access か Berkeley DB を検討しています。

ファイル データベースに関するご経験を共有していただけますか?
どちらを使用しましたか?何か問題はありましたか?

役に立ちましたか?

解決

私は提案します SQLite なぜなら、データベース全体が 1 つのファイルに保存され、複数のユーザーが同時にアクセスしても非常に安全に処理できるからです。クライアント アプリケーションに使用できるライブラリがいくつかあり、サーバー ソフトウェアは必要ありません。

強みの 1 つは、SQL サーバーを非常によく模倣しているため、データベース ファイルの使用から本格的な SQL サーバーに変換する必要がある場合でも、クライアントのクエリのほとんどを変更する必要がないことです。データを新しいサーバー データベースに移行するだけで済みます (たとえば、SQLite データベースを MySQL データベースに変換するプログラムがあっても驚かないでしょう)。

他のヒント

ファイルベースのデータベースが 6 人のユーザーを超えて拡張できるとは本当に思いません。私が最後に Access データベースを使用したとき (確かにかなり前のことですが)、8 ~ 9 人で動作させるために非常に苦労しました。

PostgreSQL または MySQL を備えた古いジャンク コンピューターに Ubuntu をインストールするのは非常に簡単です。Access フロントエンドを維持していたときでも、そうしなければなりませんでした。

ファイルベースのデータベースには注意してください。すべて同じ問題が発生する可能性があります。あなたの状況では、クライアント/サーバー ソリューションが本当に必要です。

SQLite FAQ より

経験則は、ネットワークファイルシステムを介して多くのコンピューターから同じデータベースに同時にアクセスされる状況でSQLiteの使用を避ける必要があることです。

http://www.sqlite.org/whentouse.html

アクセスは雌犬になる可能性があります。私は、「デザイン モード」に移行してフォームや列のデザインを変更できるように、20 ~ 50 人にアクセスを閉じるように指示しなければならない立場にありました。全然面白くない。(アクセスが古いので、設定が悪いだけかもしれません)

アイエンデ 最近、同様の決定をしようとして、いわゆる組み込みデータベースを多数試しました。願わくば彼の 観察 あなたを助けられる。

私はしばらくの間、オンラインを含むさまざまな状況で Access を使用してきました。Access が次に従って適切に設定されていれば、正常に動作することがわかりました。 ガイドライン. 。Access の利点の 1 つは、すべてが 1 つのパッケージに含まれていることです。フォーム、クエリ構築、レポート、データベース管理、および VBA。さらに、他のすべての Office アプリケーションとうまく連携します。Access 2007 ランタイムは、以下から無料で入手できます。 ここ, 、これにより配布コストが安くなります。Access は確かに大規模な操作には適していませんが、20 人のユーザーには十分適しているはずです。編集: マイクロソフト 同時ユーザー数は 255 になります。

Access は 10 ~ 20 人のユーザーをサポートするように設定できますか?はい。ただし、すべてのファイルベースのデータベースと同様に、ロックと同時実行制御のためにファイル システムが使用されます。また、Access データ ファイルは、データベース サーバーよりもデータベース破損の影響を受けやすくなります。そして、このように設定することはできますが、信頼性の高いシステムを完成させたい場合は、上記の David Fenton が述べているように、ベスト プラクティスに従わなければなりません。

個人的には、Access ソリューションに問題がほとんどないことを確認するために飛び越える必要があるフープを考慮すると、MSDE/SQL Server Express または postgreSql のインスタンスを実装する方がはるかに困難が少ないと思います。

Berkeley DB は高度な同時実行性 (20 をはるかに超える) をサポートしていますが、主に共有メモリとミューテックス (場合によってはレプリケーションも) を利用することでこれを実現しています。これらの機能は、BDB が ネットワークドライブに保存されているファイル.

DBD 同時実行機能を利用するには、それを中心にアプリケーションを構築する必要があります。

元の質問は、選択肢が一緒に属していないという点で、私には意味がありません。BerkeleyDB はデータベース エンジンのみですが、Access はデフォルトのファイルベース (つまり、非サーバー) データベース エンジン (Jet) が付属するアプリケーション開発ツールです。Access を Berkeley に導入したおかげで、必要なのは次のとおりであることは明らかです。 のみ データベース エンジンがあり、アプリケーションはまったくありませんが、エンド ユーザーがフロント エンドなしで Berkeley DB をどのように使用するのかはわかりません (コマンド ラインからしか使用したことがありません)。

同時ユーザー 20 人で Jet MDB を実行できない人は、Jet をデータ ストアとして使用することについてアドバイスする能力がありません。ベストプラクティスに従っている限り、これは完全に実行可能です。Microsoft のベスト プラクティス Web ページに加えて、次のことをお勧めします。 Tony Toews のベスト プラクティス, 、 そして トニーの汚職に関するよくある質問 (つまり、アプリケーションを安定させるために避けたいこと)。

元の質問者がフロントエンド アプリケーションを構築していないのではないかと強く疑っていますが、どのような種類のフロントエンドが関係しているのかを明らかにしていないため、それに対応するバックエンドを推奨するのは困難です。Access には方程式の両方の部分が得られるという利点があり、適切に使用すれば、複数のユーザーにとって完全に信頼できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top