Flask または Django などの多くのWebフレームワークは、デフォルトデータベースとして SQLite を使用します。 SQLite はPythonに含まれているため、説得力があり、管理オーバーヘッドはかなり低いです。
ただし、ほとんどの高トラフィックのパブリックプロダクションサイトは、より重いデータベース(mySQL、Oracle、またはpostgresql)を使用して終了します。
質問:
想定:
中程度のトラフィックの内部企業ツールとして機能するWebサイトの SQLite 同時実行に対する説得力のある事例はありますか?もしそうなら、どのような条件で SQLite に同時実行の問題が発生しますか?
私は、一般的な恐怖/根拠のない指さしの代わりに、既知の特定の根本的な原因を探しています。
あなたの質問への公式回答 SQLiteの適切な使用法 を読むことをお勧めします。具体的には、「別のRDBMSがより適切に機能する状況」では、SQLiteが同時書き込みをサポートしているではないと警告しています。
SQLiteは無制限の数の同時リーダーをサポートしますが、同時に使用できるライターは1つだけです。多くの場合、これは問題ではありません。各アプリケーションは、データベースの作業を迅速に実行して続行します。ロックは数十ミリ秒以上続きません。ただし、より多くの同時実行性を必要とするアプリケーションがいくつかあり、それらのアプリケーションは別のソリューションを探す必要がある場合があります。
適切性の観点から、私はSQLiteをSQLクエリをサポートする非常に洗練されたファイル形式と見なす傾向があります。データベースをWebアプリケーションから分離する場合、SQLiteはこのケースに最適化されていないため、回避する傾向があります。要するに、SQLiteは一部のシナリオで使用するには十分にスケーラブルではないため、いつか人気になることを期待しているWebサイトを実行している人は、SQLiteを使用して後で強制的に切り替えるのではなく、スケーラブルなものから始めた方がよいでしょう。
そうは言っても、SQLiteはおそらくほとんどの内部Webサイトに適しています。通常、内部Webサイトは、同じレベルの同時実行性とスケーラビリティを必要としません。
ITディレクターの帽子をかぶると、ここにいくつかの立ち入り禁止が表示されます。
開発者の観点からは、なぜSqlLiteがデフォルトであるのかを理解することが重要だと思います。プラットフォームを新しい開発者に「販売」する場合、最小限の手間で動作中のWebアプリを起動できることが重要です。また、立ち上がってデータベースサーバーを適切に構成することは、回避すべき大きな障害となります。