データベース設計
Bazbiiシステムのデータベーススキーマ設計と設計原則について説明します。
概要
データベース
- PostgreSQL: リレーショナルデータベース
管理ツール
- golang-migrate: マイグレーション管理
スキーマ設計
主要テーブル
actors
id: UUID (Primary Key)kind: actor_kind (user, partner)created_at: TIMESTAMPTZ
posts
id: UUID (Primary Key)actor_id: UUID (Foreign Key → actors.id)kind: post_kind (normal)h3index_r9: BIGINT (H3インデックス)score: BIGINT (スコアリング)reactions: INTEGER (リアクション数)content: jsonb (投稿内容)created_at,updated_at,deleted_at: TIMESTAMPTZ
インデックス
idx_posts_score:(score DESC, id DESC)- スコア順取得用- H3インデックスによる地理空間検索
設計原則
1. 後方互換性
- マイグレーションは後方互換を保つ
- 段階的変更(expand → migrate → contract)
2. インデックス戦略
- よく使われるクエリにインデックス
- H3インデックスによる地理空間検索
3. データ整合性
- 外部キー制約
- 一意制約
- CHECK制約
マイグレーションファイル
infra/db/migrations/
├── 0001_init.up.sql
├── 0001_init.down.sql
├── 0002_heatmap.up.sql
└── 0002_heatmap.down.sql
マイグレーションの実行方法については、開発ガイドを参照してください。
関連ドキュメント
- ドメイン設計 - ドメインモデルとビジネスロジック
- 開発ガイド - ローカル開発環境とマイグレーション実行
- インフラストラクチャ - データベースサーバー構成
- 運用ガイド - バックアップとリカバリ