主要观点:在当今软件开发中,分类账未得到充分利用,双式记账模型比现有临时的类似分类账的东西更合适,作者致力于开发纯 PostgreSQL 分类账实现 pgledger,希望更多人使用,分类账有核心概念及多种优势,可在多个场景中应用。
关键信息:
- 分类账核心概念:当前事物的金额或余额、金额达到该金额的历史记录(不可变、只追加等)、每一步金额的来源。
- 以在线业务记录付款为例,通过双式记账可更明确记录交易,如创建订单时产生应收款,收到款项后进行转账,退款也可清晰记录,还可添加多个账户。
- 跟踪用户积分时,从简单的在用户表中添加积分列到引入点事件表记录积分变化,随着需求增长,类似双式记账的需求越来越明显,使用分类账建模可处理各种情况。
- 还有其他类似用例,如 API 使用信用额度建模、内容审核行动建模、库存管理系统建模等。
重要细节: - 许多分类账用借项和贷项而不是负数和正数来建模,作者认为使用负数和正数更简单。
- 每笔转账只移动金额,不会凭空创造,是内置的错误检查,历史记录可作为审计日志。
- 不同的分类账实现方式在磁盘上存储的内容不同,但重要的是所有信息都原子性地记录。
- 可根据需求添加任意数量的账户,如为每个用户设置应收款账户或在可用账户内设置子账户。
- 关于讨论的链接:https://lobste.rs/s/uqniaz/double_entry_ledgers_missing_primitive、https://news.ycombinator.com/item?id=44320050#44326891、https://www.reddit.com/r/programming/comments/1lduuw1/doubleentry_ledgers_the_missing_primitive_in/
- 学习双式记账会计知识的 Ledger CLI 工具:https://ledger-cli.org/doc/ledger3.html#Stating-where-money-goes
- 完整的会计等式:https://en.wikipedia.org/wiki/Accounting_equation
- 更多讨论:https://github.com/pgr0ss/pgledger/discussions/29
- 货币转换示例:https://github.com/pgr0ss/pgledger?tab=readme-ov-file#currencies、https://docs.tigerbeetle.com/coding/recipes/currency-exchange/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。