javaweb程序开发入门pdf清华,附答案

文章探讨了结构化、非结构化和半结构化数据的区别,以及关系型数据库在高并发下面临的挑战。随着企业规模扩大,通过读写分离、分库分表等方式解决性能瓶颈,但仍有局限。文中提到了NoSql数据库(如Redis、ElasticSearch、HBase、MongoDB)的优势和适用场景,强调了不同数据库类型在特定业务需求下的选择。最后,指出选型应结合实际情况,适合的才是最好的。
摘要由CSDN通过智能技术生成

结构化数据、非结构化数据与半结构化数据

文章的开始,聊一下结构化数据、非结构化数据与半结构化数据,因为数据特点的不同,将在技术上直接影响存储引擎的选型。

首先是结构化数据,根据定义结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。例如:

因此关系型数据库完美契合结构化数据的特点,关系型数据库也是关系型数据最主要的存储与管理引擎。

非结构化数据,指的是数据结构不规则或不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现的数据,例如办公文档(Word)、文本、图片、HTML、各类报表、视频音频等。

介于结构化与非结构化数据之间的数据就是半结构化数据了,它是结构化数据的一种形式,虽然不符合二维逻辑这种数据模型结构,但是包含相关标记,用来分割语义元素以及对记录和字段进行分层。常见的半结构化数据有XML和JSON,例如:

<person>
    <name>张三</name>
    <age>18</age>
    <phone>12345</phone>
</person>

这种结构也被成为自描述的结构。

以关系型数据库的方式做存储的架构演进

首先,我们看一下使用关系型数据库的方式,企业一个系统发展的几个阶段的架构演进(由于本文写的是Sql与NoSql,因此只以存储方式作为切入点,不会涉及类似MQ、ZK这些中间件内容):

阶段一:企业刚发展的阶段,最简单,一个应用服务器配一个关系型数据库,每次读写数据库。

阶段二:无论是使用MySQL还是Oracle还是别的关系型数据库,数据库通常不会先成为性能瓶颈,通常随着企业规模的扩大,一台应用服务器扛不住上游过来的流量且一台应用服务器会产生单点故障的问题,因此加应用服务器并且在流量入口使用Nginx做一层负载均衡,保证把流量均匀打到应用服务器上。

阶段三:随着企业规模的继续扩大,此时由于读写都在同一个数据库上,数据库性能出现一定的瓶颈,此时简单地做一层读写分离,每次写主库,读备库,主备库之间通过binlog同步数据,就能很大程度上解决这个阶段的数据库性能问题

阶段四:企业发展越来越好了,业务越来越大了,做了读写分离数据库压力还是越来越大,这时候怎么办呢,一台数据库扛不住,那我们就分几台吧,做分库分表,对表做垂直拆分,对库做水平拆分。以扩数据库为例,扩出两台数据库,以一定的单号(例如交易单号),以一定的规则(例如取模),交易单号对2取模为0的丢到数据库1去,交易单号对2取模为1的丢到数据库2去,通过这样的方式将写数据库的流量均分到两台数据库上。一般分库分表会使用Shard的方式,通过一个中间件,便于连接管理、数据监控且客户端无需感知数据库ip

关系型数据库的优点

上面的方式,看似可以解决问题(实际上确实也能解决很多问题),正常对关系型数据库做一下读写分离 + 分库分表,支撑个1W+的读写QPS还是问题不大的。但是受限于关系型数据库本身,这套架构方案依然有着明显的不足,下面对利用关系型数据库方式做存储的方案的优点先进行一下分析,后一部分再分析一下缺点,对某个技术的优缺点的充分理解是技术选型的前提。

  • 易理解

因为行 + 列的二维表逻辑是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型更加容易被理解

  • 操作方便

通用的SQL语言使得操作关系型数据库非常方便,支持join等复杂查询

  • 数据一致性

支持ACID特性,可以维护数据之间的一致性,这是使用数据库非常重要的一个理由之一,例如同银行转账,张三转给李四100元钱,张三扣100元,李四加100元,而且必须同时成功或者同时失败,否则就会造成用户的资损

  • 数据稳定

数据持久化到磁盘,没有丢失数据风险,支持海量数据存储

  • 服务稳定

最常用的关系型数据库产品MySql、Oracle服务器性能卓越,服务稳定,通常很少出现宕机异常

关系型数据库的缺点

紧接着的,我们看一下关系型数据库的缺点,也是比较明显的。

  • 高并发下IO压力大

数据按行存储,即使只针对其中某一列进行运算,也会将整行数据从存储设备中读入内存,导致IO较高

  • 为维护索引付出的代价大

为了提供丰富的查询能力,通常热点表都会有多个二级索引,一旦有了二级索引,数据的新增必然伴随着所有二级索引的新增,数据的更新也必然伴随着所有二级索引的更新,这不可避免地降低了关系型数据库的读写能力,且索引越多读写能力越差。有机会的话可以看一下自己公司的数据库,除了数据文件不可避免地占空间外,索引占的空间其实也并不少

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《JavaWeb程序开发入门》是由传智播客出版的一本介绍JavaWeb开发的教程,主要面向初学者。这本教程详细介绍了JavaWeb开发的基本概念、常用技术和实践方法。 首先,这本教程提供了JavaWeb开发的基础知识。它介绍了JavaWeb开发的基本原理,如Servlet、JSP等技术的概念和使用方法。它还讲解了JavaWeb开发中的MVC架构模式,帮助读者理解Web应用程序的组织和开发方式。 第二,教程介绍了JavaWeb开发中常用的技术和工具。例如,它讲解了如何使用JavaWeb开发中常用的框架,如Struts、Spring和Hibernate。同时,它还介绍了JavaWeb开发中的数据库设计和访问技术,如MySQL和JDBC等。 第三,教程提供了大量的实例和案例。通过这些实例,读者可以学习如何搭建一个完整的JavaWeb应用程序,包括前端页面的设计和开发,后端业务逻辑的实现以及数据库的设计和使用。 总的来说,《JavaWeb程序开发入门》是一本适合初学者学习JavaWeb开发的教材。它清晰地介绍了JavaWeb开发的基本原理和常用技术,通过实例的演示,帮助读者掌握JavaWeb开发的基本技能。这本教程简洁明了,容易理解,是学习JavaWeb开发的好选择。 ### 回答2: javaweb程序开发入门指的是学习使用Java语言开发Web应用程序的基础知识和技能。而传智播客是一个培训机构,有提供相关的教材,其中也包括了javaweb开发的PDF版本文档。 对于想要学习javaweb开发的人来说,传智播客的PDF文档是一种非常便利的学习资源。这些文档涵盖了javaweb开发的各个方面,包括基础的Java编程语法、常用的开发工具和框架、数据库的使用和设计以及常用的服务器配置等内容。它们提供了一个系统的学习路径,帮助学习者逐步了解和掌握javaweb开发的基本知识和技巧。 通过传智播客的PDF文档,学习者可以按照自己的进度和需求,有针对性地学习相关知识。这些文档也可以很好地配合传智播客的课程使用,帮助学员更好地理解和应用所学知识。 总的来说,传智播客的javaweb开发入门PDF文档是一种非常有用的学习资源,可以帮助初学者系统地学习javaweb开发,并为他们打下坚实的基础。 ### 回答3: 传智播客的Javaweb程序开发入门PDF是一本很受欢迎的教材,对于想要学习Javaweb开发的初学者来说,是一本很好的资源。这本PDF全面介绍了Javaweb的基础知识、开发环境搭建、Servlet、JSP、数据库操作等内容,几乎涵盖了Javaweb开发的方方面面。 在这本PDF中,你将学习到如何搭建Javaweb开发环境,包括下载和安装Java JDK、Eclipse IDE、Tomcat服务器等。之后,你将学习到Servlet的基本概念和使用方法,如何处理HTTP请求和响应,如何使用Servlet来编写后台逻辑代码等。接下来,你将学习到JSP的基础知识,包括JSP的语法、常用标签和表达式的使用方式等。在学习这些基础知识之后,你将学习到如何使用JDBC进行数据库操作,包括连接数据库、执行SQL语句、处理结果集等。 通过阅读这本PDF,你将对Javaweb程序开发的整个流程和步骤有一个全面的了解,并能够独立地开发简单的Javaweb应用程序。当然,这只是入门级别的学习资源,如果你希望进一步深入学习Javaweb开发,还需要进一步学习其他相关的知识,如框架的使用、前端开发等等。 总的来说,传智播客的Javaweb程序开发入门PDF是一本很好的学习资源,对于初学者来说是入门的重要材料。希望通过学习这本PDF,你能够对Javaweb开发有一个良好的基础认识,并能够进一步深入学习和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值