0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLとは?MySQLとの違い

0
Posted at

PostgreSQLとは

PostgreSQLは、オープンソースで開発されているリレーショナルデータベース管理システム(RDBMS)です。

標準的なSQLに加え、複雑な検索や集計、さまざまなデータ形式を扱うための機能を備えています。また、拡張機能を追加することで、用途に合わせてデータベースの機能を広げられることも特徴です。

MySQLとPostgreSQLの違い

比較項目 MySQL PostgreSQL
データ型 基本的な型に加え、JSON型や空間データ型などを搭載 JSONB、配列、UUID、範囲型、ネットワーク型などを搭載
SQL機能 CTEやウィンドウ関数などに対応 CTEやウィンドウ関数に加え、豊富な演算子や集計機能を搭載
拡張方法 ストレージエンジンやプラグインを利用 型、関数、演算子、拡張機能などを追加可能
JSON JSON型と関連する検索・更新関数を搭載 JSON型とJSONB型を搭載し、GINインデックスなどを利用可能
地理空間情報 空間データ型、空間関数、空間インデックスを搭載 PostGISを追加して地理空間データを扱える
運用上の違い ストレージエンジンやSQLモードによって挙動が異なる VACUUMや拡張機能の管理など、固有の運用項目がある

MySQLとPostgreSQLで異なるデータの扱い

扱うデータ・要件 MySQLでの実装例 PostgreSQLでの実装例
UUID BINARY(16)またはCHAR(36) UUID
日時や数値の範囲 開始値と終了値を別々の列に保存 DATERANGETSRANGETSTZRANGENUMRANGEなど
重複できない予約期間 開始・終了列を持ち、アプリやトランザクションで重複を確認 範囲型と排他制約で重複を防止
IPアドレス・ネットワーク VARBINARYと変換・判定処理を利用 INET型・CIDR
試用期間や保持期間 日数や秒数、単位などを保存 INTERVAL
制約を持つ業務データ 各テーブルの列にCHECK制約を記述 CREATE DOMAINで型と制約を共通化
JSONデータ JSON型と生成列・関数インデックスなどを利用 JSONB型とGINインデックスなどを利用
地理空間情報 標準搭載された空間データ型と空間関数を利用 PostGISのGEOMETRY型・GEOGRAPHY型を利用

MySQLではなくPostgreSQLを選ぶ基準

MySQLとPostgreSQLは、どちらも一般的なWebサービスや業務システムに利用できます。そのうえで、次のような要件がある場合はPostgreSQLが有力な選択肢です。

  • 複雑な検索や集計を行いたい
  • JSONB、配列、UUIDなどのデータ型を活用したい
  • PostGISを利用して地理空間検索を実装したい
  • pgvectorを利用してベクトル検索を行いたい
  • データの型や制約を厳密に管理したい
  • 独自の型、関数、演算子などを追加したい
  • 将来的にデータベースの機能を拡張する可能性がある

機能だけでなく、既存システムとの互換性や運用体制も含めて選ぶことが重要です。

まとめ

MySQLとPostgreSQLは、どちらもWebサービスや業務システムに利用できるRDBMSです。複雑な検索、専用のデータ型、地理空間検索などが必要な場合は、拡張性に優れたPostgreSQLが有力な選択肢になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?