互联网项目开发效率与系统性能的一个取舍问题

问题起源
    今天,leader看了我写的代码,提了一个建议。我在写p2p业务系统的时候,数据库底层使用了“关联查询,left-join”,leader觉得这样性能不好。他建议,不使用关联查询,每次都是单表查询,如果需要查询关联数据,增加一次查询,然后再把两次甚至多次的数据合并。
即通过程序而不是sql,合并数据。

他的思考逻辑:
   他之前在淘宝工作过,web系统对性能要求比较高。Web前端等程序可以使用分布式,量再大,多台应用服务器就可以应付了。而数据库,最多也就是主从结构,很容易成为瓶颈。使用关联查询,比较耗费性能,并且访问量大的时候,不够稳定。
   他的观点:数据库的核心作用是,提供存储和查询服务,left join等高级查询不是数据库的强项。如果只是用单表,每次都很快,而且有保障,出错的可能性比关联查询小很多,而且单表查询容易做缓存,建索引。

我的思考逻辑:
   我写的程序基本不考虑性能问题,因为我还没有遇到过性能瓶颈问题,可能是我参与的大多数小访问量的业务系统,而非海量普通消费者用户的大型互联网系统。 
   写程序,最基本的原则是,保证按时交付、质量过关、可读性强、容易维护。

如果自己去合并多次查询的数据,要多写不少Java代码,显然会增加工作量。

取舍
  我们正在开发的是p2p系统,如果客户买我们的系统,运营得比较好的话,量也会比较大。为了应对潜在流量大的问题,开发还是需要注意性能。所以,我需要重构代码。这个合并数据的逻辑不难,用node.js写程序的时候,写过。把公共的合并逻辑或者方法,总结下来或写成工具方法,花的时间也可以少点。

一点实际经验
  从过去的开发经验来看,我也非常只想写“单表查询的sql语句” ,非常容易写。更关键的是,针对一张表的CRUD操作,用Hibernate和Mybatis等数据库框架,可以很容易实现。多张表的CRUD API很难写。

扩展话题
象性能与效率的取舍等问题 ,在我看来都是一个“标准”或者“最佳实践”的问题。
我想把这5年多学习Web开发的经验,总结下,比如前端用哪些技术、后端Java用哪些框架、管理代码、打包部署 、备份、网站监测。

为什么想这么做呢?重复的问题,标准话之后,工作会轻松许多。
此外,虽然作为一个技术人员,我还是想通过写程序搞点外快的。 如果常见的功能,我都可以很快地实现,那么在相同的条件下,我可以实现更多的系统,只要有一个可以卖出去,比如5万一套,也是非常多的。

这些都是我的一点想法,希望有一天可以实现,哪怕只是一小部分。

小雷FansUnion-博学的互联网技术工作者
2014年10月30日
湖北武汉

时间: 2024-10-19 12:22:01

互联网项目开发效率与系统性能的一个取舍问题的相关文章

的一个折衷互联网工程开发效率和系统性能

问题起源    今天,leader看了我写的代码.提了一个建议. 我在写p2p业务系统的时候,数据库底层使用了"关联查询,left-join",leader认为这样性能不好. 他建议,不使用关联查询,每次都是单表查询,假设须要查询关联数据.添加一次查询,然后再把两次甚至多次的数据合并. 即通过程序而不是sql,合并数据. 他的思考逻辑:   他之前在淘宝工作过.web系统对性能要求比較高.Web前端等程序能够使用分布式,量再大,多台应用server就能够应付了.而数据库,最多也就是主从

atitit.微信项目开发效率慢的一些总结

#---理念问题..这个是最大的问题.. 要有专人提升开发效率才好.. #---没有一个好的开发方法体系.... ini deve 法. fell asd+xp+ipd 比较好.. #---团队配合弱的.. 研发体系延续早期的一个独立的开发团队负责一个独立产品... 面对客户小批量个性化的需求,太高的成本.太长的周期,做会亏本,不做会损失市场 #---需求管理不足...没有需求更改流程. 需要需求管理,需求的范围不断扩大... 作者 老哇的爪子 Attilax 艾龙,  EMAIL:[email

使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发人员更轻松的打造出功能丰富而且美观的UI界面.开发人员不须要编写复杂的javascript,也不须要对css样式有深入的了解,开发人员须要了解的仅仅有一些简单的html标签.jQuery EasyUI为我们提供了大多数UI控件的使用

【项目总结】:如何做一个牛逼的Team leader?

随着ITOO高校云平台3.1项目的结束,我们各种各样的总结也被提上了日程.Java版本的所有开发人员和Donet版本的所有开发人员坐在一起进行了关于项目开发管理的头脑风暴,虽然我只是Donet开发组的一个子系统--考评系统的模块开发人员,但是对于项目开发管理也有自己的一些思考和看法. 众所周知,作为一个Teamleader,是要考虑很多很多事情的,如何调动团队成员的积极性,如何统筹安排团队成员分工合作,使工作效率达到最佳,如何根据开发人员的技术水平.经验以及个人性格等诸多因素为他们分配任务,以使

【项目总结】:怎样做一个牛逼的Team leader?

随着ITOO高校云平台3.1项目的结束,我们各种各样的总结也被提上了日程. Java版本号的全部开发者和Donet版本号的全部开发者坐在一起进行了关于项目开发管理的头脑风暴,尽管我仅仅是Donet开发组的一个子系统--考评系统的模块开发者.可是对于项目开发管理也有自己的一些思考和看法. 众所周知.作为一个Teamleader,是要考虑非常多非常多事情的,怎样调动团队成员的积极性,怎样统筹安排团队成员分工合作,使工作效率达到最佳,怎样依据开发者的技术水平.经验以及个人性格等诸多因素为他们分配任务.

全网唯一:移动互联网服务器端开发!

移动互联网时代来了! App市场爆发式增长为Web开发程序员带来新一轮机遇,近两年新增创业者,几乎全部选择了移动互联网项目!传统互联网企业中超过98%的门户网站已经或者正在从单一的网站入口转向PC.手机.Pad.智能电视等多端全平台兼容体系.据统计,AppStore中超过85%的App项目都选择了PHP作为后端程序开发语言. 想要工资加倍吗? 想要突破自我打破现有技术瓶颈吗?想要走上移动互联网架构师的岗位吗?还在苦逼的每天写着表单增删改查又或者反复调试设备兼容性吗?勿失良机,用PHP做移动互联网

用互联网思维来开发客户端软件——项目开发小结

随着智能手机.平板电脑的快速发展,台式电脑在个人用户那里已经没落了,但是台式电脑仍然是企业用户工作中的主要工具,且具有不可替代的作用.客户端软件在企业级用户那里有着不可替代的作用,结合时代发展,我们应以互联网思维来做好企业级应用客户端软件?研发快速迭代.快速试错,把大功能拆分成小功能,分阶段实现,追求微创新. 通常企业级应用的客户端,就是企业管理应用系统,一般分为BS与CS两种架构,CS架构要求在用户的电脑上装上客户端与数据库,或者数据库安装在数据库服务器上.这种方式我们经常会碰到一些问题,比如

“六神”——技术提高开发效率的一个方案

这个方案并不是我在系统设计方面的最早一次尝试.但它在提高开发效率方面,是效果最为显著的一个方案. 简介 "六神"框架提供了一套简单而通用的.从Web层到数据库操作(增加单个数据.删除单个数据.修改单个数据.查询单个数据.查分页列表.查不分页列表,六个操作,因此名为"六神")的基础组件.并且,它为复杂的数据库操作留下了扩展点. 在当时的技术背景下,这套框架使用Struts2.0+Spring+myBatis来实现.但是它的设计思路是可以适用于其它技术的. 在应用了这套

angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示react+redux的“弯弯绕”,下面这个程序就是我用react和redux写的.然而这个程序在angular中一行js都不用写!!! 展示组件 App.js import React, { findDOMNode, Component } from 'react'; import ReactDOM