第一节课 主题: 自我介绍+经历+数据库的发展+同学们的认识
自我介绍
*
同学们好,我叫赵晓东,现在是一名Java工程师,目前薪资是24k14。
我是双学位 (建筑+计算机),目前已经考取软件工程师职称。
经历
进入大学的时候学习的是建筑,觉得建筑需要在工地,而且还需要应付人情世故,我又对计算机比较感兴趣,所以当时就选择了计算机。
但是我仍然没有放弃对建筑的学习,在大学的时候这个也都没有挂过科,而且在大学期间已经考取了软件工程师的证书。
同学们的认识
**
我想了解一下同学们,选5个同学做一下自我介绍,然后说一下自己对数据库,Java学习这方面的理解。
数据库的发展
数据库技术的发展历程
数据管理是指对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题。数据管理在应用需求推动下,以软硬件的飞速发展为基础,发展为三个阶段:人工管理、文件系统、数据库系统。
1、人工管理阶段:20世界50年代中期以前,计算机主要用于科学计算。硬件状况是:外存只有纸带、卡片、磁带,没有磁盘等直接存取的存储设备。
人工管理数据具有如下特点:
1)数据不保存
2)数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作
3)数据不共享
4)数据不具有独立性,数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,这就进一步加重了程序员的负担。
2、文件系统阶段:20世纪50年代后期到60年代中期,这时硬件方面已经有了磁盘、磁鼓等直接存取设备;软件方面,操作系统中已经有了专门的数据管理软件,一般称为文件系统。
人工管理数据具有如下特点:
1)数据不保存
2)数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作
3)数据不共享
4)数据不具有独立性,数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,这就进一步加重了程序员的负担。
3、数据库系统阶段:20世纪60年代后期以来,硬件已有大容量磁盘,硬件价格下降;软件价格上升,为编制和维护系统软件及应用程序所需的成本相对增加;在处理方式上,文件系统阶段特点为:
1)数据可以长期保存
2)由专门的软件即文件系统进行数据管理,程序和数据之间由软件提供的存取方法进行转换,使应用程序与数据之间有了一定的独立性,程序员可以不必过多地考虑物理细节,将精力集中于算法。
3)数据共享性差
4)数据独立性低联机实时处理要求更多,并开始提出和考虑分布式处理。
我们常见的数据库系统软件有哪些
**
目前互联网中常用的数据库管理系统有MySQL、ORACLE 、SQL Server PG 这几种
Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统,其主要特性为:
1、处理速度快,非常快。
2、安全级别高。支持快闪以及完美的恢复,即使硬件坏了 也可以恢复到故障发前一秒。
3、几台数据库做负载数据库,可以做到30s以内故障转移。
4、网格控制,以及 数据仓库方面 也非常强大。
MySQL
MySQL是一个小型关系型数据库管理系统,MySQL被广泛地应用在Internet上的中小型网站中,其特点有:
1、开放源码
2、高度非过程化
3、面向集合的操作方式
4、以一种语法结构提供多种使用方式
5、语言简洁,易学易用
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性)(consistency)、隔离性(isolation,又称独立性)、持久性(durability
关系型数据库和非关系型数据库
关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。
1.优点
(1).容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。
(2)使用方便,通用的sql语句使得操作关系型数据库非常方便。
(3)易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率
2.瓶颈**
(1 )海量数据的读写效率。
对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘I/o是一个很大的挑战。
(2) 高扩展性和可用性。
在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web Server那样简单的通过添加更多的硬件和服务节点来拓展性能和负载能力。
从关系型到非关系型
关系型数据库的最大优点就是事务的一致性,这个特性,使得关系型数据库中可以适用于一切要求一致性比较高的系统中。比如:银行系统。
但是在网页应用中,对这种一致性的要求不是那么的严格,允许有一定的时间间隔,所以关系型数据库这个特点不是那么的重要了。相反,关系型数据库为了维护一致性所付出的巨大代价就是读写性能比较差。而像微博、facebook这类应用,对于并发读写能力要求极高,关系型数据库已经无法应付。所以必须用一种新的数据结构存储来替代关系型数据库。所以非关系型数据库应用而生。
非关系型数据库:
NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。
NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。
分类
非关系数据库大部分是开源的,实现比较简单,大都是针对一些特性的应用需求出现的。根据结构化方法和应用场景的不同,分为以下几类。
(1)面向高性能并发读写的key-value数据库
主要特点是具有极高的并发读写性能,例如Redis、Tokyo Cabint等。
(2)面向海量数据访问的面向文档数据库
特点是,可以在海量的数据库快速的查询数据。例如MongoDB以及CouchDB.
(3)面向可拓展的分布式数据库
解决的主要问题是传统数据库的扩展性上的缺陷。
缺点
但是由于Nosql约束少,所以也不能够像sql那样提供where字段属性的查询。因此适合存储较为简单的数据。有一些不能够持久化数据,所以需要和关系型数据库结合。