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

问题起源
    今天,leader看了我写的代码。提了一个建议。

我在写p2p业务系统的时候,数据库底层使用了“关联查询,left-join”,leader认为这样性能不好。

他建议,不使用关联查询,每次都是单表查询,假设须要查询关联数据。添加一次查询,然后再把两次甚至多次的数据合并。

即通过程序而不是sql,合并数据。

他的思考逻辑:
   他之前在淘宝工作过。web系统对性能要求比較高。Web前端等程序能够使用分布式,量再大,多台应用server就能够应付了。而数据库,最多也就是主从结构。非常easy成为瓶颈。

使用关联查询,比較耗费性能,并且訪问量大的时候,不够稳定。
   他的观点:数据库的核心作用是,提供存储和查询服务,left join等高级查询不是数据库的强项。假设仅仅是用单表。每次都非常快,并且有保障,出错的可能性比关联查询小非常多,并且单表查询easy做缓存,建索引。

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

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

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

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

扩展话题
象性能与效率的取舍等问题 ,在我看来都是一个“标准”或者“最佳实践”的问题。

我想把这5年多学习Web开发的经验,总结下,比方前端用哪些技术、后端Java用哪些框架、管理代码、打包部署 、备份、站点监測。

为什么想这么做呢?反复的问题,标准话之后。工作会轻松很多。
此外。尽管作为一个技术人员,我还是想通过敲代码搞点外快的。 假设常见的功能,我都能够非常快地实现。那么在同样的条件下。我能够实现很多其它的系统,仅仅要有一个能够卖出去,比方5万一套。也是非常多的。

这些都是我的一点想法,希望有一天能够实现,哪怕仅仅是一小部分。

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

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-09 04:16:49

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

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

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

干货系列1:Java互联网网站开发工程师 的技术提高与晋升路线(技术专精)

前几天写了自己对于Java软件开发工程师职业发展规划方面的一些感悟,陆续收到一些反馈,希望我能再就Java工程师不同的开发(职责)方向谈谈职业发展问题.(上一篇:Java软件开发工程师的自我修养与晋升(B/S结构)下面就具体谈谈Java程序员的另一个职责方向:Java互联网开发工程师 Java互联网开发工程师的主要岗位职责是: 负责网站平台的系统设计.数据库设计.代码开发,以及技术攻关的工作. 职业发展道路基本有3条: 第一条路线(技术专精): 初级Java开发---中级--高级---项目主管-

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

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

Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架

转自:https://toutiao.io/posts/0l7l7n/preview Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架.Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器. Leaf 的关注点: 良好的使用体验.Leaf 总是尽可能的提供简洁和易用的接口,尽可能的提升开发的效率 稳定性.Leaf 总是尽可能的恢复运行过程中的错误,避免崩溃 多核支持.Leaf 通过模块机制和 leaf

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

一步一步教你用Swift开发俄罗斯方块:No.1 建立你的第一个Swift游戏工程

原文地址:https://www.bloc.io/tutorials/swiftris-build-your-first-ios-game-with-swift#!/chapters/677 好了,我们正式开始我们的swift游戏开发! 首先,需要新建一个工程,熟悉iOS开发的童鞋应该对这个步骤不会陌生.我们还是一步一步来吧: 这里有两种途径建立全新的工程,你可以: 如果你的Mac没有运行Xcode,请打开它,然后在欢迎页面点击Create a new Xcode project 这里我还是要重

Visual Studio 实用扩展推荐   Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源)。在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率。 C# outline   Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if、while的区块进行折叠

Visual Studio 实用扩展推荐 Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源).在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率. C# outline Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if.while的区块进行折叠,而这款工具则正好弥补了这个问题. highlight all occurrences of selected word

Android 开发基础入门篇: 复制一个工程作为一个新的工程

说明 咱们做项目很多时候都需要复制一份工程出来作为一个新的工程 把第一节的工程拷贝到这一节 修改工程名字 打开软件导入此工程 修改包名 第一节的时候说了,一个APP一个包名 自行添加修改 自行修改 自行修改 选择 Sync Now 清理下工程 然后安装到手机 原文地址:https://www.cnblogs.com/yangfengwu/p/11909225.html

使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】

不知从什么时候开始,创业变得很廉价,谈什么都是互联网,动辄融资千万.这阵风好像也刮向了程序员中,有那么一大批开发者,数据结构不好好学习.数据库原理不扎实掌握,在github上发布几个项目,用nodejs创建一些服务,再用H5写出APP,就自以为迈入了高级程序员的队伍,能够运筹帷幄互联网项目,难道学习新技术.新理念就是快速成长吗,显然不完全是,在这浮躁的氛围中,各种粗制滥造的互联网网站.APP接踵而至,很多看似漂亮的APP,连简单的http接口安全都没有措施应对,很多美丽的响应式网站,目录结构随意