この質問は申し訳ありませんが、私は概念を理解していれば分かりませんが、SQLiteはServerlessです。これはローカルマシンのデータベースを意味し、1つのファイルに格納されています。 1つのクライアントはそれを読み取り、それは他のクライアントの読み取りモードのためだけに作られ、クライアントが書き込みを行うと、すべてのクライアントは書き込みモードを持つので、一度に1つのモードになります。 私はdjangoアプリケーション、たとえばブログを作ったと想像してください。それはどのようにsqliteを使って作られていますか?クライアントがブログに入ると、ページとブログのエントリを見るための読み込みモードが得られ、登録されたクライアントがコメントを追加しようとすると、ファイルは書き込みモードになるので、どのようにsqliteがこれを処理できますか? SQLiteは、テストと学習の目的で、BaseHTTPServer(djangoに同梱されているサーバ)と同じようにここにありますか?DjangoでSQLiteを本番環境で使用していますか?
答えて
さまざまなデータベースがさまざまな方法で並行処理を管理しますが、sqliteではグローバルデータベースレベルのロックが使用されます。一度に1つのスレッドまたはプロセスだけがsqliteデータベースを変更できます。他のすべての並行プロセスは、現在実行中のプロセスが終了するまで強制的に待機します。
ユーザー数が増えるにつれて、 sqliteの単純なロック戦略はますますロック競合の激しさを増し、MySQL(行レベルロックを行うことができる、少なくともInnoDBエンジンで)やPostgreSQL(Multiversion Concurrency Controlを使用する)などの別のデータベースにデータを移行する必要があります。 。かなりの数のユーザーを獲得することが予想される場合(1日のうちの1日あたり1リクエスト以上のレベルで)、sqliteから移行する必要があります。すぐにそうするほど、簡単になるでしょう。
データベース理論ではこの問題は、並行処理と呼ばれ、SQLiteのは、Windowsのバージョンでそれをサポートしている> Win98の他の場所のFAQによると:
http://www.sqlite.org/faq.html#q5
当方は一切の他の組み込みSQLデータベースエンジンを認識していますこれは、 としてSQLiteとして並行処理をサポートしています。 SQLiteは、複数のプロセスが データベースファイルを一度に開き、複数のプロセスが データベースを一度に読み取るようにします。いずれかのプロセスが書き込みを要求している場合は、その更新中にデータベースファイル全体をロックする必要があります( )。しかし、通常は には数ミリ秒しかかかりません。他のプロセスは、作者 を待ってから終了し、ビジネスについて続けます。他の埋込みSQL データベースエンジンでは、通常、1つのプロセスでデータベースを一度に に接続することしかできません。
基本的には、並行性について心配する必要はありません。塩の価値のあるデータベースであれば問題ありません。 SQLite3がこれをどのように管理しているかの詳細については、hereを参照してください。データベース設計者ではなく、開発者として、あなたが内的な働きに興味がない限り、それを気にする必要はありません。
これはほんの数秒の問題ですか?それは時分割のアイデアのようなものですか? – Abdelouahab
SQLiteは実際には生産用ではありません。 MySQLやPostgreSQLをWindows上で稼動させることは非常に簡単で、実際のデータベースを持っています。
本当の問題はSQLite3のはこれだけ1ページビューは、私も開発にSQLite3のを使用していないhttps://code.djangoproject.com/ticket/12118
このバグを参照して、サーバー上の時に発生する可能性がジャンゴに通されていないということです。
SQLiteはテスト目的のためだけにここにありますか? – Abdelouahab
Sqliteは、データベースの概念を教えるのに(設定が簡単であるため)、研究にも適しています(ソースコードは小さく単純です)。これらのことのそれぞれについて、SQLiteは本当に輝きます。トランザクションの負荷が大きい場合は、はるかに優れたオプションがあります。 – SingleNegationElimination
はい、テスト/開発。より複雑なサイトを構築し始めると、実際のデータベースが必要になります。おそらく多少の生のSQLが必要になるでしょう(私は3つのDjangoサイトを構築しましたが、3つすべてがいくつかのクエリに対して生のSQLを必要としていました) –
SQLiteはではなく、のようにBaseHTTPServerまたは基本的なものがあります。これは完全に機能した埋め込みデータベースです。かなり速いです。そのSQL言語は、ほとんどの鐘や笛がないかもしれませんが、十分柔軟です。私は、私が関わっているプロジェクト(あなたの典型的なWebアプリケーションではない、真実が伝えられている)のためにはできないことが必要な場合に遭遇していません。
実際のデザインについて議論することなく、SQLiteの生産性が良いか悪いかを主張する人は、それほど多くのことを教えてくれません。 SQLiteはかなり高速です。いくつかのケースでは、文字通りの大きさがよりも速く、例えば、ジャンゴナウトの間の代替手段として登場するPostgresよりも速い。他の人が指摘しているように、これは並行処理も多くサポートしています。あなたのアプリが「いくつかのケース」に該当するかどうかの問題です。
ここで考慮すべき重要な要素が1つあります。 SQLiteはインプロセスデータベースです。これは本当に重要です。あなたがgeventのようなものを使用している場合、あなたのアプリケーションが壊れている辺のケースに入るかもしれません。たとえば、途中でコンテキストスイッチを使用してトランザクションを実行しようとすると、おそらく恐ろしい方法でトランザクションが中断される可能性があります。言い換えれば、SQLiteはの部分のアプリだから、 '並行性'は本当にあなたのアプリに依存します。
スケーラビリティの面ではSQLiteではできないことは、他のデータベースエンジンと同じようにSQLiteサーバのクラスタをプロセス内に置くことができないことです。あなたのアプリは、スケーリングの点でこのような長さにする必要はないかもしれませんが、私の推測では、そこにあるアプリの大部分はとにかく(野生のもの)ではありません。
一方、処理中とはカスタム関数を追加することを意味し、集約はそれほど簡単ではありません。私はDjangoのORMがそれ以上の難しさを持っているかどうかはわかりませんが、それらの機能を利用してかなり良いデザインを思いつくことができます。
- 1. Rails環境は、開発環境の中でさえ、本番環境に固執しているようです。
- 2. 私は本番環境でboot2dockerを使用できますか? CoreOS Vs boot2docker
- 3. VirtualWebappLoader - 本番環境で使用するのは良い選択ですか?
- 4. は本番環境でdjango syncdbを実行していますが、初期展開は安全ですか?
- 5. MariaDBはRuby on Railsを使用して本番環境で使用できますか?
- 6. 本番環境で「Google Cloud Storage Fuse」を使用している人は誰ですか?
- 7. 私は、本番環境で初めて最初のEntity Frameworkのコードを使用しています同期
- 8. 本番環境で実行されているRスクリプトのベストプラクティスコーディング
- 9. ペーパークリップを使用して本番環境の画像にリンクする
- 10. Server Sentイベントが本番環境で動作しない
- 11. Rails 4.0.0コンソールが本番環境で起動していません
- 12. 本番環境でSQLiteからMySQLに切り替えるのはいつですか?
- 13. Simple_form&Twitter Bootstrap:フォームラベルが整列していないか、本番環境でHTMLが抜けていますか?
- 14. 本番環境でWebAPI2コンソールアプリケーションをホストする方法は?
- 15. Play Framework 1.2.4で本番環境のフォルダをアップロードする
- 16. 展開せずに本番環境でコードを変更する -
- 17. rake db:マイグレーションが本番環境で動作しないようです
- 18. Railsの開発環境と本番環境の重要な違いは何ですか?
- 19. 開発環境と本番環境向けに異なるMETA-INF/context.xmlファイルを使用する方法
- 20. Glassfish 3.1:開発環境や運用環境で実行していますか?
- 21. Railsで開発環境を運用環境で使用しているのはなぜですか?
- 22. ASP.NET MVC4 Appは、デベロッパーで動作している間、本番環境でBootstrap.LESSをコンパイルできません
- 23. RailsとMySQLのActiveRecordの::本番環境でConnectionNotEstablishedは
- 24. 本番環境でのロギングの最適化
- 25. Java G1:本番環境でのメモリリークの監視
- 26. マクロにlstlisting環境を使用していますか?
- 27. SPDワークフローを本番環境に導入するベストプラクティスは何ですか?
- 28. DjangoでWeb開発に仮想環境を使用するベストプラクティス?
- 29. Windows環境でdjangoのsolrサムネイルを使用する方法
- 30. ハドソンでSVNチェックアウトで環境変数を使用しますか?
djangoチュートリアルPostegreSQLが優れていると思われますか?どう思いますか? – Abdelouahab
あなたが意見を求めているのなら、私からは、はい、私はPostgreSQLが優れていると思います。しかし、これはそのような議論のための適切な場所ではありません。客観的な比較のために[wikipedia](http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems)を見てください。 – SingleNegationElimination
私はPostgreSQLとMySQLを使用します。主にトランザクションサポートのために、より大きなプロジェクトではPostgreSQLが好きですが、MySQLは小規模なアプリケーションでは問題ありません。 –