SuperAPI AI 工具集

ecto-thinking

数据与分析

查看项目

更新于 10-15 21:55

技能介绍

用途:帮助在 Elixir/Ecto 中做数据层与领域建模设计,挑战常见 ORM 习惯,强调按业务界限上下文组织代码。主要能力与要点:上下文会改变词义,同一实体在不同上下文可有各自 schema/表,思考顺序为子域→上下文→实体;跨上下文只用 ID 引用而非关联,查询经由上下文保持独立可测;以流水线方式组合工厂、聚合与仓储,并用事件(数据结构)低耦合组合上下文;schema 不等于数据库表,纯表单校验可用 embedded_schema/1,API 可用嵌入式或无 schema;按操作拆分多个 changeset;多租户用复合外键与 prepare_query/3 自动隔离,缺 org_id 时抛错;预加载按场景选择,has-many 多记录用分开预加载省内存,belongs-to/has-one 可用 join 预加载但多记录时内存可达十倍;若只是 CRUD 上下文就保持简单,用生成器,业务复杂再引入 DDD。陷阱:多租户中 CTE 不继承 schema 前缀,需显式设置 prefix;参数化查询不等于预编译语句,pgbouncer 下用 prepare: :unnamed;pool_count 适合均匀负载,真实应用可用更大 pool_size;沙箱模式不与外部进程共享事务;PostgreSQL 拒绝空字节需在边界清洗;preload_order 不支持 through 关联;运行时迁移用列表 API。惯例:优先 Repo.insert/1,Ecto 3.12+ 可用 Repo.transact/1。限制:资料未提供安装命令、版本要求、收费与平台信息。