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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

问题起源


    今天,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日
湖北武汉 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117436.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 公有云和私有云的区别 如何搭建云存储

    公有云和私有云的区别 如何搭建云存储云存储这样的隐喻或许感觉会有些夸张,但我们从中仍能感觉到和云相关的模糊的概念,对于这项技术的未来也是充满了未知,这对我们熟知的私有云存储也是一样。虽然市场上各种宣传的私有云存储都声称自己受益于在原有公有云上增加了防火墙,然而却有迹象表明私有云存储的名声却逐渐降到公共存储之下。说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此…

  • Could not download kotlin-compiler-embeddable.jar

    Could not download kotlin-compiler-embeddable.jar

  • Java递归详解_java难不难学

    Java递归详解_java难不难学学习目标:提示:这里可以添加学习目标例如:一周掌握Java入门知识学习内容:提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、周一至周五晚上7点—晚上9点2、周六上午9点-上午11点3、周日下午3点-下午6点学习产出:提示:这里统计学习计划的总量例如:1、技术笔记2遍2、CSDN技术博客3篇

  • 41.XDMA寄存器详解5-H2C SGDMA/C2H SGDMA寄存器组剖析

    41.XDMA寄存器详解5-H2C SGDMA/C2H SGDMA寄存器组剖析目录1.上节回顾2.H2CSGDMA寄存器组2.1H2CSGDMA标识寄存器2.2H2CSGDMA描述符基地址寄存器2.3H2CSGDMA邻接描述符数量寄存器2.4H2CSGDMA描述符信用寄存器3.C2HSGDMA寄存器组4.下节内容1.上节回顾上节我们讲述了ConfigBlock寄存器组,我们今天来看H2CSGDMA/C2HSGDMA寄存器组,如下。H2CSGDMA/C2HSGDMA寄存器组主要是用来描述每个通道DMA描述符相关的一些

    2022年10月30日
  • Stopwatch用法

    Stopwatch用法获取系统时间计算System.currentTimeMillis()Stopwatch对程序部分代码进行计时(ms级别),适用于同步单线程代码块。StopWatch实例一次只能开启一个task,不能同时start多个task,并且在该task未stop之前不能start一个新的task,必须在该taskstop之后才能开启新的task,若要一次开启多个,需要new不同的StopWatch实例//只输出运行多少秒Stopwatchstopwatch=Stopwatch.creat.

  • vue转json串_vue中怎么声明一个数组

    vue转json串_vue中怎么声明一个数组一些常用更多方法介绍文章目录前言一、vue对象转数组?二、JSON数据转换1、JSON.parse2、JSON.stringify2.1、JSON.stringify高级使用总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、vue对象转数组?示例:工作中我们经常会因为和接口收到数据类型不一致,这个时候需要我们自己手动转换.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号