聊聊Java数据库开发的那点事儿

news/2025/2/12 19:18:26

无论你开发的是一款PC端的Web应用,还是一款移动端的app,都需要一个数据库来存储你的业务数据(包括电商的商品信息、游戏的道具信息、社交的人员信息等等)。可以说,数据库是后端系统最重要的存储组件。

 

作为一名Java程序开发人员,你会发现你所完成的大部分代码逻辑最终都是在不断的与数据库进行交互。

 

在之前的交流中,我发现很多同学,尤其是从高校刚毕业的大学生,也包括一些从其他行业刚刚转行进入Java 开发领域的从业者,对Java 语言中涉及数据库开发的相关技能不是很了解,甚至会出现误将SQL与数据库开发划等号的情况。

 

我们今天就来给大家介绍一下数据库开发到底包括哪些技能。我们将数据库开发的学习大致划分为4个阶段:基础阶段、框架阶段、调优阶段以及架构阶段。

 

 

 

 

1基础阶段

 

 

在基础阶段中,我们最先接触的是JDBC(Java Data Base Connectivity),它是我们Java 程序访问数据库的最基础的工具,它帮我们封装了和数据库交互繁琐的协议。

 

熟练掌握JDBC的正确使用姿势后,我们还需要掌握一些典型特定场景下JDBC的使用技巧,这些技巧将在后续我们实际工程开发中发挥重要作用。例如,在大数据量读取的场景中,如果按照正常的步骤读取数据库中的数据,就会容易出现OOM(Out of memory)的异常,为了解决该异常,我们就需要用到“游标”技术,通过多次读取结果集的方式完成海量数据的读取。

 

 

 

 

2框架阶段

 

 

基础阶段的学习主要是掌握最基本的如何在Java程序中访问数据库的问题,在框架阶段,我们重点要解决的是代码可维护性、可重用性、可扩展性以及可读性的问题。

 

我们同学在Java面试过程中,会经常被问到关于“设计模式”相关话题,框架的本质就是将设计模式的思想固化成应用程序中的整体结构类以及对象的关系,使用框架的目的就是让开发者能够更加专注的解决业务逻辑,而不需要关注代码结构设计,提高代码开发的效率,同时保证代码具备较高的质量。

 

框架阶段的学习让我们开发应用程序变得更加高效,我们可以很快的通过MyBatis搭建一个基于数据库的Java 应用程序。但是数据库作为后端唯一或者主要持久化组件,数据库的请求处理能力和响应时间很大程度决定着应用程序的整体性能,所以数据库性能优化成为下一阶段学习的主要内容。

 

数据库性能优化对于程序开发人员,这里主要包括数据库访问优化、SQL优化以及死锁的处理与解决。数据库访问优化这里主要指的是连接池的使用与调优,连接池可以避免连接反复创建和销毁造成的性能开销,大幅提高数据的访问性能,同时还能限制数据库连接数,避免系统过载。目前业界开源的优秀产品包括DBCP、C3P0对于开发者都是不错的选择。连接池除了基本的使用,更为复杂的是连接池的优化,包括失效连接检测、自动重连、活跃连接控制等,都需要基于一定的开发经验进行配置才能达到最大优化。

 

 

 

3调优阶段

 

 

SQL调优主要是针对程序开发人员编写的SQL语句进行优化,这里包括SQL语句是否走索引,索引选择是否高效等。这部分的技能对于开发者,更为关键的是掌握基本的排查方式,包括慢SQL语句,查看执行计划,查看索引的区分度等,根据排查的结果完成SQL调优。

 

数据库作为将并发编程演绎到极致的大型系统,SQL语句的执行会涉及到对不同对象的加锁,多条SQL语句并发执行就会衍生死锁的问题,死锁的排查和解决对于普通开发者来说是一个非常有挑战的事情,因为这里涉及了很多数据库内核实现的细节,对于开发者来说,掌握基本的排查工具,了解尽可能多的不同SQL语句的数据库加锁方式是解决死锁问题的根本方法。

 

 

 

4架构阶段

 

 

数据库开发技能学习的最后一个阶段,笔者将其归结为架构阶段,在这个阶段中,我们需要站在一个更高的层次考虑数据库的可用性、可靠性、扩展性等方面的难题。在我们实际工作中,经常会听说某个系统不可用是因为数据库宕机,这也反映了数据库高可用的重要性。

 

在一个成熟的系统中,一定有一套完整的数据库高可用解决方案,目前业界已有的高可用方案包括基于复制的主从数据同步技术、MHA、DRBD、Galera、NDB等,各有利弊,关键还是要看具体的业务应用场景,选择合适的方案。例如,NDB 不适用于InnoDB存储引擎的数据库。这就需要我们对各个方案的利弊有一个清晰的了解,这是我们需要学习的。

 

 

 

 

*总结

 

 

总的来说,数据库开发的学习有几个特点。

 

首先,涉及知识点非常广泛,这就需要我们在学习过程中有一定的导向性,要带着问题学习,最好能够结合一个具体的工程实践项目,通过不断的学习,去解决项目过程中遇到的各种问题。

 

其次,数据库开发涉及的知识点非常有深度,很多都涉及到数据库的内核实现,这就需要我们不断的去学习和积累,多阅读一些数据库内核实现的相关资料。

 

最后数据库开发具有非常强的实践性,业界有非常多的优秀的开源工具和产品,需要大家多动手,多实践。

 

END

碧茂课堂精彩课程推荐:

1.Cloudera数据分析课;

2.Spark和Hadoop开发员培训;

3.大数据机器学习之推荐系统;

4.Python数据分析与机器学习实战;

详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

现在注册互动得海量学币,大量精品课程免费送!


https://dhexx.cn/news/show-3787647.html

相关文章

性能调整基础知识--摘自《Web性能测试实战》第一章

性能调整基础知识所谓性能调整是为了改变系统特性而对系统软件或者硬件进行的修改,性能调整不是测试人员的职责,性能测试工程师的主要任务是发现并定位性能问题。对于性能测试中发现的问题,通常由性能测试工程师、DBA、系统管理员、开发人员共…

大数据开发零基础需要学习什么内容?Storm实时开发

前面我们说到0基础学习大数据开发需要的Java基础、大数据基础和大数据技术学习的重点:Hadoop、Spark,今天继续来介绍大数据学习的重点之三:Storm实时计算。 Storm实时计算平台 (1)Storm简介: Storm是一个…

推荐一个正在发展的论坛--测试论坛中的《读者》

中国QA在线论坛(http://www.cnqa.cn/bbs/ )是由几个热爱软件测试事业的人士联合成立的论坛,其目的是把它做成一个像《读者》一样的精华文摘论坛,这样广大测试人员就可以快速找到精华资料,共同在一个好的论坛环境学习成长!论坛的创…

北京人均GDP破6000美元

北京人均GDP突破6000美元 住房汽车娱乐贡献稳增2007-01-25 00:14:17 来源: 中华工商时报  黑马推荐北京去年人均GDP突破6000美元,按北京常住人口1581万人计算,全市人均GDP达到49505元,按平均汇率折算为6210美元,按可比价格计算比…

HTML DIV+CSS 命名规范大全

END 碧茂课堂精彩课程推荐: 1.Cloudera数据分析课; 2.Spark和Hadoop开发员培训; 3.大数据机器学习之推荐系统; 4.Python数据分析与机器学习实战; 详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂 …

项目中的软件质量管理

项目中的软件质量管理本文发表于《软件世界》07年1月杂志,转载请注明。提起软件质量管理,人们更多地会想起ISO9001、CMM、CMMI这些“质量管理圣经”。但国内企业做了这么多年的质量认证,却没有使软件质量有大幅度地提高。实际上,很…

反思深度学习与传统计算机视觉的关系

如今,深度学习在众多领域都有一席之地,尤其是在计算机视觉领域。尽管许多人都为之深深着迷,然而,深网就相当于一个黑盒子,我们大多数人,甚至是该领域接受过培训的科学家,都不知道它们究竟是如何…

搭建Spring、Spring MVC、Mybatis和Freemarker

搭建Spring、Spring MVC、Mybatis和Freemarker 1、pom文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apach…

某公司盗用我的名字做虚假宣传

在2005年12月31日之前从Sun 中国技术社区下载中心&#xff08;http://gceclub.sun.com.cn/download.html&#xff09;下载NetBeans 4.1简体中文版并试用5 次以上的开发人员均会被自动加入Sun 中国技术社区的iPod抽奖名单。在2006年1 月1 日我们的系统会自动地从该名单中随机抽取…

《Pro ASP.NET MVC 3 Framework》学习笔记之八【Ninject的使用-上】

本次的笔记分为三个部分&#xff1a;Ninject(依赖注入容器&#xff0c;前面有介绍的&#xff0c;如果你第一次路过这里&#xff0c;可以先看下我前面的笔记)&#xff0c;NUnit(单元测试工具)&#xff0c;Moq(用来模拟在单元测试中的接口实现).今天我做的笔记是关于第一部分:Nin…