はじめに
C#でシステム開発をする場合、どのデータベースを選べば良いのでしょうか。
現在は無料で利用できる高性能なデータベースが数多く存在し、小規模システムから大規模システムまでライセンス費用を掛けずに開発できる時代になりました。
本記事ではC#との相性を中心に、無料で利用でき商用システムでも採用されている代表的なデータベースを比較します。
対象とするデータベースは以下です。
- SQLite
- SQL Server Express
- PostgreSQL
- MySQL Community Edition
- MariaDB
- LiteDB
各DBの特徴
SQLite
特徴
サーバーを必要とせず、アプリケーションに組み込んで利用できます。
データベースは1つのファイルとして保存されるため、配布やバックアップが非常に簡単です。
ゼロ設定で利用でき、ACIDトランザクションにも対応しています。
メリット
- インストール不要
- 配布が簡単
- バックアップはファイルコピー
デメリット
- 同時書き込みが多い用途には向かない
- 多数のクライアントから同時にアクセスするサーバー用途には向かない
向いている用途
- 小規模アプリ
- デスクトップアプリ
- モバイルアプリ
- 個人ツール
SQL Server Express
特徴
Microsoftが提供する無料版SQL Serverです。
Visual StudioやEntity Frameworkとの相性は抜群で、C#開発では最も扱いやすいデータベースと言えます。
SQL Serverと同じエンジンを使えますが、Expressにはリソース面の制限があります。
メリット
- Visual Studioとの親和性が高い
- Entity Frameworkが使いやすい
- SQL Server Management Studioが利用できる
デメリット
- データベース容量制限
- サーバーのインストールが必要
- 大規模用途には制限がある
向いている用途
- 社内システム
- 業務システム
- 中小企業向けシステム
PostgreSQL
特徴
近年、人気が高まっているオープンソースRDBです。
SQL標準への対応が充実しており、大規模システムでも十分利用できます。MVCCによる高い同時更新性能や豊富な拡張機能が特徴です。
メリット
- 高性能
- SQL標準への対応が豊富
- JSON対応が強力
- GIS(PostGIS)が利用可能
デメリット
- 初心者には少し難しい
- 構築・運用に必要な知識が多い
向いている用途
- Webサービス
- API
- 大規模システム
- GIS
MySQL Community Edition
特徴
世界中で利用されている定番RDBです。
Webシステムでは非常に高いシェアがあります。
メリット
- 情報が豊富
- 軽快
- 多くのクラウドサービスが対応
デメリット
- PostgreSQLと比べて、SQL標準への対応が少ない
向いている用途
- Webアプリ
- ECサイト
- CMS
MariaDB Community Server
特徴
MySQLから派生したオープンソースデータベースです。
MySQLから派生したため、MySQLとの高い互換性を持っています。
メリット
- MySQL互換
- オープンソース
- 高速
デメリット
- MySQLとの細かな差異がある
向いている用途
- Linuxサーバー
- Webサービス
LiteDB
特徴
LiteDBは.NET向けの組み込み型NoSQLデータベースです。
SQLiteのように1ファイルで管理できますが、SQLではなくC#オブジェクトをそのまま保存できます。
メリット
- DLLだけで動作
- オブジェクト保存が簡単
- インストール不要
デメリット
- RDBのようなSQLベースの利用方法ではない
- 他言語との連携が難しい
向いている用途
- 設定ファイル
- キャッシュ
- ローカルデータ
DB比較表
| 項目 | SQLite | SQL Server Express | PostgreSQL | MySQL | MariaDB | LiteDB |
|---|---|---|---|---|---|---|
| 種類 | RDB | RDB | RDB | RDB | RDB | NoSQL |
| サーバー | 不要 | 必要 | 必要 | 必要 | 必要 | 不要 |
| インストール | 不要 | 必要 | 必要 | 必要 | 必要 | 不要 |
| 単一ファイル | 〇 | × | × | × | × | 〇 |
| EF Core | 〇 | 〇 | 〇 | 〇 | 〇 | × |
| 同時アクセス | △ | 〇 | 〇 | 〇 | 〇 | △ |
| C#/.NETとの親和性 | 〇 | ◎ | 〇 | 〇 | 〇 | 〇 |
| 学習難易度 | 低 | 中 | 中 | 中 | 中 | 低 |
用途別おすすめ
| 用途 | DB | 理由 |
|---|---|---|
| 勉強 | SQLite | 設定不要なので学習しやすい |
| デスクトップアプリ | SQLite | ファイル一つで完結 |
| 社内システム | SQL Server Express | C#と相性が良く、保守しやすい |
| Webシステム | PostgreSQL | 性能・機能・拡張性のバランスが優れている |
| Linuxサーバー | PostgreSQL MariaDB |
OSSとの相性が良く、多くのホスティング環境で利用できる |
| 大規模システム | PostgreSQL | 高い性能と拡張性を持つ |
SQLite vs SQL Server Express
C#で開発する場合、SQLiteか、SQL Serverかで悩むケースが多いです。
難しい問題ではありますが、以下を参考にして頂ければと思います。
SQLiteを選ぶ
- PC単体で動く
- データベースサーバーを用意できない
- 同時アクセスが少ない
- PCごとにデータベースを持たせる
- アプリとDBを一緒に配布したい
SQL Server Expressを選ぶ
- 複数PCから利用する
- 社内システム
- 同時アクセスが多い
- データをサーバーで一元管理したい
- 将来SQL Serverを使いたい
無料DBを利用するときの注意点
「無料」と「何の制約もなく利用できる」は同じ意味ではありません。
データベースには、それぞれライセンスが設定されています。
例えば、
- SQLite
- PostgreSQL
- SQL Server Express
- MySQL Community Edition
- MariaDB Community Server
- LiteDB
では、ライセンス体系がそれぞれ異なります。
特に商用システムで利用する場合は、
- 自社内で利用する
- 顧客へ納品する
- DBを含めてアプリケーションを再配布する
- SaaSとして提供する
など、利用形態によって確認すべきライセンス条件が変わる場合があります。
そのため、「無料だから大丈夫」と判断せず、実際の利用形態に合わせて各DBのライセンスを確認することが重要です。
おわりに
無料で利用できるデータベースでも、十分に実用的なシステムを構築できます。
それぞれに得意分野があるため、「一番良いデータベース」はなく「用途に合ったデータベース」を選ぶことが重要です。