目录
回复内容:
使用orm的好处
orm的坏处
综上
首页 后端开发 php教程 在团队中是否应统一使用 ORM?使用 SQL 语句有什么坏处?

在团队中是否应统一使用 ORM?使用 SQL 语句有什么坏处?

Jun 06, 2016 pm 08:47 PM
mysql php python sql

如题。
团队规模为10人。编程环境为 PHP + Python。
个人觉得在大家都会 SQL,并且掌握一些 SQL 技巧时,统一使用 SQL 语句可以在以后性能调优时更直观。不知各位“过来人”有何高见。
另外在 Model 里有没有必要把 phpredis 的函数重新封装为 ORM ?感觉 Redis 本身就是为速度存在的,如果再在入口处加一些解析、判断、封装,是不是会有悖于 Redis 的主旨,而且涉及数据交互的 Model 在我们团队里仅由2人负责,编码规范化的问题应该不是问题。

回复内容:

如题。
团队规模为10人。编程环境为 PHP + Python。
个人觉得在大家都会 SQL,并且掌握一些 SQL 技巧时,统一使用 SQL 语句可以在以后性能调优时更直观。不知各位“过来人”有何高见。
另外在 Model 里有没有必要把 phpredis 的函数重新封装为 ORM ?感觉 Redis 本身就是为速度存在的,如果再在入口处加一些解析、判断、封装,是不是会有悖于 Redis 的主旨,而且涉及数据交互的 Model 在我们团队里仅由2人负责,编码规范化的问题应该不是问题。

SQL一个比较大的麻烦就是不限权(或者是限权不细)。一个SQL语句的书写失误,可能毁掉整个系统的所有数据。

因此甚至包括WordPress在内的,几乎所有的框架都不怎么提倡直接把SQL语句硬编码(hard code)在程序中,而是必须封装起来。

不要觉得只有两个人做就不必封装了——缺少规矩,人少也出事儿。

可以使用一些轻量级的ORM,好处就是:
1、开发快,很多细节封装起来了,比如数据库连接的使用和释放
2、面向对象的开发方式让代码更易理解和维护
3、完全不会限制你做SQL调优,比如类似mybatis这样轻量级的ORM,还是使用SQL访问数据

网上有的是AR类,随便搞一个用,不要直接写SQL,要是想调节性能你可以加一层logging专门记录慢查询和方法。
我见过很多人把redis封装成ORM的接口,为了使用方便,包裹一些判断和加载那都太正常了,我们可以按需要给redis的ORM、Cache、Count、Queue分别封装, 这处性能影响不大。最主要是加速开发以及可维护性。

使用SQL的好处是直观一点, 但坏处比好处更多,例如硬编码的维护性低、前端人员水平良莠不齐你不能保证每个人写的SQL都一样,最主要的是编写速度慢,我觉得数据库语句这种东西,前端开发人员甚至不该直接接触。

在项目中,更偏向于直接写SQL,而不是用ORM,对于Python之类的弱类型语言,更甚。 SQL表达能力已经很强,比较简单,易于上手。

程序员学习SQL,好处有:
1. SQL语句,可以在命令行(mysql) & 其它图形化工具 执行,一边修改,一边调试。
2. 在互联网上,SQL的文档很多,而ORM的文档偏少。有困难时,比较容易找到解答
3. SQL更通用,你可能学习了很多ORM,但不明白SQL,你能说自己懂ORM了么?

程序员,熟悉SQL,进而数据库,是对自己的要求。这可能是DBA的事,但也是你进步,增值的方法。

可以参考discuz的封装,另外对所有涉及到sql的更改都进行2人左右的review

在团队中是否应统一使用 ORM?使用 SQL 语句有什么坏处?

http://www.cnblogs.com/needrunning/archive/2011/11/15/2250068.html

个人觉得

使用orm的好处

<code>1. 节约时间,指的是程序员的时间,如果题主不是做效率要求很高的东西,整个团队节约下来的时间是很客观的,非常喜欢一句话“宁花机器一分,不花程序员一秒”,题主选择了python,相信应个对这个体会比较深吧(生命苦短,我用python~)
2. 适合工程,对同一类需求,基本上不同人写出来的东西是一样的,sql有这种问题,如果一个人写了很复杂的东西,这个成员离职或怎样,这段代码就会变成野草(非常难看懂,非常痛苦),早晚会被之后的维护者重写的,orm的话代码逻辑比较清晰。
</code>
登录后复制

orm的坏处

<code>1. 效率,orm的话会存在一些效率的问题,毕竟编译的时候会生成一些别的代码,可能一个复杂的需求写4、5十行sql的效率 > orm的效率,不过实在是很蛋疼
2. 学习成本,很多人都是先学sql,然后接触orm,自然有学习成本的问题,而且使用orm就要符合orm的规范,有些高效的orm使用方式还是一种隐藏的附加技能,需要不断探索
</code>
登录后复制

综上

对于一个把程序员的时间看作第一位的团队(项目超期是很正常的事情),如果对程序的执行效率要求不是超高的话,是用orm绝对是让你轻松的一件事情。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
<🎜>掩盖:探险33-如何获得完美的色度催化剂
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1430
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
MySQL与PhpMyAdmin:了解关键差异 MySQL与PhpMyAdmin:了解关键差异 May 06, 2025 am 12:17 AM

MySQL是数据库管理系统,phpMyAdmin是管理MySQL的Web工具。1.MySQL用于存储和管理数据,支持SQL操作。2.phpMyAdmin提供图形界面,简化数据库管理。

Navicat和Mysql:完美的合作伙伴关系 Navicat和Mysql:完美的合作伙伴关系 May 05, 2025 am 12:09 AM

Navicat和MySQL是绝配,因为它们能提高数据库管理和开发效率。1.Navicat简化了MySQL的操作,通过图形界面和自动生成SQL语句提升工作效率。2.Navicat支持多种连接方式,方便本地和远程管理。3.它提供了强大的数据迁移和同步功能,适合高级用法。4.Navicat有助于性能优化和最佳实践,如定期备份和查询优化。

Python开发_python的安装 Python开发_python的安装 May 07, 2025 pm 04:33 PM

Python可以在多种平台上运行,包括我们常见的:Windows、Unix、Linux和Macintosh。本文将详细介绍在Windows操作系统中安装Python的过程。我的操作系统是Windows7,32位版本。在安装Python时,我们可以选择从源码安装,也可以选择已经编译好的二进制版本进行安装。我这里选择的是后者。步骤一下载安装包我们从Python的官方网站:http://www.python.org下载Python的安装包。我选择的版本是:python-3.3.2.msi点击下载后,我

MySQL:SQL的实际应用 MySQL:SQL的实际应用 May 08, 2025 am 12:12 AM

MySQL受欢迎的原因是其性能卓越且易于使用和维护。1.创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2.插入和查询数据:通过INSERTINTO和SELECT语句操作数据。3.优化查询:使用索引和EXPLAIN语句提升性能。

PHP性能优化策略。 PHP性能优化策略。 May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

MySQL与Oracle:许可,功能和福利 MySQL与Oracle:许可,功能和福利 May 08, 2025 am 12:05 AM

MySQL和Oracle的主要区别在于许可证、功能和优势。1.许可证:MySQL提供GPL许可证,免费使用,Oracle采用专有许可证,价格昂贵。2.功能:MySQL功能简单,适合Web应用和中小型企业,Oracle功能强大,适合大规模数据和复杂业务。3.优势:MySQL开源免费,适合初创公司,Oracle性能可靠,适合大型企业。

phpmyadmin的功能:与MySQL(SQL)互动 phpmyadmin的功能:与MySQL(SQL)互动 May 07, 2025 am 12:16 AM

phpMyAdmin通过Web界面简化MySQL数据库管理。1)创建数据库和表:使用图形界面轻松操作。2)执行复杂查询:如JOIN查询,通过SQL编辑器实现。3)优化和最佳实践:包括SQL查询优化、索引管理和数据备份。

.NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿 .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿 May 07, 2025 pm 04:54 PM

一、.NETCore的起源谈到.NETCore,就不能不提它的前身.NET。当年Java风头正盛,微软也对Java青睐有加,Windows平台上的Java虚拟机就是微软依据JVM标准开发的,据称是当时性能最佳的Java虚拟机。然而,微软有自己的小算盘,试图将Java与Windows平台捆绑,增加一些Windows特有的功能。Sun公司对此不满,导致双方关系破裂,微软随后推出了.NET。.NET从诞生之初就借鉴了Java的许多特性,并在语言特性和窗体开发等方面逐渐超越了Java。Java在1.6版

See all articles