主要观点:作者在开发一个完全用 PostgreSQL 实现的财务账本实现pgledger,介绍了其基本操作和功能,包括创建账户、创建转账、查看账户余额和账本条目等,每个转账会更新账户余额和账本条目,并增加账户版本。阐述了使用账本的原因,如在支付领域常见,是处理金钱的基础构建块,能满足当前应用需求和报告对账等。还说明了选择 PostgreSQL 的原因,可在同一数据库事务中进行账本更新,保证事务性和原子性,且无需集成新 API 或运行新服务,便于移植到其他项目。测试用 Go 语言编写,主要因为作者常用且支持良好的并发性,已有并发测试寻找死锁和竞态条件,希望能继续开发更多功能。
关键信息:
- PostgreSQL 实现的账本[pgledger]及其基本操作代码示例。
- 账本在支付领域的重要性及常见自建情况。
- PostgreSQL 相比其他选项的优势,如事务性和原子性。
- Go 语言用于测试及已有并发测试情况。
重要细节: - 创建账户通过
pgledger_create_account
函数,转账通过pgledger_create_transfer
函数,查看账户余额和账本条目通过相应函数。 - 每个转账会更新两个账本条目,记录账户的前后余额和版本。
- 选择 PostgreSQL 可在同一事务中处理账本和其他工作,保证一致性,便于移植。
- Go 语言测试用于寻找并发情况下的死锁和竞态条件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。