sql数据库基础知识笔记?sql数据库基础知识
大家好,今天来为大家解答sql数据库基础知识笔记这个问题的一些问题点,包括sql数据库基础知识也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
一份难得的数据库市场分析报告
目录
-数据库分类维度:关系型/非关系型、交易型/分析型
- NoSQL数据库的进一步分类
- OLTP市场规模:关系型数据库仍占营收大头
-数据库市场份额:云服务和新兴厂商主导NoSQL
-开源数据库 vs.商业数据库
-数据库三大阵营:传统厂商和云服务提供商
最近由于时间原因我写东西少了,在公众号上也转载过几篇搞数据库朋友的大作。按说我算是外行,没资格在这个领域品头论足,而当我看到下面这份报告时立即产生了学习的兴趣,同时也想就能看懂的部分写点心得体会分享给大家。
可能本文比较适合普及性阅读,让数据库领域资深的朋友见笑了:)
数据库分类维度:关系型/非关系型、交易型/分析型
首先是分类维度,上图中的纵轴分类为Relational Database(关系型数据库,RDBMS)和Nonrelational Database(非关系型数据库,NoSQL),横轴的分类为Operational(交易型,即OLTP)和Analytical(分析型,即OLAP)。
按照习惯我们先看关系型数据库,左上角的交易型类别中包括大家熟悉的商业数据库Oracle、MS SQL Server、DB2、Infomix,也包括开源领域流行的MySQL(MariaDB是它的一个分支)、PostgreSQL,还有云上面比较常见的SQL Azure和Amazon Aurora等。
比较有意思的是,SAP HANA正好位于交易型和分析型的中间分界处,不要忘了SAP还收购了Sybase,尽管后者今天不够风光了,而早年微软的SQL Server都是来源于Sybase。Sybase的ASE数据库和分析型Sybase IQ还是存在的。
右上角的分析型产品中包括几款知名的列式数据仓库Pivotal Greenplum、Teradata和IBM Netezza(已宣布停止支持),来自互联网巨头的Google Big Query和Amazon RedShift。至于Oracle Exadata一体机,它上面运行的也是Oracle数据库,其最初设计用途是OLAP,而在后来发展中也可以良好兼顾OLTP,算是一个跨界产品吧。
再来看非关系型数据库,左下角的交易型产品中,有几个我看着熟悉的MongoDB、Redis、Amazon DynamoDB和DocumentDB等;右下角的分析型产品包括著名的Hadoop分支Cloudera、Hortonworks(这2家已并购),Bigtable(来自Google,Hadoop中的HBase是它的开源实现)、Elasticsearch等。
显然非关系型数据库的分类要更加复杂,产品在应用中的差异化也比传统关系型数据库更大。Willian Blair很负责任地对它们给出了进一步的分类。
NoSQL数据库的进一步分类
上面这个图表应该说很清晰了。非关系型数据库可以分为Document-based Store(基于文档的存储)、Key-Value Store(键值存储)、Graph-based(图数据库)、Time Series(时序数据库),以及Wide Cloumn-based Store(宽列式存储)。
我们再来看下每个细分类别中的产品:
文档存储:MongoDB、Amazon DocumentDB、Azure Cosmos DB等
Key-Value存储:Redis Labs、Oracle Berkeley DB、Amazon DynamoDB、Aerospike等
图数据库:Neo4j等
时序数据库:InfluxDB等
WideCloumn:DataStax、Cassandra、Apache HBase和Bigtable等
多模型数据库:支持上面不只一种类别特性的NoSQL,比如MongoDB、Redis Labs、Amazon DynamoDB和Azure Cosmos DB等。
OLTP市场规模:关系型数据库仍占营收大头
上面这个基于IDC数据的交易型数据库市场份额共有3个分类,其中深蓝色部分的关系型数据库(RDBMS,在这里不统计数据挖掘/分析型数据库)占据80%以上的市场。
Dynamic Database(DDMS,动态数据库管理系统,同样不统计Hadoop)就是我们前面聊的非关系型数据库。这部分市场显得小(但发展势头看好),我觉得与互联网等大公司多采用开源+自研,而不买商业产品有关。
而遵循IDC的统计分类,在上图灰色部分的“非关系型数据库市场”其实另有定义,参见下面这段文字:
数据库市场份额:云服务和新兴厂商主导NoSQL
请注意,这里的关系型数据库统计又包含了分析型产品。Oracle营收份额42%仍居第一,随后排名依次为微软、IBM、SAP和Teradata。
代表非关系型数据库的DDMS分类中(这里同样加入Hadoop等),云服务和新兴厂商成为了主导,微软应该是因为云SQL Server的基础而小幅领先于AWS,这2家一共占据超过50%的市场,接下来的排名是Google、Cloudera和Hortonworks(二者加起来13%)。
上面是IDC传统分类中的“非关系型数据库”,在这里IBM和CA等应该主要是针对大型机的产品,InterSystems有一款在国内医疗HIS系统中应用的Caché数据库(以前也是运行在Power小机上比较多)。我就知道这些,余下的就不瞎写了。
开源数据库 vs.商业数据库
按照流行度来看,开源数据库从2013年到现在一直呈现增长,已经快要追上商业数据库了。
商业产品在关系型数据库的占比仍然高达60.5%,而上表中从这列往左的分类都是开源占优:
Wide Cloumn:开源占比81.8%;
时序数据库:开源占比80.7%;
文档存储:开源占比80.0%;
Key-Value存储:开源占比72.2%;
图数据库:开源占比68.4%;
搜索引擎:开源占比65.3%
按照开源License的授权模式,上面这个三角形越往下管的越宽松。比如MySQL属于GPL,在互联网行业用户较多;而PostgreSQL属于BSD授权,国内有不少数据库公司的产品就是基于Postgre哦。
数据库三大阵营:传统厂商和云服务提供商
前面在讨论市场份额时,我提到过交易型数据库的4个巨头仍然是Oracle、微软、IBM和SAP,在这里William Blair将他们归为第一阵营。
随着云平台的不断兴起,AWS、Azure和GCP(Google Cloud Platform)组成了另一个阵营,在国外分析师的眼里还没有BAT,就像有的朋友所说,国内互联网巨头更多是自身业务导向的,在本土发展公有云还有些优势,短时间内将技术输出到国外的难度应该还比较大。(当然我并不认为国内缺优秀的DBA和研发人才)
第三个阵容就是规模小一些,但比较专注的数据库玩家。
接下来我再带大家简单过一下这前两个阵容,看看具体的数据库产品都有哪些。
甲骨文的产品,我相对熟悉一些的有Oracle Database、MySQL以及Exadata一体机。
IBM DB2也是一个庞大的家族,除了传统针对小型机、x86(好像用的人不多)、z/OS大型机和for i的版本之外,如今也有了针对云和数据挖掘的产品。记得抱枕大师对Informix的技术比较推崇,可惜这个产品发展似乎不太理想。
微软除了看家的SQL Server之外,在Azure云上还能提供MySQL、PostgreSQL和MariaDB开源数据库。应该说他们是传统软件License+PaaS服务两条腿走路的。
如今人们一提起SAP的数据库就想起HANA,之前从Sybase收购来的ASE(Adaptive Server Enterprise)和IQ似乎没有之前发展好了。
在云服务提供商数据库的3巨头中,微软有SQL Server的先天优势,甚至把它移植到了Linux拥抱开源平台。关系型数据库的创新方面值得一提的是Amazon Aurora和Google Spanner(也有非关系型特性),至于它们具体好在哪里我就不装内行了:)
非关系型数据库则是Amazon全面开花,这与其云计算业务发展早并且占据优势有关。Google当年的三篇经典论文对业界影响深远,Yahoo基于此开源的Hadoop有一段时间几乎是大数据的代名词。HBase和Hive如今已不再是人们讨论的热点,而Bigtable和BigQuery似乎仍然以服务Google自身业务为主,毕竟GCP的规模比AWS要小多了。
最后这张DB-Engines的排行榜,相信许多朋友都不陌生,今年3月已经不是最新的数据,在这里列出只是给大家一个参考。该排行榜几乎在每次更新时,都会有国内数据库专家撰写点评。
以上是我周末的学习笔记,班门弄斧,希望对大家有帮助。
参考资料《Database Software Market:The Long-Awaited Shake-up》
扩展阅读:《数据库&存储:互相最想知道的事》
尊重知识,转载时请保留全文。感谢您的阅读和支持!
jsp中用于加载数据库驱动的接口是
JDBC由Sun公司制定,全称Java DataBase Connectivity,是一种可以执行SQL语句并可返回结果的Java API,支持多种关系型数据库,封装在java.sql.*
它的具体位置在\jre7\lib\rt.jar
1、JDBC的工作原理
JDBC的最大特点是独立于具体的关系型数据库,它定义了一系列的Java类,完成数据库连接(Connections)、SQL语句(Statements)、结果集(ResultSet)和其他的数据库对象,从而达到Java程序和数据库交互的目的
2、JDBC的四种驱动类型
在Java程序中,JDBC可以分为以下4种驱动类型:
(1)JDBC-ODBC Bridge
用JDBC-ODBC Bridge可以访问一个ODBC数据源,但在执行Java程序的机器上必须安装ODBC驱动,并完成配置
可以看出,中间存在一个JDBC-ODBC的转换,影响了执行的效率
(2)JDBC Native Bridge
这种方式需要在执行JSP程序的机器上安装本地的针对特定数据库(MySQL/SQL/Oracle)的驱动程序,通过这个程序把对数据库的JDBC调用转化为数据库的API调用,性能比JDBC-ODBC更好,缺点是要安装驱动
(3)JDBC-Network Bridge
这种方式不需要安装驱动程序,直接用JDBC通过网络连接数据库,与平台无关,所以在WEB开发中大量使用
(4)Pure Java JDBC Driver
Java驱动程序运行在客户端,客户端可以直接访问数据库,其体系结构最为简单,因此安全性及程序的逻辑性不行
3、JDBC连接数据库(以mysql为例)
(1)加载JDBC驱动程序
通过java.lang.Class类中的静态方法forName实现
(2)提供JDBC连接的URL
协议:子协议:数据源标识
其中,协议:在JDBC中总是以jdbc开始
子协议:是Bridge的驱动程序或是数据库管理系统名称,如MySQL就是mysql,常用的端口号是3306
数据源标识:标记找出数据源的地址和连接接口
(3)创建数据库的连接
向java.sql.DriverManager请求获取Connection对象
(4)创建Statement
其中Statement分为三类,区别如下:
A、执行静态SQL:通过Statement实例实现
B、执行动态SQL:通过PreparedStatement实例实现
C、执行数据库存储过程:通过CallableStatement实例实现
(5)执行SQL语句,完成数据库的增删改或是查询功能
其中Statement接口提供了三种执行SQL语句的方法,区别如下:
A、Result executeQuery(String sqlString):用于查询数据库的SQL,如SELECT,返回一个结果集(ResultSet)
B、int executeUpdate(String sql):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL(数据定义)语句
C、boolean execute(String sql):用于返回多个结果集、多个更新计数或者二者组合(不太懂)
(6)得到处理结果(ResultSet)
(7)关闭JDBC对象
先关闭Statement再关闭Connection连接
参考文献:
1、邓子云,《JSP网络编程从基础到实践》(第2版)
2、邱加永,孙连伟,《JSP基础与案例开发详解》
3、谭贞军,《深入理解Java Web开发技术:探索基于主流框架的最佳组合》
文章知识点与官方知识档案匹配
Java技能树使用JDBC操作数据库JDBC概述
84644人正在系统学习中
打开CSDN,阅读体验更佳
jsp学习笔记之JDBC原理及其使用_地球是圆嘀的博客
java项目的导包方式与javaweb项目的导包方式不一样 java项目:1.jar复制到工程这种 2.右键jar:build path 3.add external jars javaweb项目 1.jar项目复制到WEB-INF的lib中核心:将java中的JDBC代码,复制到JSP中的<%%>...
JSP原理、使用_lpw666_的博客
JDBC固定步骤:事务 Junit单元测试搭建一个环境,事务回滚 1、JSP 1.1、什么是JSP Java Server Pages: Java服务器端页面,也和Servlet一样,用于动态Web技术!最大的特点:写JSP就像在写HTML...
关键技术——JSP与JDBC应用详解(电子版)
本书详细讲解了JSP和JDBC内容,适合Java开发人员使用,也是Java开发人员必须掌握的知识
java连接数据库——JSP实现JDBC
前两个是java连接数据库的典型方式,虽然除了JDBC还有odbc的方式,但odbc的效率和跨平台都不理想,所以现在的趋势就是使用JDBC来连接需要的数据库(我以MySQL为例),这节将介绍JSP中如何实现连接数据库,其实原理都一样,只是技术不同,建议在看本节知识的时候,以及对JSP技术和前端知识有一定的了解,要不然,或许不好理解。以下是代码:<%@ page language="...
继续访问
JDBC详解_IT__learning的博客_jdbc
三、JDBC工作原理 1、装载驱动程序 JDBC中规定,驱动类在被加载时,需要自己“主动”把自己注册到 DriverManger中。com.mysql.jdbc.Driver类的源代码如下:通过以上源码可知我们注册驱动的时候只是 new了自己,也就是 Driver。既然...
jsp学习 jdbc访问数据库_黑猫猫琉璃的博客
Connection root= DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp","root","123456"); 3、创建sql会话对象preparedStatement(注意这个动态的preparedStatement类它的父类其实是Statement)...
最新发布 jdbc的原理示意图和模拟实现
本次博客带领大家学习JDBC的原理示意图和模拟实现。
继续访问
jsp,servlet,类,jdbc项目运行原理以及最开始打开的页面需要传递数据时的处理
实现一个web项目时,显示主要靠的是html页面,这属于静态显示。而动态显示就需要用到jsp页面。静态页面间的跳转主要是通过a标签,而动态页面跳转也是通过a标签,但是需要传递数据。当然也可以通过表单的提交。页面呢,也分为传递数据的页面和接收数据的页面。传递数据的页面呢,是通过a标签后面携带的参数跳转到需要接收数据的页面以保证接收数据的页面动态的数据显示,或者通过表单提交的对应servl...
继续访问
JavaWeb——JSP原理剖析和执行过程_万里顾—程的博客
JavaWeb——JSP原理剖析 1.什么是JSP JSP(Java Server Pages):Java服务器端页面,和Servlet一样,是一种动态网页开发技术。 JSP是一种Java servlet,基于Java Servlet API因此,JSP拥有各种强大的企业级Java API,包括JDBC, JNDI(Java Na...
jdbc连接mysql原理_JDBC原理浅析_月塔的博客
五.详解JDBC原理:<1>.结构: DriverManager(是一工厂实现类,用了工厂方法模式)| Dirver(是驱动程序对象的接口,指向具体数据库驱动程序对象=DriverManager.getDriver(String URL))|
JSP中操作数据库的三个对象:Statement、PreparedStatement、CallableStatement
1、创建 Statement对象建立了到特定数据库的连接之后,就可用该连接发送 SQL语句。Statement对象用 Connection的方法 createStatement创建,如下列代码段中所示: Connection con= DriverManager.getConnection(url,"sunny",""); Statement stmt= con.c
继续访问
JSP访问数据库
JSP访问数据库内容介绍
继续访问
Java中原生操作JDBC连接及原理_架构潜行之路的博客_java原生j...
JDBC全称又叫做Java DataBase Connectivity,也就是Java数据库连接,说白了就是用Java语言来操作数据库,提供统一API访问数据库操作。二、原理 JDBC主要是用于java连接数据库的,能连接什么数据库不固定,其实能连接很多种数据库,而且一般来...
JDBC编程的三个接口
JDBC编程的Connention接口,Statement接口和ResulSet接口,JDBC编程一个简单的查询过程
继续访问
3-JSP+JDBC数据库应用开发初步(二)
一、JSP+Servlet+JDBC开发数据库应用上一讲“JSP+JDBC数据库应用开发初步”中,我们给出了一个小例子,采用JSP页面来处理用户的登录请求。本讲中,我们将该JSP页面替换为Servlet来处理用户登录请求。实验步骤如下:用户登录页面仍然采用原来的login.jsp页面,只需要把form表单的action方法修改为Servlet的url即可,其它不变。资源页面也仍然采用resource.jsp不变,注意:该页面需要读取session中保存的用户名,若存在,则说明用户登录成功,可以显示
继续访问
java、jdbc、jsp……的简单解释
java版本 1. J2ME,功能有限,用于嵌入式设备。 2. J2SE,包含原始的核心类库,用于桌面应用程序和浏览器中的applet 3. J2EE,功能非常全面,用于数据处理和处理器端应用 J2EE功能非常的全面,那就看看它的工作模式图: JDBC是什么?它是为java开发人员提供了一个行业标准API,可以在java应用与关系数据库之间建立起独立于数据库的连接,A...
继续访问
JSP基础(十二)——初步认识JDBC
与数据库交互是Web应用程序的一个重要的组成部分,JSP使用JDBC(Java DataBase Connectivity)技术来实现与数据库的连接。JDBC提供了JSP操作数据库的各种接口,所以JDBC数据库编程对Web开发是非常重要的。很多DBMS(数据库管理系统)都提供JDBC驱动程序,JSP可以直接利用它访问数据库,有些DBMS没有提供JDBC驱动程序,JSP可以通过Sun公司的JDBC-
继续访问
JDBC在jsp中的使用
今天在学习JDBC在jsp中的应用时遇到了一些问题,解决后记录一下,希望对其他人能有帮助。默认读者具有一定的jsp和数据库知识,所以对这两者不做介绍,本文主要是解决按照书上的代码敲出来最后却不能得到想要的结果的问题。第一步,导包导入需要的包,例如java.sql.* java.io.*第二步,加载数据库驱动大家为了更好的记忆操作步骤,不要每次建立数据库连接时都要找资料,我们应该了解每一步都是为了达到什么目的,例如现在的加载数据库驱动,可能有人会问?什么是数据库驱动呢?数据库驱动是不
继续访问
JDBC,数据库与jsp的连接
JDBC技术的出现为何会出现JDBC?对于我们的数据来说,都是具有时效性的,而有些数据是需要长久的保存下去,但是单单jsp并不能做到长久保存,因此我们需要将其保存在专门储存在数据库中,而jsp再次使用此数据的时候需要调用,因此就需要有一个中间的桥梁将数据库与jsp连接起来。但是最开始只有OBDC,OBDC是C语言开发的,主要再Windows环境中使用,如果用其他语言开发应用程序还需要其他中介的API和OBDC做沟通链接,这是很复杂的事。因此JDBC应运而生,这是专门针对Java和数据库连接技术,使得开发人
继续访问
JSP+JDBC连接数据库
首先在创建项目时,要连接数据库,要将jar包导入项目(这只是方式之一,还有其他的方式实现同样的效果)将jar包放在WEB-INF/lib目录下,然后右键,点击Build Path→Add to Build Path将其添加到项目的Libraries中,然后在JSP页面中头部添加如下代码<%@page import="java.sql.*"%>即图中所示:接下来就可以打代码了。数据库的连接//1.获取Driver实现类的对象 Class.forName("com.mysql.
继续访问
JSP和JDBC的使用
查询数据<%@ page import="java.sql.*"%><%@ page contentType="text/html;charset=UTF-8" language="java"%><html><head><title>Title</title></head><body><!DOCTYPE html><html lang="en">
继续访问
认识JSP连接数据库原理
昨天有人来问JSP用jdbc连接数据库的两种方式,我懵了,才发现自己真的烂到家了,连这个都不知道,只会按网上说的方法写代码,根本就不懂原理,我需要知道原理。从网上查到一些说法,我综合整理了一下得出一些结论:有人说JSP网站连接数据库有4种类型: [1]JDBC-OD
继续访问
关于Java Web的Servlet+JDBC(封装)+JSP的登录(送给入门的你)
关于Java Web的Servlet+JDBC(封装)+JSP的登录(送给入门的你)
JDBC与JSP初识
主要内容:-JDBC三层架构进行组织后台代码-JSP初识-在页面展示表中数据-在页面输入数据并处理数据课堂参考代码: 1、后台代码:(1)cn.sdut.dao. BaseDao.javapackage cn.sdut.dao; import java.sql.Connection; import java.sql.DriverManage
继续访问
初学JSP与JDBC(mysql数据库)
之前一直不知道jsp怎么和数据库连接,后来看了大神的博客以及看书大概知道了一些。 1.下好jdbc的包。见链接。把下载好的包放在tomcat的lib文件夹下面,然后建立一个web工程导入这个包。->build path->configure build path->然后就导入成功了。我用的是mysql数据库。(数据库方面我就不多做解释,不懂的可以去查一查。) 2.JDB
继续访问
关于jsp+jdbc的简单实例
在页面显示所查数据库的内容,以表格形式显示<%@page import="java.util.ArrayList"%><%@page import="java.util.List"%><%@page import="java.sql.ResultSet"%><%@page import="java.sql.SQLException&q
继续访问
JSP——JDBC相关
参考博客: JDBC中常用的类和接口: 1、驱动程序管理类:DriverManager这个类是很重要的一个类,使用的频率也是比较高的,对于一般程序员来说用的最多的一个方法就是Drivermanager.getConnection
OK,关于sql数据库基础知识笔记和sql数据库基础知识的内容到此结束了,希望对大家有所帮助。