2011-12-31 14 views
1

私は現在、(提案を学習するための)単純なDjango Webアプリケーションを構築する計画段階にあります。基本的に、教師はログインし、学生の成績を入力し、生徒はログインして成績を見ることができます。各クラスにはグループ番号があります。ここでDjango Webアプリケーションのための適切なデータベースシステムの選択

は、ユーザーのテンプレートです:

Username: Johny098 
Password: Y98uj*?877!(
Name: John Doe 
Gender: Male 
Group: 32 
Secondary: 5 

私は一般的に、ジャンゴとウェブ者協会で始めています考慮すると、私は私に利用可能なデータベースシステムの数を混乱見つける:MySQLの、 CouchDB、MongoDB、SQLiteなどがあります。私は自分の目的に使用するデータベースシステムを決定するのに苦労しています。

調査の結果、Couchdb(とSQLite)がかなり使いやすくて使いやすいように見えましたが、それは私だけなので、助けが必要なのです。私は、SQLとNoSQLについて数多くの議論があることを知っていますが、これがデータベースの使用に影響を与えるかどうかはわかりません。理想的には、データベースシステムはdjangoとうまく統合され、数日で十分にピックアップできるはずです。

質問:ウェブアプリケーションにはどのようなデータベースシステムを使用する必要がありますか?

任意のリソースもお寄せいただきます。

おかげで、

-Raphael

+0

CouchとMongoのようなNoSQLは、SQLデータストアに固執しません。「グループ32のすべての男性教師をフェッチする」のような単純なクエリにも答えることはできません。 NoSQLのソリューション(一般的に)は、 "id Johny098のすべての詳細を取得する"と答えます。あなたは100万行でも古いデスクトップ上でMySQLを使用することができます。 – aitchnyu

答えて

2

Djangoのウェブサイトのページはlists the database backends supportedです。しかし、Djangoのデータベースアクセス層は、使用しているデータベースのバックエンドに関係なく、ほぼ同じように動作するように設計されています。私がリンクしているページにはいくつかの違いがありますが、基本的なWebアプリケーションだけを書くのであれば、通常の使い方では出てはいけません。だからあなたのWebアプリケーションを書く方法に及ぼす限り、のリストの中では、実際には関係しません

DjangoのデータベースバックエンドはすべてSQLベースであることに注意してください。 Djangoを使ってデータベースにアクセスすると、NoSQLの動きを促すと思われるセキュリティ問題が解消されます。いずれにしても、NoSQLはあなたが現在無視できるものです。

SQLiteを設定するほうが簡単です。設定が簡単であることと、データベースの構築方法を気にする必要があるときにデータベースを設定する方法について心配する必要はありませんウェブアプリ。 SQLiteと他のほとんどのDBMS(データベース管理システム)との違いは、SQLiteは各データベースを通常のファイルに格納し、SQLiteクライアントはそのファイルで直接動作することです。他のDBMS(MySQL、PostgreSQL、Oracleなど)は、データベースの中心的な場所、それらを管理するサーバー、およびサーバーに接続してすべてのデータベースアクセスを処理するクライアントを持っています。サーバーベースのDBMSは、データベースへの同時リクエストを多数処理できる機能を備えているため、多忙なWebアプリケーションには適していますが、これを学習プロジェクトとして使用しているだけなので、これらの機能は必要ありません。

+0

迅速な回答ありがとうございます。 SQLiteは良い選択だと思われますが、私はそれに関する良いリソースを見つけるのが難しいようです(私はしばしばMySQLのチュートリアルや非常に短いYouTubeのチュートリアルに遭遇します)。また、複数のデータベースでうまく機能しますか?例:ユーザーのためのデータベースと、成績(成績の名前|成績)のデータベースがありますか?ありがとう、トン! – Raphael

+0

もしそれをDjangoのバックエンドとして使っているのであれば、SQLite自体について学ぶことを全く気にする必要はありません。 Djangoのドキュメント([example](https://docs.djangoproject.com/ja/1.3/topics/db/models/))に記載されている、Djangoでデータベースを使用する方法を知っておく必要があります。 SQLiteに固有のことは、Django設定ファイルで、SQLiteが使用するデータベースバックエンドであることだけを指定することです。 –

+0

また、Djangoが複数のデータベースをどれだけうまくサポートしているかはよく分かりませんが、それは必要ありません。一般に、Webアプリケーションごとに1つのデータベース、またはサイトごとに1つのデータベースしか使用しません。データベースは_tables_のコレクションです。この例では、ユーザー用に1つの表があり、成績には別の表があります。しかし、Djangoはあなたのために必要なテーブルを作成します。あなたはそれについて心配する必要はありません。 –

0

私は... MySQLのために行くだろう、なぜ?あなたが名前を付けた人の中でも最も人気があり、それよりも優れているので、仕事を探すときにクレジットを増やすことができます(例えば、あなたはmonsterドットコムに行き、MySQLを知るために必要なジャブいくつのSQL-Lite対?)

また、MySQLはシンプルで簡単に習得できます。多くのGUIクライアント(いくつかはオープンソースです)があり、かなり良い文書があります。

5

私はSQLiteを推奨します。設定なし、バックグラウンドデーモンなし、すべてがPythonにバンドルされています.SQL(Django ORMとよく似ています)であり、非常に単純なDBMSです。実際、プロトタイプ作成にSQLiteを使用している人や、生産現場でMySQL/PostgreSQLに切り替える人がいます。

NoSQLに関しては、理由と目的を正確に把握していない限り、NoSQLは使用しないことをお勧めします。

ああ、最後の1つ:生のパスワードではなく、パスワードハッシュ(md5またはsha1)を保存します。あなたの場合は必須ではありませんが、現実のアプリでは必須です。

関連する問題