質問をする前に、まずSQLiteについての私の考えを説明しましょう。
私は、小さくて高速で、さらに重要なことに、本当に必要な機能のみを備えたツールが好きです。だから私はSQLiteが好きで、MS-SQLが少し好きではありません。
たとえば、MS-SQLにはさらに多くの機能、拡張性などがありますが、運が悪い場合はインストールするのが面倒な場合もあります。もちろん、難しいインストールが特定のデータベースを選択しない理由であると言っているわけではありません。
誤解しないでください。MS-SQLは高品質の製品です。私はMS-SQLの経験が豊富です。私はプロとして製品を非常によく理解しています。本当に必要ない(= 10-15未満のユーザーが少ない)状況では、あまり好まない。
データベースのどのくらいの機能を実際に使用していますか?私の経験では、多くの場合、通常のSQL(SELECT、INSERT、およびUPDATE)だけです。
SQLiteが好きです。速くて魅力的です。「インストール」は非常に簡単です。SQLiteは、主張できる以上のことができると思います。なぜ単一プロセス/シングルユーザーアプリケーションにのみ使用するのですか?結局のところ、データベースに常にアクセスしているアプリケーションは多くありません。
たとえば、15人のユーザーがいるERPアプリケーションを考えてみましょう。なぜSQLiteを使用できないのですか?私のプロフェッショナルな経験では、この種のアプリケーションのユーザーはほとんどの場合、アプリケーションを使用している合計時間の約5〜10%でデータベースにアクセスします。他の90〜95%では、画面上の情報を見ているだけで、グリッド/フォームにデータを入力しており、データベース時間の1秒以内の入力を保存しています。Fe:入力時間の1.5分と保存時間の1秒。
「保存時間」中にSQLiteデータベースファイルがロックされている場合、データベースにアクセスする必要のある他のユーザーは待機するだけですが、待機時間が非常に短い(気付かない)ので気が付きません。コードでは、例外を回避するために、データベースの可能性のある「ビジー」時間を処理する必要がありますが、それは難しくありません。
私と同じように考えなければならない人が、SQLiteのクライアント/サーバーソリューションであるSQLiteningを構築しさえしています。これにより、自分がだまされていないのではないかと確信しました。
もちろん、SQLiteが適合しないデータベース集約型のアプリケーションがあります。しかし、今私が考えているように、多くのマルチユーザーアプリケーションは、15ユーザー程度を超えなければ、SQLiteで問題なく動作するはずです。
多くのお客様はハードウェアにあまりお金をかけません。そのため、すべてのもの(Exchange、SQL(s)、クライアントなど)を備えた唯一のサーバーに遭遇することがよくあります。高いシステム要件を持たない製品を提供できれば、顧客は満足するでしょう。SQLiteは(少なくとも多くは)重みを追加しませんが、MS-SQLは追加します。SQLiteは無料、安価、または簡単にインストールできるため、SQLiteは選択しません。実用的/技術的な理由で選択します。
参考:私の職業では、平均して5-6人しか製品を使用しない顧客に製品(カスタムおよび標準、ほとんどはERP関連)を販売しています。いくつかの例外がありますが、10〜15ユーザーを超えません。
質問:私が説明した例のようないくつかのマルチユーザーアプリケーションにSQLiteを使用できると考えるのは正しいですか?知っておくべき技術的な欠点はありますか?正しい選択をするのに役立つ経験(ネガティブまたはポジティブ)は何ですか?
更新:これを他のデータベースの否定的な判断と見なさないでください。それらはほとんどすべてが素晴らしい製品です。ここで私の考えを共有し、これについてのあなたの意見に興味を持っています。