*始めに [#l43cae65] Pythonで開発していて、大量のデータをあつかうようになると、データベースを使いたくなることが良くあります。 Webシステムなどではもやはデータベースは必須ですが、個人でちょっとしたものを作る時でも、ファイルよりもデータベースの方が扱いが楽なことが多いです。 Pythonはかなりいろいろなデータベースが使え、ほとんどのメジャーなデータベースはAPIがあると思って良いでしょう。 なかでも、個人や小規模開発で使う場合は以下のSQLiteと、MySQL、MongoDBを使うことが多いと思います。 そんなときに、どれを選択するかの基準となるように、簡単にそれぞれの特長を紹介します。 *各データベースの特長 [#r64d081f] **SQLite [#va9260c7] 機能は少なめで軽量かつ高速で動作し、小さなデータを扱ったり、同時に複数のプロセスからアクセスされないような場合には便利なデータベースです。 他のデータベースのようにサーバープログラムを必要とせず、簡単にインストールして利用できるのも利点です。 そのかわり型などは少なく、複雑な処理をデータベース上で行う事もできません。 また同時に複数のプロセスで利用もできないので、Webサーバーでのプログラムにも向きません。 スタンドアロンのアプリなどの開発などに向いているデータベースです。 SQLiteをPythonを使う例は[[Python/SQLiteから使う基礎]]を参照のこと。 **MySQL [#b83158bb] Webサーバーなどでも良く利用されている実績のあるデータベースで、かなり複雑なこともできます。サーバープログラムを介してファイルにアクセスするため、複数プロセスで同時に利用できます。 インストールや設定にはある程度技術が必要で、慣れていないと気軽に利用とは行かないかも知れません。 Webサーバーでの利用、特にデータベース上で集計や表の結合などを行うときにおすすめのデータベースです。 MySQLをPythonで使う例は[[Python/MySQLから使う基礎]]を参照のこと。 **MongoDB [#i641ea2d] 最近よく使われるようになった「NoSQL」と呼ばれる物の中で、最もシェアの高いデータベースです。 表の結合、集計と行った処理はあまり得意ではありませんが、代わりに大規模データを扱いやすくなっています。例えばクラウド環境のようにデータが分散しているときでも使えるようになっています。またデータの定義なども後から柔軟に変えられます。このような部分はMySQLなどのRDBMSでは難しい所です。 データーの規模が大きく、集計などを行わない場合におすすめです。 *まとめ [#q32518fc] とりあえず練習用に使うならSQLiteがおすすめです。 またちょっとした設定などを読み込むのに、ファイルでは管理が大変というときなどにもSQLiteがおすすめです。 ただし、複数プロセスで同時にアクセスするなら残り二つのどちらかを用途にあわせて使うようにすると良いでしょう。 MySQLの方が資料は多めでとっつきやすいくMongoDBは記法が独特でちょっとやりづらいところもありますが、データの構造が頻繁に変わるような場合にはMongoDBの方が良いかも知れません。
(This host) = https://njf.jp