¥
立即购买

数据库需求分析专家

42 浏览
2 试用
0 购买
Dec 11, 2025更新

本提示词专为系统分析师设计,用于精准分析和定义数据库需求。通过结构化的工作流程,能够深入理解业务场景,识别关键数据实体与关系,明确功能与非功能需求,最终输出专业的技术文档。该提示词支持多种业务场景适配,包括事务处理、数据分析、实时应用等,确保数据库设计既满足当前业务需求,又具备可扩展性和高性能。

1. 业务场景概述

某B2B服务企业建设CRM,需覆盖从线索采集、去重与评分、线索转商机、阶段推进,到报价、合同、回款与发票的全流程。支持多渠道导入(表单/电话/展会/Webhook),具备销售/主管分级权限与区域分配;审批流与操作留痕;客户互动日志与任务提醒;目标、漏斗与转化报表。系统为多租户,要求字段可配置、历史版本追踪与主数据管理(MDM),中型规模、混合操作、高性能。

本设计以关系型数据库为主(行级安全、强一致事务、复杂查询),结合JSON扩展支持“字段可配置”,并通过异步任务与数据快照支持分析/报表场景。


2. 核心数据实体列表(包含属性和数据类型)

说明:

  • 数据类型为通用SQL类型,建议统一主键为UUID(uuid)。
  • 所有业务表默认包含:id(uuid, PK), tenant_id(uuid, FK), created_at(timestamptz), created_by(uuid), updated_at(timestamptz), updated_by(uuid), is_deleted(boolean, 默认false), version(int, 乐观锁), custom_fields(jsonb 可空)。
  • 具备PII的字段需标注敏感级别并加密/脱敏(见非功能需求)。

2.1 多租户与权限

  • tenant
    • name(varchar(200)), status(varchar(32)), config(jsonb)
  • user_account
    • email(varchar(255), 唯一+tenant), mobile(varchar(32)), display_name(varchar(200)), status(varchar(32))
    • role_id(uuid), territory_id(uuid) 可空
  • role
    • code(varchar(64)), name(varchar(128)), level(int), is_manager(boolean)
  • permission
    • code(varchar(128)), name(varchar(200)), scope(varchar(64))
  • role_permission_map
    • role_id(uuid), permission_id(uuid) 唯一组合
  • territory(区域/大区/省市层级)
    • name(varchar(200)), parent_id(uuid) 可空, path(ltree/varchar), region_code(varchar(64))

2.2 主数据(MDM)

  • mdm_source_system
    • name(varchar(128)), code(varchar(64)), description(text)
  • mdm_party(主数据“客户主体”黄金记录,用于跨来源合并)
    • party_type(varchar(32) 枚举:organization/person), master_score(int), survivorship(jsonb)
  • mdm_party_link(来源记录到黄金记录的映射)
    • party_id(uuid), source_system_id(uuid), source_record_id(varchar(128)), link_confidence(int)
  • product
    • sku(varchar(64)), name(varchar(200)), category(varchar(128)), uom(varchar(32)), currency(varchar(16)), base_price(numeric(18,2)), status(varchar(32))
  • pricebook
    • name(varchar(200)), currency(varchar(16)), is_active(boolean)
  • pricebook_entry
    • pricebook_id(uuid), product_id(uuid), list_price(numeric(18,2)), discountable(boolean)

2.3 客户与联系人

  • account(客户/公司,映射到mdm_party)
    • mdm_party_id(uuid) 可空, name(varchar(255)), industry(varchar(128)), employee_count(int), annual_revenue(numeric(18,2))
    • ownership(varchar(32)), rating(varchar(32)), source(varchar(64)), territory_id(uuid)
  • contact(联系人)
    • account_id(uuid), first_name(varchar(100)), last_name(varchar(100)), email(varchar(255)), mobile(varchar(32)), title(varchar(128))
    • is_primary(boolean)
  • address(标准化地址可复用)
    • owner_type(varchar(32) 枚举:account/contact/…)
    • owner_id(uuid), line1(varchar(255)), line2(varchar(255)), city(varchar(128)), state(varchar(128)), country(varchar(128)), postal_code(varchar(32))

2.4 线索与去重评分

  • lead
    • channel(varchar(32) 枚举:form/phone/expo/webhook/other)
    • source_detail(varchar(255)), status(varchar(32) 枚举:new/working/qualified/unqualified/converted)
    • company(varchar(255)), contact_name(varchar(200)), email(varchar(255)), mobile(varchar(32)), intent_level(varchar(32))
    • owner_id(uuid), territory_id(uuid)
  • lead_score
    • lead_id(uuid), score_model_id(uuid), score(int), factors(jsonb), scored_at(timestamptz)
  • score_model
    • name(varchar(128)), config(jsonb), is_active(boolean)
  • dedup_rule
    • name(varchar(128)), entity(varchar(64)), match_config(jsonb), threshold(int), is_active(boolean)
  • dedup_candidate
    • entity(varchar(64)), record_id(uuid), candidate_id(uuid), score(int), generated_at(timestamptz), status(varchar(32) open/merged/ignored)

2.5 商机与阶段推进

  • opportunity
    • account_id(uuid), name(varchar(255)), amount(numeric(18,2)), currency(varchar(16)), close_date(date)
    • stage(varchar(64)), probability(int), owner_id(uuid), lead_id(uuid) 可空, source(varchar(64))
  • opportunity_stage_history
    • opportunity_id(uuid), from_stage(varchar(64)), to_stage(varchar(64)), changed_at(timestamptz), changed_by(uuid)

2.6 报价与合同

  • quote
    • opportunity_id(uuid), quote_number(varchar(64)), status(varchar(32) draft/approved/sent/expired), valid_until(date), currency(varchar(16)), total_amount(numeric(18,2))
  • quote_item
    • quote_id(uuid), product_id(uuid), quantity(numeric(18,4)), unit_price(numeric(18,2)), discount_rate(numeric(5,2)), line_amount(numeric(18,2))
  • contract
    • account_id(uuid), quote_id(uuid) 可空, contract_number(varchar(64)), status(varchar(32)), start_date(date), end_date(date), currency(varchar(16)), total_value(numeric(18,2))
  • contract_item
    • contract_id(uuid), product_id(uuid), quantity(numeric(18,4)), unit_price(numeric(18,2)), line_amount(numeric(18,2)), billing_cycle(varchar(32))

2.7 回款与发票

  • invoice
    • account_id(uuid), contract_id(uuid) 可空, invoice_number(varchar(64)), status(varchar(32) open/paid/void), issue_date(date), due_date(date), currency(varchar(16)), total_amount(numeric(18,2)), tax_amount(numeric(18,2))
  • invoice_item
    • invoice_id(uuid), product_id(uuid), quantity(numeric(18,4)), unit_price(numeric(18,2)), tax_rate(numeric(5,2)), line_amount(numeric(18,2))
  • payment
    • account_id(uuid), payment_number(varchar(64)), received_date(date), method(varchar(32)), amount(numeric(18,2)), currency(varchar(16)), reference(varchar(128))
  • payment_allocation
    • payment_id(uuid), invoice_id(uuid), allocated_amount(numeric(18,2))

2.8 渠道与导入/Webhook

  • channel
    • code(varchar(64)), name(varchar(128)), settings(jsonb)
  • import_batch
    • channel_id(uuid), entity(varchar(64)), total_count(int), success_count(int), failure_count(int), status(varchar(32)), started_at(timestamptz), finished_at(timestamptz), dedup_applied(boolean)
  • import_record
    • batch_id(uuid), raw_payload(jsonb), mapped_payload(jsonb), status(varchar(32) success/fail/skipped), error_message(text), created_record_id(uuid)
  • webhook_event
    • source_system_id(uuid), event_type(varchar(128)), payload(jsonb), received_at(timestamptz), processed_at(timestamptz), status(varchar(32)), dedup_key(varchar(128))

2.9 审批、留痕与配置

  • approval_process
    • name(varchar(128)), entity(varchar(64)), trigger_condition(jsonb), steps_config(jsonb), is_active(boolean)
  • approval_request
    • process_id(uuid), entity(varchar(64)), record_id(uuid), status(varchar(32) pending/approved/rejected), requested_by(uuid), requested_at(timestamptz)
  • approval_step
    • request_id(uuid), step_order(int), approver_id(uuid) 可空, role_id(uuid) 可空, status(varchar(32)), action_at(timestamptz), comment(text)
  • audit_log(操作留痕)
    • entity(varchar(64)), record_id(uuid), operation(varchar(16) insert/update/delete), changed_by(uuid), changed_at(timestamptz), diff(jsonb), ip(varchar(64))
  • custom_field_definition
    • entity(varchar(64)), field_key(varchar(64)), label(varchar(128)), data_type(varchar(32)), required(boolean), unique_scope(varchar(32) none/tenant/entity), default_value(text/jsonb), validation_rule(jsonb), picklist_values(jsonb), active(boolean)
  • validation_rule
    • entity(varchar(64)), name(varchar(128)), expression(text), error_message(varchar(255)), active(boolean)

2.10 互动、任务与提醒

  • interaction(客户互动日志:通话/邮件/会议/拜访)
    • owner_id(uuid), account_id(uuid) 可空, contact_id(uuid) 可空, opportunity_id(uuid) 可空
    • type(varchar(32)), subject(varchar(255)), content(text), occurred_at(timestamptz), outcome(varchar(64)), attachments(jsonb)
  • task
    • owner_id(uuid), related_type(varchar(32)), related_id(uuid), subject(varchar(255)), due_at(timestamptz), priority(varchar(32)), status(varchar(32) open/done/cancelled), remind_at(timestamptz)
  • notification(提醒实例)
    • user_id(uuid), task_id(uuid) 可空, type(varchar(32)), channel(varchar(32) app/email/sms), scheduled_at(timestamptz), sent_at(timestamptz), status(varchar(32))

2.11 目标、漏斗与转化报表

  • sales_goal
    • owner_type(varchar(32) user/territory), owner_id(uuid), period(varchar(16) YYYYMM/quarter), metric(varchar(32) amount/count), target_value(numeric(18,2))
  • performance_snapshot(快照表,预聚合)
    • period_date(date), owner_type(varchar(32)), owner_id(uuid), metric(varchar(64)), value(numeric(18,2)), dim(jsonb)
  • funnel_stage_def
    • entity(varchar(64) lead/opportunity), stage(varchar(64)), order_no(int), active(boolean)
  • funnel_snapshot
    • period_date(date), entity(varchar(64)), stage(varchar(64)), count(int), amount(numeric(18,2)), conversion_rate(numeric(5,2))

2.12 历史版本追踪

  • entity_version(通用版本库,SCD Type 2 思路)
    • entity(varchar(64)), record_id(uuid), version_no(int), valid_from(timestamptz), valid_to(timestamptz) 可空, snapshot(jsonb), changed_by(uuid), change_reason(varchar(255))

3. 实体关系图描述(文本)

  • tenant 1—N user_account/role/territory/…(所有业务表以tenant_id隔离)
  • role N—N permission(role_permission_map)
  • territory 自关联树,account/lead/opportunity/user_account 多对一 territory
  • mdm_party 1—N account(或1—1在同租户),mdm_party 1—N mdm_party_link,mdm_party_link N—1 mdm_source_system
  • account 1—N contact/address/opportunity/interaction/invoice/contract
  • lead 可0—1映射至 account/contact(转化时新建或合并);lead 1—N lead_score;lead N—N(候选)通过 dedup_candidate
  • opportunity N—1 account;opportunity 1—N opportunity_stage_history/quote/interaction
  • quote 1—N quote_item;quote N—1 opportunity
  • contract N—1 account,contract 可N—1 quote;contract 1—N contract_item/invoice
  • invoice 1—N invoice_item;payment N—N invoice(通过 payment_allocation)
  • import_batch 1—N import_record;webhook_event N—1 mdm_source_system
  • approval_process 1—N approval_request;approval_request 1—N approval_step
  • audit_log/entity_version 针对任意entity与record_id建立弱关系(无FK以避免循环/性能开销)
  • custom_field_definition 1—N(逻辑上影响对应entity记录的custom_fields JSON校验)
  • task/notification N—1 user_account;task 可关联任意业务对象(related_type, related_id)
  • performance_snapshot/funnel_snapshot 与 owner/entity 为维度关联(弱关联)

4. 主要功能需求说明

4.1 多渠道线索采集

  • 支持表单/电话/展会录入与Webhook事件接收;入库前执行字段映射、校验(validation_rule)与渠道配置(channel.settings)应用。
  • 批量导入通过 import_batch/import_record 记录处理结果与错误,支持重试与幂等(webhook_event.dedup_key 唯一约束)。

4.2 去重与评分

  • 按 dedup_rule 对 lead/account/contact 进行候选匹配(邮箱、手机号、公司名规范化、地域等权重),生成 dedup_candidate,支持人工合并或忽略。
  • 评分按 score_model(可配置)计算 lead_score,支持多模型并存与生效标记。

4.3 线索转商机

  • 支持:新建 account/contact + opportunity;或与现有 account/contact 合并。
  • 转化后更新 lead.status=converted,并记录关系(opportunity.lead_id)。

4.4 商机阶段推进与审批

  • 阶段变更写入 opportunity_stage_history;按 approval_process 定义对特定阶段/金额触发审批(approval_request/step)。
  • 审批通过后方可进入下一阶段或出单(quote/contract)。

4.5 报价、合同、发票与回款

  • 从机会生成报价(quote/quote_item);审批通过后生成合同(contract/contract_item)。
  • 按合同/交付生成发票(invoice/invoice_item);记录回款(payment/payment_allocation)并对账更新发票状态。

4.6 客户互动与任务

  • 记录互动日志(interaction),支持附件、外部联系方式归档。
  • 任务/提醒(task/notification)支持相关对象绑定、优先级、到期提醒。

4.7 目标与报表

  • 配置销售目标(sales_goal),定时计算 performance_snapshot、funnel_snapshot,提供目标达成、漏斗阶段、转化率报表。
  • 支持区域、人员、时间、渠道等多维度分析(performance_snapshot.dim)。

4.8 权限与区域分配

  • 基于角色与权限(RBAC)控制模块/操作;行级基于owner/territory限制访问。
  • 区域变更触发客户/线索/商机重分配策略与通知。

4.9 审批与操作留痕

  • 全量记录数据变更(audit_log),关键对象支持版本化快照(entity_version)。
  • 审批流支持按角色/人员、金额阈值、阶段等条件配置。

4.10 字段可配置与校验

  • 通过 custom_field_definition + 实体 custom_fields(JSONB) 实现字段扩展、唯一性约束、字典值、必填校验。
  • validation_rule 支持表达式校验与错误提示。

4.11 MDM与主数据

  • 多来源客户合并至 mdm_party,通过 mdm_party_link 管理来源与存活策略(survivorship)。
  • 支持黄金记录冲突解决、回溯与来源追踪。

4.12 数据导出与集成

  • 提供分页/筛选导出、变更增量接口(基于updated_at或变更流)。
  • Webhook/回调订阅业务事件(已审批报价、阶段变更、应收逾期等)。

5. 非功能需求指标

5.1 性能与可扩展

  • 混合负载:以OLTP为主,报表通过快照表与异步ETL降低主库压力。
  • 关键查询(列表、详情、阶段推进、审批)需低延迟;对大表(lead/opportunity/interaction/audit)按 tenant_id, created_at 建立复合索引;必要时按 tenant_id/时间分区。
  • 批量导入、评分、去重采用异步任务与队列,支持水平扩展。

5.2 一致性与并发

  • 强一致事务保障业务原子性(转化、审批、收款分配)。
  • 乐观锁(version)防止并发覆盖;幂等键用于Webhook/导入重放保护。

5.3 安全与合规

  • 多租户隔离:所有查询强制 tenant_id 过滤;建议启用行级安全策略。
  • 访问控制:RBAC + 数据行级策略(按owner/territory);字段级敏感信息(email/mobile)加密或脱敏展示。
  • 审计:关键操作写入 audit_log,不可篡改;版本快照可回滚或比对。
  • 隐私合规:PII字段标注,提供删除/匿名化能力;导出与备份加密。

5.4 高可用与备份

  • 主从/多副本,在线备份与定期恢复演练;时间点恢复(PITR)。
  • 灾备拓扑与RPO/RTO按SLA定义;报警与指标覆盖延迟、错误率、队列积压。

5.5 可观测性

  • 统一日志跟踪(trace_id 贯穿API/任务/DB);慢查询日志与索引健康检查。
  • 任务与审批可见性(处理时长、待处理总量)。

5.6 可配置性与演进

  • 字段可配置通过 JSONB + 定义表实现,提供Schema校验与迁移工具。
  • 实体版本化采用 entity_version 通用方案,关键对象亦可采用影子历史表以细化索引。

6. 技术建议和注意事项

6.1 数据库与模式

  • 首选关系型数据库(支持行级安全、分区、JSON/JSONB、全文/模糊索引),如具备JSONB能力以容纳custom_fields。
  • 命名规范:snake_case;所有表包含标准审计列;PK为UUID,外键显式,关键FK cascade限制为“受控删除/更新”。
  • 分区策略:高写入表(lead/opportunity/interaction/audit_log/import_record/webhook_event)按时间+tenant哈希分区;历史表冷数据分区归档。

6.2 索引与查询优化

  • 常用筛选字段建立索引:tenant_id + owner_id/territory_id/status/stage/created_at;全文/相似检索字段(company/name/email)增加GIN/pg_trgm索引(或外部搜索引擎)。
  • 金额/日期范围查询使用覆盖索引;快照与统计表按 period_date, owner 复合索引。

6.3 可扩展字段实现

  • custom_field_definition 定义与生命周期管理;custom_fields JSONB 存储实际值。
  • 为常用自定义字段建立虚拟列/表达式索引以加速筛选;提供运行时校验与导入校验。

6.4 去重与评分

  • 去重采用规范化(大小写、空白、标点、同义词)、权重评分与阈值;候选生成异步化,人工确认合并遵循事务。
  • 推荐引入相似度索引(trigram/phonetic);大规模去重可接入检索引擎以降本增效。

6.5 审批与留痕

  • 审批流程以声明式配置存储(approval_process.steps_config);运行时展开为 approval_request/step,保证幂等与状态机完整性。
  • 审计diff记录字段级变化(仅存差异),避免大字段重复;版本快照按需(关键记录/状态变更)落库。

6.6 MDM实践

  • 明确来源系统字典(mdm_source_system);建立生存者策略(survivorship)与冲突规则;合并保留溯源(mdm_party_link)。
  • 合并/拆分需具备回滚轨迹(entity_version + audit_log)。

6.7 报表与分析

  • 采用快照与预聚合(performance_snapshot, funnel_snapshot)承载日/周/月统计;避免对OLTP大表的复杂聚合。
  • 若分析复杂度提升,建议构建数据仓库/湖(ETL流/CDC)并在仓库侧做多维分析。

6.8 任务与异步

  • 引入消息队列/任务编排:导入处理、去重候选生成、评分计算、快照刷新、通知发送。
  • 任务表记录重试、死信与幂等键;对外Webhook回调采用重试与签名校验。

6.9 数据质量与校验

  • validation_rule 统一表达式校验;导入前后都进行;失败写入 import_record.error_message。
  • 强约束:唯一索引(如account同租户+名称+区域)、邮箱/手机号唯一范围按业务定义。

6.10 安全与合规注意

  • 列级加密:email/mobile/tax_id等敏感字段;密钥托管与轮换策略。
  • 行级访问策略兼容共享客户场景(共享表/团队权限时引入关联表记录访问授权)。

6.11 迁移与版本控制

  • 基于迁移工具管理DDL;为大表DDL采用在线变更;新增索引先并行构建再切换。
  • 自定义字段变更与校验规则变更需提供灰度与回滚路径。

6.12 数据生命周期

  • 软删除(is_deleted)+ 归档库/对象存储;审计与版本历史的保留期限依政策配置。
  • 大对象(附件)外置对象存储,仅存元数据与访问指针。

以上设计覆盖核心实体、约束与访问模式,满足多租户、高性能、混合负载CRM的数据库需求,并为可配置字段、历史追踪与主数据管理提供可扩展基础。

自营电商交易数据库需求规格说明

1. 业务场景概述

  • 业务范围:自营电商平台,支持全渠道下单(App/小程序/PC/线下导流),多仓发货、拆单,包裹与物流轨迹跟踪;支持营销活动、优惠券核销与审计对账;支持订单状态机、退款及售后。
  • 关键能力:
    • 高并发下单与秒杀,防超卖与幂等
    • 库存预占、支付回调、拆单发货
    • 商家(运营/仓配)与用户两端查询
    • 交易库与分析库隔离、冷热数据分层
  • 性能目标(来自输入约束):峰值每秒万级下单;写密集型;大型系统;追求极致性能
  • 架构定位:以关系型数据库为主的OLTP交易库(强一致核心路径),分析库/数仓独立(CDC/ETL),缓存与消息系统配合削峰与解耦

2. 核心数据实体列表(包含属性和数据类型)

说明:

  • 货币金额建议采用最小货币单位存储(amount_cents bigint,currency char(3))
  • 时间统一UTC,timestamp with time zone
  • 全局ID建议使用雪花ID等有序64位整型(bigint)
  1. user(用户)
  • id bigint PK
  • phone varchar(32) 索引
  • email varchar(128) 可空
  • name varchar(64)
  • status smallint
  • created_at, updated_at timestamp
  1. address_book(用户地址簿)
  • id bigint PK
  • user_id bigint FK→user.id 索引
  • receiver_name varchar(64)
  • phone varchar(32)
  • region_code varchar(32)
  • detail varchar(256)
  • postal_code varchar(16)
  • is_default boolean
  • created_at, updated_at timestamp
  1. product_spu(商品SPU)
  • id bigint PK
  • title varchar(256)
  • category_id bigint
  • status smallint
  • created_at, updated_at timestamp
  1. product_sku(商品SKU)
  • id bigint PK
  • spu_id bigint FK→product_spu.id 索引
  • sku_code varchar(64) 唯一
  • attrs_json jsonb
  • weight_gram int
  • volume_cc int
  • status smallint
  • created_at, updated_at timestamp
  1. warehouse(仓库)
  • id bigint PK
  • name varchar(64)
  • region_code varchar(32)
  • type smallint(自营/前置/门店)
  • status smallint
  • created_at, updated_at timestamp
  1. sku_inventory(仓库SKU库存聚合,防超卖核心)
  • id bigint PK
  • warehouse_id bigint FK→warehouse.id 组合索引
  • sku_id bigint FK→product_sku.id 组合唯一(warehouse_id, sku_id)
  • total_qty int
  • reserved_qty int
  • version bigint(乐观锁)
  • updated_at timestamp 说明:可用库存=total_qty - reserved_qty;通过条件更新实现原子预占
  1. stock_reservation(库存预占明细)
  • id bigint PK
  • order_id bigint 索引
  • warehouse_id bigint
  • sku_id bigint
  • qty int
  • state smallint(RESERVED/CONFIRMED/RELEASED/EXPIRED)
  • expire_at timestamp 索引
  • created_at, updated_at timestamp
  1. stock_ledger(库存台账,审计)
  • id bigint PK
  • warehouse_id bigint
  • sku_id bigint
  • change_qty int(正负)
  • reason varchar(32)(RESERVE/RELEASE/SHIP/ADJUST/INBOUND/OUTBOUND)
  • ref_type varchar(32)(ORDER/REFUND/ASN 等)
  • ref_id bigint
  • operator varchar(64)
  • created_at timestamp 索引(warehouse_id, sku_id, created_at)
  1. channel(渠道)
  • id int PK
  • code varchar(32) 唯一
  • name varchar(64)
  • created_at timestamp
  1. order_header(父订单/主交易单)
  • id bigint PK(order_id)
  • user_id bigint 索引
  • channel_id int
  • status smallint(状态机当前状态)
  • total_amount_cents bigint(未优惠)
  • discount_amount_cents bigint
  • payable_amount_cents bigint
  • paid_amount_cents bigint
  • currency char(3)
  • submit_time timestamp 索引(冷热分层与分区键)
  • pay_deadline timestamp
  • consignee_snapshot jsonb(地址快照)
  • promotion_snapshot jsonb(活动规则快照)
  • idempotency_key varchar(64) 索引 唯一约束
  • parent_ref varchar(64) 可空(外部交易号)
  • created_at, updated_at timestamp 说明:强烈建议按order_id哈希分片+时间分区
  1. order_item(订单行)
  • id bigint PK
  • order_id bigint FK→order_header.id 索引
  • sku_id bigint
  • sku_name varchar(256)
  • quantity int
  • sale_price_cents bigint(单价快照)
  • discount_amount_cents bigint
  • payable_amount_cents bigint
  • warehouse_plan_id bigint 可空(拆单规划关联)
  • created_at, updated_at timestamp
  1. order_status_history(订单状态流转)
  • id bigint PK
  • order_id bigint 索引
  • from_status smallint
  • to_status smallint
  • reason_code varchar(32)
  • operator varchar(64)(系统/用户/运营)
  • created_at timestamp 索引(order_id, created_at)
  1. payment(支付单)
  • id bigint PK(pay_id)
  • order_id bigint 索引 唯一(order_id, pay_attempt_no)
  • pay_attempt_no int
  • pay_channel varchar(32)(WX/ALI/UNIONPAY 等)
  • request_no varchar(64) 唯一(对账锚点)
  • payable_amount_cents bigint
  • paid_amount_cents bigint
  • status smallint(PENDING/SUCCESS/FAIL/CLOSED)
  • created_at, updated_at timestamp
  1. payment_callback_log(支付回调日志,幂等锚点)
  • id bigint PK
  • pay_id bigint 索引
  • provider_event_id varchar(128) 唯一
  • payload jsonb
  • signature varchar(256)
  • processed boolean
  • created_at timestamp
  1. fulfillment_plan(拆单/配仓规划)
  • id bigint PK
  • order_id bigint 索引 唯一(order_id, plan_no)
  • plan_no int
  • warehouse_id bigint
  • state smallint(PLANNED/ALLOCATED/FAILED)
  • created_at, updated_at timestamp
  1. shipment(包裹/发运单)
  • id bigint PK(shipment_id)
  • order_id bigint 索引
  • warehouse_id bigint
  • carrier_code varchar(32)
  • tracking_no varchar(64) 索引
  • state smallint(CREATED/PICKED/SHIPPED/DELIVERED/SIGNED/EXCEPTION)
  • created_at, updated_at timestamp
  1. shipment_item(包裹明细)
  • id bigint PK
  • shipment_id bigint FK→shipment.id 索引
  • order_item_id bigint
  • sku_id bigint
  • quantity int
  • created_at timestamp
  1. logistics_event(物流轨迹)
  • id bigint PK
  • shipment_id bigint 索引
  • carrier_code varchar(32)
  • tracking_no varchar(64) 索引
  • event_code varchar(32)
  • event_desc varchar(256)
  • event_time timestamp
  • created_at timestamp
  1. promotion_activity(营销活动)
  • id bigint PK
  • name varchar(128)
  • type varchar(32)(满减/折扣/秒杀 等)
  • rule_json jsonb(门槛/折扣算法)
  • start_time, end_time timestamp 索引
  • status smallint
  • created_at, updated_at timestamp
  1. coupon(优惠券模板)
  • id bigint PK
  • code varchar(32) 唯一
  • name varchar(128)
  • type varchar(32)
  • rule_json jsonb
  • budget_qty int
  • issued_qty int
  • used_qty int
  • start_time, end_time timestamp
  • status smallint
  • created_at, updated_at timestamp
  1. user_coupon(用户券)
  • id bigint PK
  • coupon_id bigint 索引
  • user_id bigint 索引
  • state smallint(ISSUED/LOCKED/REDEEMED/RELEASED/EXPIRED)
  • lock_order_id bigint 可空
  • issued_at, redeemed_at, expire_at timestamp 索引(expire_at)
  • created_at, updated_at timestamp
  • 唯一(user_id, coupon_id, 某些模板可多张需调整)
  1. coupon_redemption(券核销审计)
  • id bigint PK
  • user_coupon_id bigint 索引
  • order_id bigint 索引
  • redeem_amount_cents bigint
  • result smallint(SUCCESS/FAIL)
  • reason varchar(64)
  • created_at timestamp
  1. refund_order(退款单/售后退款)
  • id bigint PK(refund_id)
  • order_id bigint 索引
  • user_id bigint 索引
  • type smallint(ONLY_REFUND/RETURN_AND_REFUND)
  • apply_amount_cents bigint
  • approved_amount_cents bigint
  • status smallint(APPLIED/APPROVED/REJECTED/PROCESSING/SUCCESS/FAIL/CLOSED)
  • reason_code varchar(32)
  • created_at, updated_at timestamp
  1. refund_item(退款行)
  • id bigint PK
  • refund_id bigint FK→refund_order.id 索引
  • order_item_id bigint
  • sku_id bigint
  • quantity int
  • amount_cents bigint
  • created_at timestamp
  1. after_sale_case(售后单据)
  • id bigint PK
  • order_id bigint 索引
  • user_id bigint
  • type smallint(换货/补发/维修 等)
  • status smallint
  • detail_json jsonb
  • created_at, updated_at timestamp
  1. idempotency_record(幂等表)
  • id bigint PK
  • idempotency_key varchar(64) 唯一(如:接口+用户+业务幂等键)
  • op_type varchar(32)(CREATE_ORDER/PAY_CALLBACK 等)
  • request_hash varchar(64)
  • state smallint(PENDING/SUCCESS/FAILED)
  • expire_at timestamp 索引
  • response_snapshot jsonb 可选
  • created_at, updated_at timestamp
  1. outbox_event(事务外发事件)
  • id bigint PK
  • agg_type varchar(32)(ORDER/PAYMENT/INVENTORY 等)
  • agg_id bigint
  • event_type varchar(64)
  • payload jsonb
  • state smallint(NEW/PUBLISHED/FAILED)
  • created_at, updated_at timestamp
  • 索引(agg_type, agg_id, created_at)
  1. settlement_file(对账文件元数据)
  • id bigint PK
  • pay_channel varchar(32)
  • file_date date 索引
  • file_uri varchar(256)
  • status smallint
  • created_at, updated_at timestamp
  1. reconciliation_result(交易对账结果)
  • id bigint PK
  • request_no varchar(64) 索引(对应payment.request_no)
  • pay_channel varchar(32)
  • platform_amount_cents bigint
  • gateway_amount_cents bigint
  • result smallint(MATCH/MISMATCH/MISSING/EXTRA)
  • reason varchar(64)
  • created_at timestamp
  1. seckill_sku_stock(秒杀专用库存,可与常规库存隔离)
  • id bigint PK
  • activity_id bigint FK→promotion_activity.id
  • sku_id bigint
  • total_qty int
  • reserved_qty int
  • version bigint
  • start_time, end_time timestamp 索引
  • updated_at timestamp

注:若采用微服务与分库分表,跨库外键在应用侧保证一致性,数据库内仅保留同库内FK或使用索引+约束约定。

3. 实体关系图描述(文本)

  • user 1—N address_book
  • product_spu 1—N product_sku
  • warehouse 1—N sku_inventory;product_sku 1—N sku_inventory(多对多经sku_inventory)
  • order_header 1—N order_item
  • order_header 1—N order_status_history
  • order_header 1—N fulfillment_plan;fulfillment_plan 1—N shipment
  • shipment 1—N shipment_item;order_item 1—N shipment_item(经中间表映射)
  • shipment 1—N logistics_event
  • order_header 1—N payment;payment 1—N payment_callback_log
  • order_header 1—N refund_order;refund_order 1—N refund_item
  • promotion_activity 1—N coupon;coupon 1—N user_coupon;user_coupon 1—1..N coupon_redemption(一次订单一条)
  • order_header 1—N stock_reservation(按SKU/仓级);sku_inventory 与 stock_reservation 多对一
  • 全局 outbox_event 以(agg_type, agg_id)关联业务聚合根(如订单、支付、库存)
  • seckill_sku_stock 与 promotion_activity、product_sku 多对一

4. 主要功能需求说明

  1. 下单与优惠计算
  • 输入:用户、收货地址、SKU列表、渠道、可用优惠信息
  • 流程:
    • 价格与营销计算(根据promotion_activity、user_coupon;写入promotion_snapshot)
    • 生成order_header与order_item(状态:CREATED/WAIT_PAY),保存收货与价格快照
    • 幂等:使用idempotency_record(idempotency_key)确保重复提交只生成一个订单
    • 生成outbox_event(OrderCreated)供异步流程(风控、消息)使用
  1. 库存预占与防超卖
  • 常规商品(两阶段):
    • 预占:对sku_inventory执行 UPDATE … SET reserved_qty = reserved_qty + ? WHERE id=? AND total_qty - reserved_qty >= ? AND version=?;成功则插入stock_reservation,失败返回库存不足
    • 支付成功确认:将预占转为实扣(可在发货或支付成功时在台账记账),预占记录state→CONFIRMED
    • 超时/取消释放:扫描expire_at或订单取消事件,reserved回滚,记录stock_ledger
  • 秒杀商品:
    • seckill_sku_stock独立;同样使用乐观锁聚合计数;可配合缓存/队列削峰,但以DB最终校验落账为准
  1. 支付与回调
  • 生成payment(多次尝试使用pay_attempt_no)
  • 回调幂等:以payment_callback_log.provider_event_id或payment.request_no唯一约束做幂等;成功则更新payment与order状态,写order_status_history
  • 对账:导入settlement_file,生成reconciliation_result;异常项供运营处理
  1. 拆单、包裹与发运
  • 配仓:根据地址、库存和规则生成fulfillment_plan
  • 拆包裹:shipment与shipment_item绑定warehouse与物流商
  • 物流轨迹:异步写入logistics_event;用户端按shipment聚合展示
  1. 订单状态机
  • 典型状态:CREATED→WAIT_PAY→PAID→ALLOCATED→SHIPPED→DELIVERED→COMPLETED;中间含CANCELLED/REFUNDING/REFUNDED/EXCEPTION
  • 状态流转记录至order_status_history;由服务层校验合法迁移
  1. 取消与超时
  • 未支付超时取消:变更订单为CANCELLED,释放预占库存,释放锁定的user_coupon
  • 用户/运营取消:同上
  1. 优惠券与活动审计
  • 发券与领券:coupon→user_coupon(状态ISSUED)
  • 锁券:下单时将user_coupon.state→LOCKED并关联lock_order_id
  • 核销:支付成功后写coupon_redemption与更新user_coupon.state→REDEEMED;失败/取消释放至ISSUED
  • 活动审计:promotion_activity与coupon_redemption联查;stock_ledger与coupon_redemption共同形成成本与让利台账
  1. 退款与售后
  • 申请refund_order与refund_item
  • 审批后触发支付渠道退款,更新状态机;成功回写订单、库存(仅退货入库场景),记账stock_ledger(INBOUND)
  • 售后(换货/补发)以after_sale_case管理
  1. 查询支持
  • 用户端:订单列表(按user_id+submit_time降序)、订单详情、包裹与轨迹、售后与退款进度、可用/已用券
  • 商家/运营端:按状态、时间、仓库维度的订单/包裹拣货单、异常工单、对账差异、活动转化
  • 高并发读:读多采用缓存与只读副本;强一致查询(支付后状态)走主库或带版本校验
  1. 数据同步到分析库
  • 基于outbox_event或CDC(binlog)抽取到OLAP/数仓;交易库不做复杂报表计算

5. 非功能需求指标

  • 并发与吞吐:支持峰值每秒万级下单(来自输入)
  • 一致性:
    • 下单与库存预占、幂等保证事务级或最终一致(两阶段预占)
    • 跨域一致性采用事务外发(Outbox)+ 消息重试
  • 可用性与容错:主从高可用、可用区级冗余;回调与幂等支持重复投递
  • 可扩展性:
    • 水平分库分表:按order_id哈希分片;订单表按月份或周进行时间分区用于冷热分层
    • 库存、支付、营销可按域独立库;跨库仅事件耦合
  • 安全与合规:
    • PII字段(phone、address)加密/脱敏;访问审计
    • 敏感操作(库存调整、退款)需要审计日志与最小权限
  • 可靠性:
    • 备份与恢复(定期全量+增量),演练;Schema 变更走灰度/在线DDL
  • 观测性:
    • 关键表写入、慢SQL、锁等待监控;幂等冲突率、库存冲突率、回调重复率指标
  • 数据生命周期:
    • 冷热分层:order_header/… 按时间分区,T+N天后迁移到冷存或归档库;分析数据走OLAP

注:具体时延、可用性数值建议通过容量评估与性能压测确定后落标,避免未经验证的目标。

6. 技术建议和注意事项

  • 主键与ID
    • 统一使用有序雪花ID(bigint),减少二级索引页分裂;所有外键列建立匹配类型与索引
  • 分区与分片
    • 订单、状态历史、支付、物流轨迹按时间分区;order_id 取模分片;跨分片避免强FK,使用逻辑约束
  • 索引策略(写密集优化)
    • 订单主查:索引(user_id, submit_time desc)、(status, submit_time)、(channel_id, submit_time)
    • 库存:sku_inventory 唯一(warehouse_id, sku_id) + 覆盖索引;高争用SKU建议减少二级索引
    • 回调与对账:payment.request_no 唯一;payment_callback_log.provider_event_id 唯一
    • 券:user_coupon(user_id, state, expire_at)
  • 事务与隔离
    • 库存预占与订单创建分离事务,使用幂等与补偿;库存UPDATE使用乐观锁version或条件更新
    • 数据库隔离级别建议 READ COMMITTED/REPEATABLE READ(结合热点冲突评估),避免长事务
  • 幂等与重试
    • 所有外部回调与下单接口必须携带幂等键;幂等记录设置TTL,过期清理
    • Outbox采用本地事务写入,独立发布器重试+去重
  • 秒杀优化
    • 秒杀库存独立表seckill_sku_stock;强约束在DB层最终扣减;配合排队/令牌桶削峰
    • 热点SKU行分拆(如逻辑分桶)或短期牺牲精确实时可用量展示,仅保证成交不超卖
  • 冷热分层与归档
    • 订单与状态历史按月分区;超过配置阈值迁移至归档库;查询侧通过联合查询或聚合索引表支持历史检索
  • 审计与合规
    • stock_ledger、coupon_redemption、reconciliation_result构成三账对照(库存、让利、资金)
    • 关键字段不可更新或仅追加式记录,保留审计轨迹
  • 缓存与只读副本
    • 用户订单列表等高频读走只读副本/缓存;强一致读(支付后)走主库或加版本校验
  • 分析库隔离
    • 通过CDC/Outbox推送到Kafka/ETL再入OLAP;分析查询不回打交易库
  • 迁移与兼容
    • 版本化Schema,向前兼容;采用扩展字段jsonb承接灰度阶段的规则差异,成熟后固化为结构化列
  • 运维与容量
    • 热点表遵循窄表设计、避免宽JSON频繁更新;定期重建统计信息;热点行冲突监控
    • 批量清理与归档采用小批量游标/作业窗口,避免高峰期长锁

本说明书覆盖了自营电商多仓发货与全渠道交易在高并发写入场景下的核心数据模型、关系与操作约束,并对防超卖、幂等、审计对账、冷热分层与交易/分析隔离提供了可落地的数据库侧设计与最佳实践。后续可结合实际QPS与数据量进行容量规划与索引、分片参数调优。

1. 业务场景概述

  • 场景:智慧制造产线实时采集设备时序数据(温度、振动、能耗),要求毫秒级写入、秒级聚合;基于滑动窗口的规则引擎检测异常并触发告警与停机工单;支持设备/产线/工厂三级多租户;历史数据分层归档压缩与近线查询看板;需维表(设备、工位)关联及地理维度统计;端到端告警延迟目标 < 2 秒。
  • 数据特征:
    • 高速、持续、追加型时序数据(append-only),含少量乱序与重复。
    • 实时查询以“最近时间窗 + 多维过滤/聚合”为主,历史查询以分区扫描与预聚合为主。
    • 多租户隔离(工厂/产线/设备层级),广泛的维度关联(设备、工位、地理、组织)。
  • 核心能力目标:
    • 热数据毫秒级写入,1s 粒度预聚合与窗口聚合支撑告警引擎。
    • 端到端告警延迟预算 < 2s(包含写入、聚合、规则评估与落库)。
    • 数据分层(热/温/冷)与压缩归档,近线查询可视化。
    • 强多租户隔离与行级鉴权,维表按事件时间关联。

2. 核心数据实体列表(包含属性和数据类型)

说明:以下数据类型为通用抽象,具体落地需根据选型映射(如 bigint/datetime、double/decimal、string/varchar、json/binary 等)。

  • tenant(租户)

    • tenant_id: string/uuid
    • name: string
    • status: enum(active/inactive)
    • created_at: datetime
  • plant(工厂,SCD 支持)

    • plant_id: string/uuid
    • tenant_id: fk -> tenant
    • code, name: string
    • location_lat, location_lon: double
    • geohash: string
    • region_code: string
    • timezone: string
    • effective_from, effective_to: datetime(SCD2 有效期)
    • is_current: boolean
  • production_line(产线,SCD 支持)

    • line_id: string/uuid
    • plant_id: fk -> plant
    • code, name: string
    • effective_from, effective_to: datetime
    • is_current: boolean
  • workstation(工位/工段,SCD 支持)

    • workstation_id: string/uuid
    • line_id: fk -> production_line
    • code, name: string
    • effective_from, effective_to: datetime
    • is_current: boolean
  • device(设备,SCD 支持)

    • device_id: string/uuid
    • workstation_id: fk -> workstation(或直接 line_id 视建模)
    • device_type: string
    • serial_no: string
    • sampling_rate_hz: int
    • firmware_version: string
    • tags: json(厂商自定义属性)
    • status: enum(active/inactive)
    • effective_from, effective_to: datetime
    • is_current: boolean
  • metric_dim(指标维表)

    • metric_code: string(temperature/vibration/energy 等)
    • name: string
    • unit: string
    • default_agg: enum(avg/sum/max/min)
    • precision: int
    • description: string
  • timeseries_raw(原始时序事实表,热数据)

    • ts_ms: bigint(事件时间,毫秒)
    • device_id: fk -> device
    • metric_code: fk -> metric_dim
    • value: double
    • quality_flag: enum(ok/bad/derived)
    • seq_no: bigint(设备侧序列,去重/乱序)
    • ingest_time_ms: bigint(到达时间)
    • source_id: string(网关/边缘节点)
    • tenant_id: fk -> tenant(冗余便于 RLS)
    • partition_date: date(按天分区)
    • ingestion_batch_id: string
    • 主键/唯一性建议:分区 + (tenant_id, device_id, metric_code, ts_ms, seq_no)
  • timeseries_agg_1s(预聚合事实表,1秒粒度)

    • ts_sec: bigint(epoch 秒)
    • device_id: fk -> device
    • metric_code: fk -> metric_dim
    • cnt: int
    • min, max, sum, avg: double
    • stddev: double(可选)
    • tenant_id: fk -> tenant
    • partition_date: date
    • 主键:分区 + (tenant_id, device_id, metric_code, ts_sec)
  • timeseries_agg_1m(可选,1分钟粒度提升历史查询性能)

    • 字段同上,ts_min: datetime/epoch_min
  • rule_definition(规则定义)

    • rule_id: string/uuid
    • name: string
    • metric_code: fk -> metric_dim
    • agg_func: enum(avg/sum/max/min/stddev)
    • window_size_sec: int
    • slide_sec: int
    • comparator: enum(>,>=,<,<=,between,abs_delta,rate_of_change)
    • threshold: json(支持单值/区间/多阈值)
    • severity: enum(info/warn/critical)
    • lateness_allowance_ms: int(允许迟到窗口)
    • enabled: boolean
    • description: string
    • version: int
    • created_by, created_at, updated_at
  • rule_target(规则作用域映射)

    • id: string/uuid
    • rule_id: fk -> rule_definition
    • target_type: enum(device/workstation/line/plant/tag_query)
    • target_id: string(或 tag_expression: string)
    • effective_from, effective_to: datetime
  • rule_window_state(可选,持久化窗口状态/水位)

    • rule_id, target_type, target_id
    • window_start_ms, window_end_ms: bigint
    • watermark_ms: bigint
    • aggregate_state: binary/json(增量聚合中间状态)
    • last_eval_ms: bigint
  • alert(告警事件)

    • alert_id: string/uuid
    • rule_id: fk -> rule_definition
    • target_type, target_id
    • triggered_at_ms: bigint
    • window_start_ms, window_end_ms: bigint
    • current_value: double
    • threshold_snapshot: json
    • severity: enum
    • status: enum(new/acked/resolved/suppressed)
    • dedup_key: string(防抖/合并)
    • tenant_id: fk -> tenant
    • created_at_ms, updated_at_ms
  • work_order(工单)

    • work_order_id: string/uuid
    • alert_id: fk -> alert
    • type: enum(stop_line/maintenance/inspection)
    • plant_id, line_id, workstation_id, device_id(冗余便于检索)
    • status: enum(open/in_progress/closed/canceled)
    • reason, comment: string
    • sla_target_sec: int
    • created_at, started_at, closed_at: datetime
    • created_by: string
  • archive_manifest(归档清单)

    • id: string/uuid
    • tenant_id
    • table_name: string
    • partition_date: date
    • tier: enum(hot/warm/cold)
    • location_uri: string(对象存储路径)
    • file_count, row_count: bigint
    • compression_codec: string
    • checksum: string
    • archived_at, expired_at: datetime
    • restore_state: enum(available/restoring/restored/removed)
  • region_dim(地理维表)

    • region_code: string
    • name: string
    • parent_region_code: string
    • region_level: enum(country/province/city/area)

3. 实体关系图描述

  • 租户与组织层级:
    • tenant 1..* plant
    • plant 1..* production_line
    • production_line 1..* workstation
    • workstation 1..* device
  • 指标与时序:
    • metric_dim 1..* timeseries_raw
    • device 1..* timeseries_raw
    • timeseries_raw -> timeseries_agg_1s/1m(ETL/流式生成,非严格外键)
  • 规则与告警:
    • rule_definition 1..* rule_target
    • rule_definition + rule_target -> alert(运行时产生)
    • alert 0..1 -> work_order
  • 地理与组织:
    • plant n..1 region_dim(通过 region_code 或地理坐标映射)
  • 归档:
    • archive_manifest n..1 tenant;与具体事实表按 partition_date 对应。

4. 主要功能需求说明

  • 数据采集与写入

    • 支持高并发、批量写入(微批/列式批入),事件时间 ts_ms 毫秒级。
    • 去重与乱序处理:以(device_id, metric_code, ts_ms, seq_no) 作为幂等键;允许配置迟到窗口。
    • 质量标记 quality_flag,异常值可标注并参与/排除聚合。
    • 写入路径需支持行级租户隔离与速率限流(按 tenant_id)。
  • 秒级预聚合与近实时查询

    • 从 timeseries_raw 生成 timeseries_agg_1s(滚动/滑动、支持迟到修正),聚合字段至少含 cnt/min/max/sum/avg。
    • 可选生成 1 分钟/5 分钟更粗粒度聚合,提升历史看板性能。
    • 看板查询主要访问 1s/1m 聚合表,联接维表(设备/工位/产线/工厂)和地理维度实现多维统计。
  • 规则引擎与滑动窗口

    • 支持按 rule_definition 定义窗口大小与滑动步长,聚合函数与比较符。
    • 作用域支持设备/工位/产线/工厂或按标签选择(tag_query)。
    • 窗口状态可内置于流处理状态存储,必要时持久化至 rule_window_state(用于容灾恢复与回放)。
    • 异常触发生成 alert,写入低延迟 OLTP 明细表;根据策略自动生成 work_order。
  • 多租户与权限

    • 所有事实表与维表含 tenant_id 并启用行级安全(RLS)。
    • 组织层级继承(plant/line/workstation/device)需与 tenant 绑定,防止跨租户联接。
  • 历史数据分层归档与压缩

    • 数据分层:热(近 37 天,低延迟读写)、温(近 30180 天,高压缩、近线可查)、冷(>180 天,对象存储归档)。
    • 分区与 TTL:按 partition_date 管理分区,自动 TTL + 合并/压缩策略。
    • 归档落对象存储,archive_manifest 记录元数据;支持按需回溯/分区级回载。
  • 维表与时间点关联

    • 设备/工位/产线/工厂维表采用 SCD2,事实表按事件时间与维表有效期范围进行时间点连接(as of ts_ms)。
    • 地理统计:利用 plant 坐标/region_code,与 region_dim 关联,支持 geohash/区域聚合。
  • 数据修正与回放

    • 支持迟到数据回补与局部重算(限定时间窗内的 1s 聚合与规则评估重放)。
    • 支持批量再入库(backfill)与按分区重建聚合(保证幂等)。

5. 非功能需求指标

  • 性能(目标/预算,需压测验证)
    • 写入延迟:热表写入 p99 需达毫秒级;建议预算 ≤ 数十毫秒级/批,具体取决于批量与硬件。
    • 聚合与查询:1s 聚合链路(摄取→预聚合→可查询)建议端到端预算 ≤ 数百毫秒级。
    • 告警延迟拆解预算(示例,需以压测校准):
      • 摄取落盘 ≤ 200ms
      • 预聚合/窗口聚合 ≤ 400–800ms
      • 规则评估与告警落库 ≤ 200–300ms
      • 余量用于排队/网络开销,整体 < 2s
  • 可用性与可靠性
    • 集群多副本存储(建议复制因子≥3),跨节点自动故障转移。
    • 事实表以追加写与顺序分区降低恢复成本;维表定期快照与 binlog/CDC。
    • 目标 RPO/RTO 由业务与基础设施共同定义,需通过演练验证。
  • 可扩展性
    • 按时间与租户/设备维度分片,水平扩展存储与计算。
    • 预聚合与规则评估支持按 tenant_id/plant_id/shard_key 均衡分布。
  • 安全合规
    • 传输加密(TLS)、存储加密(磁盘或列/页级)。
    • 行级安全(RLS)与细粒度访问控制;审计日志。
  • 可观测性
    • 采集延迟、落盘延迟、窗口延迟、规则评估延迟、告警落库延迟等端到端监控。
    • 数据质量指标:丢包率、重复率、迟到率、质量标记占比。

6. 技术建议和注意事项

  • 数据库类型与分层
    • 热时序层:选择支持高并发写入、时间/租户分区、列式压缩与近实时聚合的时序/列式数据库(示例类型:分布式列存或时序数据库)。
    • 近线/历史分析层:对温/冷数据采用列式存储与对象存储分离架构,支持外表/联合查询与物化视图。
    • 规则引擎的窗口状态存储可使用嵌入式状态存储(带 checkpoint)或外置 KV/LSM,确保恢复后可继续计算。
  • 模式设计与索引
    • 分区:timeseries_* 按 partition_date(天或小时)分区;结合 tenant_id/plant_id 二级分片,避免时间热点。
    • 主键/排序键:优先采用 (tenant_id, device_id, metric_code, ts_[ms/sec]) 排序,便于范围扫描和窗口聚合。
    • 跳跃/稀疏索引与分区裁剪:减少大范围扫描;热点设备可单独 shard。
    • 物化视图/流式物化:生成 1s/1m 聚合,提供幂等更新与迟到修正策略(upsert within lateness)。
  • 写入与去重
    • 设备侧提供 seq_no,结合 ts_ms 做幂等;服务器侧 WAL + 批量/列式写入(micro-batch)。
    • 乱序处理:设置 lateness_allowance_ms;迟到数据触发补写并标记“补算区间”。
  • 规则与告警
    • 滑动窗口以 1s 聚合为输入,减少原始明细扫描压力。
    • 防抖/合并:利用 dedup_key + 抑制窗口避免告警风暴。
    • 告警与工单表走低延迟 OLTP 路径,支持事务性写入与状态流转。
  • 多租户隔离
    • 物理或逻辑隔离策略:视规模可采用按租户分库/分表/分片;统一启用 RLS。
    • 每租户限流及配额(写入 QPS、存储容量、查询并发)防止“吵闹邻居”。
  • 数据生命周期管理(ILM)
    • 热→温:触发合并与高比例压缩;温→冷:归档至对象存储,并登记 archive_manifest。
    • 支持按分区恢复(partial restore)与就地查询(近线外表),避免全量回灌。
  • 维度管理与时间点关联
    • 采用 SCD2,事实表按 ts_ms join 维表有效区间,确保历史回溯准确。
    • 设备与工位的变更需事件化,避免事实与维度错配。
  • 地理统计
    • 工厂存储经纬度与 geohash,区域聚合通过 geohash 前缀或 region_code 实现;必要时建立空间索引/网格键。
  • 压测与配额设定
    • 以真实数据分布/突发场景制定压测计划,验证:写入延迟、窗口延迟、端到端告警延迟、看板查询延迟。
    • 将“<2s 告警延迟”拆解为可监控的阶段性指标,设定预警阈值与自动扩缩容策略。
  • 可靠性与恢复
    • 多副本、跨 AZ/机架放置;定期快照与演练恢复。
    • 规则引擎状态 checkpoint 与事实表一致性对齐(以 watermark/offset 作为对账依据)。
  • 注意避免的反模式
    • 单表宽行存所有指标导致稀疏列与写放大;建议“窄表 + 指标维表 + 预聚合”组合。
    • 仅按时间分区、未二级分片导致写入热点;需时间+租户/设备混合分片。
    • 在原始明细上直接进行大范围窗口运算;应以 1s/1m 预聚合作为输入。

以上需求规格在不假设具体厂商产品前提下给出数据库侧的实体模型、关系与功能/非功能要求。落地时需结合目标技术栈的分区、索引、物化视图与流处理特性做参数化配置,并通过压测校准延迟预算以满足端到端告警 < 2 秒的目标。

示例详情

解决的问题

  • 让 AI 充当“数据库需求分析专家”,把零散的业务描述快速转化为可交付的数据库需求规格说明书
  • 以标准化流程输出:业务概述、核心实体与属性、实体关系说明、主要功能、非功能指标、技术建议,直接用于评审与归档
  • 适配多种业务:事务处理、数据分析、实时应用,覆盖 CRM、电商、医疗、制造等典型场景
  • 提升协作效率:统一口径、减少反复沟通,帮助产品、研发、架构、DBA 迅速对齐
  • 风险可控:引导性检查项避免遗漏关键实体、关系与质量要求,为后续模型设计与开发排期提供可靠依据
  • 促转化价值:新手可即刻上手,专家可用其清单化思路做全面复核,单次会话即可生成可分享的结构化文档

适用用户

系统分析师与架构师

一小时内完成从业务梳理到实体关系、操作清单与非功能指标的完整需求稿,支撑评审、估算与方案定稿。

互联网产品经理

将用户流程转化为可执行的数据模型与权限策略,快速生成可评审文档,推动跨部门对齐与里程碑落地。

后端工程师

依据自动生成的字段与关系说明,快速落地表结构与数据操作方案,明确边界条件与异常处理,减少返工。

特征总结

一键梳理业务场景,提炼核心数据需求,快速对齐产品、研发与业务认知。
自动识别数据实体与属性,生成清晰字段清单,避免遗漏关键业务信息。
智能搭建实体关系与约束,给出关联建议,减少后期表结构返工成本。
围绕增删改查一键定义操作场景,明确权限与访问路径,支撑稳定迭代。
自动汇总性能、安全与扩展性要求,给出容量与并发规划,降低上线风险。
一键生成结构化技术文档,可直接交付评审与立项,节省沟通与写作时间。
支持交易、分析与实时等多场景适配,按需切换设计侧重,避免过度设计。
内置最佳实践与审校清单,自动提示潜在瓶颈与风险点,提前规避踩坑。
参数化输入业务规模与性能目标,自动给出方案对比,帮助做出取舍决策。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 573 tokens
- 4 个可调节参数
{ 业务场景 } { 操作类型 } { 系统规模 } { 性能要求 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59