Accessをデータベースとして使用することの欠点はありますか?


8

Microsoft Accessの複数のテーブルにデータを保存するアプリケーションを継承しました。Access DBはストレージにのみ使用され、すべてのデータ処理はアプリ(VB.net)によって処理されます。

これは良い習慣ですか?私は同様のアプリをゼロから構築する必要があり、「通常の」プラクティスが何であるかわかりません。

私はさまざまな形式で質問をグーグルで試し、多数の結果(このフォーラムの多くを含む)をチェックしましたが、すべての質問は、単にデータストレージに使用するのではなく、Access内でプログラミングしている場所に関連しているようです。

私はもっ​​と具体的になると思いますが、SQL Server Expressまたは同様のものがより良いオプションになると思います。

-あなたが原因類似した質問を有することに、この記事を読んでいる場合は、下に@DanielBによって提供されるこのリンクをチェックアウト/programming/694921/ms-access-mdb-concurrencyを


2
あなたの研究を共有することは皆を助けます。何を試したか、なぜそれがニーズを満たさなかったかを教えてください。これは、時間をかけて自分自身を助けようとしたことを示しており、明白な答えを繰り返すことから私たちを救い、そして何よりも、それはあなたがより具体的で適切な答えを得るのに役立ちます。また、How to Ask
gnat

1
@gnat私は上記の追加の詳細を信頼して、それ以上の反対投票を防ぐことができます。質問に真に答える回答に誰かが私をリンクできるかどうか明確にするために、質問をする前にこれを見つけるために数時間費やしていたので喜んでいます。(私は最初にこれを最初に言ったはずですが、このフォーラムのすべての質問者が当然のことを尋ねる前に調査を必要とするわけではないことを忘れています、それはヘルプファイルであると考えているようです!)
OSKM

MS AccessとSQL Server Expressの比較:こちらをご覧ください。stackoverflow.com/ questions / 5704654 / …しかし、SQL Serverコンパクトエディションも考慮に入れてください。SSExpressよりもAccessによく似ています。
Doc Brown、

回答:


8

MSAccessデータベースは通常、いくつかの理由で使用されません。以前は不安定で、一度に複数の接続を受け入れることができませんでした。MSAccessデータベースが使用されている場合、ロックファイルが作成されます(ldb)。そのロックファイルが存在する場合、他のユーザーはデータベースにアクセスできません。使い捨てのアプリケーションがある場合、MSAccessのパフォーマンスは約5万行後に大幅に低下することがわかりました。これはおそらく今はもっと良いでしょうが、より大きな用途向けに調整されていなかったことは確かです。

より一般的なのは、postgres、mysql、MSSQLなどのより堅牢なデータベースシステムを使用することです。単一接続データベースの場合、私はDerby(Javaを使用)を使用しました。

VBに関する限り、データベースのクライアントソフトウェアとしてVBを使用するプロフェッショナルなソリューションはありません。まあ、おそらくいくつかのソリューションが販売されていますが、個人的には避けたいと思います。

通常、処理はC#、C ++、Java、Perl、Pythonなどの一般的な言語で行われます。ライブラリは、言語とは別のデータベースへの接続に使用されます。一部のソリューションはSQLを使用してデータを照会および受信し、他のソリューションは永続ライブラリを使用してデータからオブジェクトを作成します(これはより一般的になりつつあります)。

ベストプラクティスに関する限り、常に一貫していることが最善であると私は思っています。MSAccessとVisualBasicを理解している4人の店がある場合は、この方法で作業を続けることは非常に理にかなっています。過去の障害が原因で会社から撤退するという目標がある場合は、VBを使い続け、別のデータベースに切り替えることができます。MSAccessでテーブルのリンクを調べる-MSSQLテーブルをMSAccessデータベースにリンクすることにより、MSSQLデータベースでVBアプリケーションを使用しました。VBは、ネイティブMSAccessテーブルと別のサーバーにあるリンクテーブルの違いを認識していませんでした。VBソリューションはまだ不安定でしたが、大規模なデータセットを使用した方がはるかにうまく機能しました。

お役に立てれば!


回答に感謝します。私の唯一の問題は、「MSAccessデータベースが使用されている場合、ロックファイルが作成される(ldb)です。そのロックファイルが存在する場合、他のユーザーはデータベースにアクセスできません」という継承されたアプリケーション4人の同時ユーザー(共有ドライブのローカルマシンdbのアプリ)があり、ロックアウトの問題はありません。行に関する有用なコメントはありませんが、他の提案を調査します。
OSKM 2013

2
@OSKM書き込みが発生しているときにldbファイルが使用されていると思います(明確にするため、常に使用されますが、通常、書き込みが発生しているときにのみ「ユーザーをロックアウト」します)。MS Access(MDB)の同時実行性に関するSOに関するこの質問では、さらに詳細に説明します。一般に、「ネットワーク上のファイル共有」モデルは機能しますが、ユーザー数が増えるにつれて多くの問題が発生します。
Daniel B

5
-1、「一度に1人のユーザーのみをサポートする」、「> 50k行後に遅くなる」など、MS Accessに関する誤った事実を回答から本当に削除する必要があります。これらは明らかに間違っています。また、完全な管理オーバーヘッドを伴う、代替として完全なクライアントサーバーDBを提案することは、良い見方ではありません。Accessが何に適しているか、何が役に立っていないかがわかっている場合、アクセスは優れたツールです。
Doc Brown、

6
私はC#を好みますが、誰かがそれを快適に感じる場合はVBで大丈夫です。文法と言語の概念が非常に異なっていても、C#とまったく同じライブラリにアクセスでき、C#とほぼ同じプログラミング概念を提供します。Microsoftは、新しい言語機能が将来的に両方の言語で並行して導入されると述べた。
Olivier Jacot-Descombes

2
VBに関する解説は-1。VB.NETはC#と同じように機能しますが、構文はより面倒です。私は、MSBバックエンドでVB.NETのみを使用する開発会社で働いていました。
ボブソン

4

私は過去、この問題について大企業で経験をしたことがあります。

データが存在するAccessファイルをネットワーク共有フォルダーに保存する必要があり、すべてのユーザーがW / Rにアクセスする必要があったため、ユーザーベースの拡大に伴い、セキュリティとパフォーマンスの問題が発生しました。

これは理論的なものではなく、これは実際の経験です。Access データベースは、地理的に数百に及ぶことは言うまでもなく、数十人の同時ユーザーに十分に対応できません

PostgreSQLのような無料で優れたデータベースシステムが利用可能であるため、Accessを使用する理由は次のことを除いてほとんどありません。


2

個人的には、アクセスから離れることができる場合はそれを実行してください。単に「弾丸を噛む」ことができなかったか、またはできなかったために本当に苦しんでいるクライアントがいます。

Kieveliは、大量のデータを格納することに関してAccessデータベースは恐ろしいと述べたので、アプリケーションは常にエンドユーザーの利益を考慮して設計する必要があることに注意してください。毎週何時間もの時間を浪費している非常に遅いシステムを持っている人々でいっぱいのオフィスがあると想像してみてください。

個人的な経験から、アクセスデータベースをSQL Serverに移動することは、適切に計画していればそれほど苦痛ではありません。問題は、vb.netなどに移動するための社内の技術的スキルがあるかどうかです。


へのアクセス-> SQLは、2つのチュートリアル
TruthOf42

1

Accessデータベースは適切に拡張できませんが、扱いや配布が簡単です。さまざまなデータベースタイプをサポートするオブジェクトリレーショナルマッパー(O / R-mapper)をデータベースへのインターフェースとして使用している場合、アプリケーションは特定のデータベースタイプへの依存度がはるかに低くなります。これにより、Accessから始めて、後で別のデータベースに移動できます。

Accessを使用するとデータベースを非常に簡単にセットアップおよび開発できるため、これを1回実行してAccessとC#フロントエンドでプロジェクトを開始しました。私の顧客がOracleデータベースを持っているので、後でOracleデータベースに移動しました。アプリケーションで必要な変更はほんのわずかです。


0

Jet-SQLは恐ろしく文書化されています。それだけがAccessから離れる理由です。

/programming/11265817/where-can-i-find-a-complete-reference-for-microsoft-access-sql

一方、T-SQL(SQL Server)ははるかに柔軟性が高く、役立つドキュメント、ブログ、専門家を数多く見つけることができます。

もちろん、Accessはデスクトップデータベースですが、SQL Serverは本格的なクライアントサーバーデータベースです。

他にもいくつかのデスクトップデータベースがあります(私はAdvantage Database Serverを使用していますが、これもニッチな製品です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.