Django で利用するデータベース

記事
IT・テクノロジー

Django で利用するデータベース

Django のフレームワークを利用して Web 開発をする場合は、SQL のデータベースを使うことになります。 SQL のデータベースは Firebase のデータベースとはちょっと違います。正確な言い方をすれば、Firebase のデータベースは広く活用されている、SQL などのリレーショナルデータベース(RDB)とは違うと言うことです。

これまで、Firebase を中心にお届けしてきたので、その違いについてまとめて見ました。

Django は SQL データベースが基本

Django で利用するデータベースは SQL データベースが基本です。標準では、SQLite を利用する設定になっています。SQLite を利用する場合は、特別な設定は必要ありません。そのまま、データベースの機能が利用可能です。

その他にもメジャーな SQL のデータベースを利用可能です。Django の公式ページのドキュメントを見ると、公式にサポートされているデータベースは:

* PostgreSQL
* MariaDB
* MySQL
* Oracle
* SQLite
です。この他に身もサードパーティがサポートしているデータベースに

* CockroachDB
* FIrebird
* Microsoft SQL Server
などがあります。利用するデータベースは、プロジェクトフォルダにある、settings.py で指定すれば利用可能です。

標準設定では以下のようになっていますが、これを書き換えます。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.dqlite3',
    }
}
Firebase のデータベースとの違い
世の中の Web 開発で広く利用されているデータベースは、WordPress などの影響もあって、SQL データベースが主流です。従って、Firebase のデータベースの方が特殊な存在です。

Firebase のデータベース(Cloud Firestore)はリレーショナル型ではなく、Javascript のオブジェクトである、JSON のデータをそのまま入れられると言う物です。Javascript でプログラムを各場合、JSON 形式のデータはよく利用されます。そのため、データをそのままやり取りできる Firebase のデータベースは使い慣れると結構便利です。

SQL のデータベースの場合、予め「テーブル」の形を決めておく必要があります。基本的にこのテーブルの形のデータを扱うと言うのが SQL データベースの基本です。テーブルに入れるデータは、木補填的に同じ要素のデータになります。つまり、データベースを使うには下準備でデータを入れる箱(テーブル)は予め用意しておく必要があります。

Firebase の場合は、予め「テーブル」のような形を決める必要がなく、JSON 形式のデータならば、コレクションというデータ(ドキュメント)の箱に違う要素を持つデータを入れることができます。

一番の大きな違いは、Firebase のデータベース(Cloud Firestore)の場合は、Web 開発では Javascript の関数を呼び出すことでアクセスできます。 一方で、SQL のデータベースの場合は、多くの場合、プログラム内で「SQL」と呼ばれる記述を書いてデータベースとのやり取りをするケースが多くなります。

Django の場合は、Firebase からの移行でも簡単
Django の場合は、「モデル(Model)」という概念が導入されています。 このモデル自体は、テーブルに相当するデータのオブジェクト(Python の Class)を作成して、実際の SQL のデータベースとの SQL のやり取りは、Django が裏方でやってくれる仕組みになっています。

このモデルで定義するクラスでテーブルの構造を決めて、クラスのメソッドでデータベースのアクセスをする仕組みで、このモデルを作ればあとは、データベースのやり取りの細かい部分は Django がうまくやってくれるようになっています。

この仕組みのおかげで、SQL に余り詳しくなくても、データベースを扱えるようになっています。 事前に必要なテーブルに相当するモデル(Python の Class)を作成する必要がありますが、それさえしておけば、あとは SQL を書かずに Python のプログラムでデータベースを扱えるので、Firebase と余り変わらない感覚で扱う事が可能です。

入れるデータの形は決まっていますが、Firebase と同じ感覚でデータベースのやり取りができるのは大きな魅力です。

どのデータベースを使うか?
Django 自体は先に紹介した通り、いろいろな SQL データベースの利用が可能です。 いろいろ使えると、どのデータベースを採用するか迷いますよね?

どれを選ぶか?

いろいろ意見もあると思いますが、この記事を読まれている方の多くは、Django の初心者だと思いますので、まずは Django の使い方に集中する方が良いという理由で、標準設定で利用できる「SQLite」をお勧めします!

基本的な機能はサポートされていますので、まずは、簡単な開発ならば十分に対応可能です。特に、Firebase からの移行をする場合は、機能的にも、ほとんどの場合は SQLite で十分かと思います。

効率的な学習のコツは、「やることを絞る事!」なので、まずは Django に集中というのが良いと思います。

まとめ
この記事では、これまで推奨してきた Firebase のデータベース(Cloud Firestore)と Django が採用する SQL の違いを中心にデータベースの話を紹介してみました。

データベースの基本コンセプトは大きく違いますが、Django は、SQL と呼ばれる SQL データベースにアクセスする言語を使わなくても Python のコードだけでデータベースを扱えるように工夫されています。従って、Firebase から移行を考えている場合でも、比較的少ない学習で移行が可能です。

Django はいろいろな SQL データベースをサポートしてますが、Django の学習に集中するために、最初は標準設定で自動的に利用可能な SQLite の活用をお勧めします!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す