Skip to main content

database-architect

Database technology selection and architecture - choose between SQL vs NoSQL, PostgreSQL vs MySQL vs MongoDB, scaling strategies, migration planning. Use for database DECISIONS. For PostgreSQL implementation use postgresql skill.

来源信息

仓库
digi4care/opencode-mastery
最近来源活动
2026年2月21日 09:55
检测到的 SKILL.md 语言
英语
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
3 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
database-architect
description
Database technology selection and architecture - choose between SQL vs NoSQL, PostgreSQL vs MySQL vs MongoDB, scaling strategies, migration planning. Use for database DECISIONS. For PostgreSQL implementation use postgresql skill.
license
MIT
compatibility
opencode
metadata
{"author":"OpenCode Community","version":"1.0.0"}
# Database Architect ## When to Use - Choosing the right database for a new project - Designing schema architecture - Planning database migrations - Scaling strategy decisions - Data modeling questions - Caching architecture design ## Core Philosophy > Design the data layer right from the start to avoid costly rework. Choose the right technology, model data correctly, and plan for scale from day one. ## Database Selection Guide ### Quick Decision Matrix | Scenario | Recommended | Why | | ----------------------- | ------------- | ----------------------------------- | | **General web app** | PostgreSQL | Mature, feature-rich, JSONB support | | **Read-heavy, simple** | MySQL | Fast reads, wide adoption | | **Embedded/local** | SQLite | Zero-config, serverless | | **Real-time analytics** | TimescaleDB | Time-series optimization | | **Document store** | MongoDB | Flexible schema, JSON-native | | **Key-value cache** | Redis | In-memory speed | | **Full-text search** | Elasticsearch | Advanced search features | | **Graph relationships** | Neo4j | Native graph queries | ### Decision Criteria ``` 1. Data structure → Relational vs Document vs Graph vs Key-Value 2. Scale expectations → Read-heavy vs Write-heavy vs Balanced 3. Consistency needs → Strong (ACID) vs Eventual (BASE) 4. Query patterns → Simple CRUD vs Complex joins vs Analytics 5. Team expertise → Familiar vs Learning curve acceptable 6. Operational budget → Managed vs Self-hosted ``` ### By Use Case | Use Case | Primary | Alternative | | ------------------- | ------------------ | ------------------------- | | SaaS multi-tenant | PostgreSQL | MySQL | | E-commerce | PostgreSQL | MySQL | | IoT sensor data | TimescaleDB | PostgreSQL + partitioning | | Social network | PostgreSQL + Redis | Neo4j | | Content management | PostgreSQL | MongoDB | | Real-time dashboard | PostgreSQL + Redis | ClickHouse | | Mobile app backend | PostgreSQL | SQLite (local) | | Microservices | Per-service choice | PostgreSQL for most | ## Schema Design Principles ### Normalization Levels | Level | Eliminates | Trade-off | | --------------- | ----------------------- | --------------------------- | | **1NF** | Repeating groups | Baseline | | **2NF** | Partial dependencies | Still some redundancy | | **3NF** | Transitive dependencies | Good default for OLTP | | **Denormalize** | N/A | Faster reads, slower writes | ### When to Denormalize ```sql -- ONLY denormalize when: -- 1. Measured performance problem with JOINs -- 2. Read-to-write ratio is very high (>100:1) -- 3. Data is relatively static -- Example: Pre-computed aggregate ALTER TABLE products ADD COLUMN order_count INT GENERATED ALWAYS AS ( (SELECT COUNT(*) FROM orders WHERE product_id = products.id) ) STORED; -- PostgreSQL only, otherwise use trigger/view ``` ### Common Patterns | Pattern | Use Case | | --------------------- | -------------------------------------- | | **Adjacency List** | Hierarchical data (parent_id) | | **Closure Table** | Deep hierarchies with ancestry queries | | **Materialized Path** | File systems, categories | | **Junction Table** | Many-to-many relationships | | **Soft Delete** | Audit requirements | | **Event Sourcing** | Audit trail, replay capability | ## Indexing Strategy ### Index Types | Type | Best For | | ---------- | ------------------------ | | **B-tree** | Equality, range, sorting | | **Hash** | Equality only (rare) | | **GIN** | JSONB, arrays, full-text | | **GiST** | Ranges, geometry | | **BRIN** | Large time-series | ### Index Decision Tree ``` Is it equality lookups only? → B-tree (default) Is it a JSONB column? → GIN Is it a range query? → B-tree or GiST Is it full-text search? → GIN on tsvector Is it >100M rows with time ordering? → BRIN Is it a composite query? → Composite B-tree (order matters!) ``` ### Common Mistakes ```sql -- ❌ Too many indexes (slows writes) -- ❌ Indexing low-cardinality columns (status with 2 values) -- ❌ Not indexing foreign keys (PostgreSQL!) -- ❌ Wrong column order in composite index -- ❌ Not using partial indexes for hot subsets ``` ## Scalability Patterns ### Vertical vs Horizontal | Approach | When | Pros | Cons | | ----------------- | ------------- | ------------- | ------------------------ | | **Vertical** | <10x growth | Simple | Hardware limits | | **Read Replicas** | Read-heavy | Proven | Replication lag | | **Partitioning** | Large tables | Query pruning | Complexity | | **Sharding** | Massive scale | Linear growth | Cross-shard queries hard | ### Partitioning Strategies | Type | Best For | Key Selection | | --------- | ----------------- | --------------------- | | **RANGE** | Time-series | Created_at, timestamp | | **LIST** | Discrete values | Region, category | | **HASH** | Even distribution | User_id, order_id | ## Caching Architecture ### Multi-Tier Strategy ``` ┌─────────────────┐ │ L1: App Cache │ ← In-process, fastest ├─────────────────┤ │ L2: Redis │ ← Distributed, shared ├─────────────────┤ │ L3: DB Buffer │ ← PostgreSQL shared_buffers └─────────────────┘ ``` ### Cache Invalidation | Strategy | Use Case | | ----------------- | -------------------------- | | **TTL** | Default for most data | | **Event-driven** | Critical consistency | | **Write-through** | Never stale, slower writes | | **Write-behind** | High write throughput | ## Migration Strategy ### Zero-Downtime Approach ``` 1. Create new schema alongside old 2. Dual-write to both schemas 3. Backfill historical data 4. Verify data integrity 5. Switch reads to new schema 6. Stop writes to old schema 7. Remove old schema ``` ### Migration Tools | Tool | Language | Best For | | ------------------ | ---------- | ------------------ | | **Flyway** | Java | Enterprise | | **Liquibase** | Java | Complex migrations | | **Prisma Migrate** | TypeScript | Type safety | | **Alembic** | Python | SQLAlchemy | | **Drizzle Kit** | TypeScript | Drizzle ORM | ## Security Checklist - [ ] Encrypted connections (TLS) - [ ] At-rest encryption - [ ] RBAC (Role-Based Access Control) - [ ] Row-Level Security (PostgreSQL) - [ ] SQL injection prevention (parameterized queries) - [ ] Audit logging - [ ] Regular backups with tested restores - [ ] Data retention policies (GDPR) ## Response Approach When asked for database architecture advice: 1. **Understand requirements** - Domain, scale, consistency needs 2. **Recommend technology** - With clear rationale and trade-offs 3. **Design schema** - Tables, relationships, constraints 4. **Plan indexing** - Based on query patterns 5. **Design caching** - Multi-tier strategy 6. **Plan scalability** - Growth projections 7. **Refer to skill** - Point to postgresql (or project-specific implementation docs) for implementation ## Example Interactions | Request | Response | | ------------------------- | ----------------------------------- | | "DB for e-commerce" | PostgreSQL + SKILL → `postgresql` | | "Mobile app with offline" | SQLite (local) + PostgreSQL (cloud) | | "IoT 1M events/sec" | TimescaleDB + Kafka | | "Social network feeds" | PostgreSQL + Redis cache | | "Audit trail required" | PostgreSQL with event sourcing | ## Related Skills | Skill | Use When | | -------------- | --------------------------------- | | **postgresql** | PostgreSQL implementation details | ## Resources - **references/database-selection.md** → Detailed comparison matrix - **CAP Theorem** → Consistency vs Availability trade-offs - **ACID vs BASE** → Transaction model decisions
在 GitHub 查看