内容提要
本文重新审视数据库编程的范式,展示了在不牺牲现代软件工程原则的情况下构建“石头、剪刀、布”游戏的方法。文章讨论了现代软件工程团队通常只使用数据库功能的一小部分的原因,并探讨了将业务逻辑放在应用程序层而不是数据库层的隐藏成本。还介绍了现代数据库编程的优势,如减少网络延迟、保持原子性和一致性、增强安全性等。最后,介绍了Atlas作为数据库模式即代码工具的功能,并展示了使用Atlas构建“石头、剪刀、布”游戏的示例。
关键要点
-
现代数据库是耐用、高效且可编程的数据存储库,适合构建应用程序。
-
许多数据库功能(如函数、触发器和物化视图)近年来被忽视。
-
现代软件工程团队通常只使用数据库功能的一小部分,原因包括对数据库编程的误解和复杂性。
-
将所有业务逻辑推向应用层会导致延迟、资源利用率低和一致性问题。
-
现代数据库(如PostgreSQL)能够维护操作的原子性和数据的一致性。
-
安全性是将访问控制逻辑放在数据库中的一个重要原因,能够减少应用程序的复杂性和安全风险。
-
数据库编程正在回归,越来越多的工程师意识到避免数据库编程的成本。
-
Hasura和Supabase等开源项目展示了将数据库能力集成到应用程序中的成功案例。
-
数据库模式即代码(Database Schema as Code)工具如Atlas可以帮助工程师将现代软件工程原则应用于数据库设计。
-
通过Atlas构建“石头、剪刀、布”游戏的示例展示了如何在数据库中实现业务逻辑。
-
使用Atlas进行数据库编程可以提高性能和安全性,同时简化代码库。
-
现代CI/CD流程可以通过将数据库模式管理为代码来实现,确保数据库的版本控制和自动化测试。
延伸问答
如何在PostgreSQL上构建石头、剪刀、布游戏?
可以通过使用Atlas工具和PostgreSQL数据库编写业务逻辑,创建相应的函数和表来实现石头、剪刀、布游戏。
为什么现代软件工程团队忽视数据库编程的功能?
许多团队认为数据库编程是过时的,且对其复杂性和测试难度存在误解,导致只使用数据库功能的一小部分。
将业务逻辑放在数据库层有什么好处?
将业务逻辑放在数据库层可以减少网络延迟、提高资源利用率,并维护操作的原子性和数据的一致性。
Atlas工具在数据库编程中有什么作用?
Atlas是一个数据库模式即代码工具,帮助工程师将现代软件工程原则应用于数据库设计,简化代码库并提高性能和安全性。
如何使用Atlas进行数据库测试?
可以通过Atlas的内置测试框架编写单元测试,验证数据库函数的逻辑是否正确。
数据库编程的回归趋势是什么?
越来越多的工程师意识到避免数据库编程的成本,开始寻找将数据库能力集成到应用程序中的更好方法。