メインコンテンツまでスキップ

データベース設計

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

マイグレーションの実行方法については、開発ガイドを参照してください。

関連ドキュメント