一.数据库的简单认识

1.数据库

1.数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、

  截取、更新、删除等操作。所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

  

2.数据库管理系统(DBMS)

    数据库系统有3个主要的组成部分:

      数据库:用于存储数据的地方

      数据库管理系统:用于管理数据库的软件

      数据库应用程序: 为了提高数据库系统的处理能力所使用的管理数据库的软件补充.

  (英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它

所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能

冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。

         

二.数据库分类

  目前的数据库可以分为两个大类:关系型数据库和非关系型数据库

1.关系型数据库(RDBMS)

  解释:关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式,不是excel,但是和excel的形式很像

oracle数据库
Oracle前身叫SDL、由Larry Ellison和两个变成任意在1977创办,他们开发了主机的拳头产品,在市场上大量销售。Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二 。
Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商
主要应用范围:传统大企业、大公司、政府、金融、证券等。
版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c MySQL
MySQL被广泛的应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,开放源代码 MariaDB数据库
MAriaDB数据库管理系统是MySQL数据库的一个分支,主要由开元社区维护,采用GPL授权许可。开发这个MariaDB的原因之一是:甲骨文公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采用分支的方式来避开这个风险。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使用了Percona的XtraDB(InnoDB的变体)这个版本还包括了PrimeBase XT (PBXT)和Federated X存储引擎。 SQL Server数据库
Microsoft SQL Server是微软公司开发的大型关系数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Winodws操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都得到较大的提升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构。SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行
Access数据库
Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型企业只用
Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007,其特点主要如下:
(1)完善地管理各种数据库对象,具有强大的数据组织,用户管理、安全检查等功能
(2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户管理系统具有传统的XSASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具备了许多先进的大型数据管理管理系统所具备的特征。
(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表
(4)作为Office套件的一部分,可以与Office集成,实现无缝连接
(5)能够利用Web检索和发布数据,实现与Internet的连接,Access主要适用于中小企业应用系统,或作为客户机/服务器系统中的客户端数据库。 其他不常用关系型数据库 DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到

常见的关系型数据库介绍

  操作关系型数据库的命令,我们称之为SQL--- 结构化查询语句

    结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用

结构化查询语句介绍

  SQL包含4个部分:

    1.数据定义语言(DDL):DROP, CREATE, ALTER 等

    2.数据操作语言(DML):INSERT(插入),UPDATE(修改),DELETE(删除)语句

    3.数据查询语言(DQL):SELECT 语句

    4.数据控制语言(DCL):GRANT,REMOVE,COMMIT,ROLLBACK等

  最后强调一点,不同数据库系统之间的SQL不能完全相互通用.(mysql,sql server这些系统之间的语句并不通用)

2.非关系型数据库

  非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL”

  指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的

场景下可以发挥出难以想象的高效率和高性能。随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微

博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。

  例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据

就是在这样的情景下诞生并得到了非常迅速的发展

  高性能、高并发、对数据一致性要求不高

  开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧

  NOSQL非关系型数据库小结:

    1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充

    2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能

    3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)

(1)键值(Key-Value)存储数据库

        键值数据库就类似传统语言中使用哈希表,可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性
键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发
k1—>数据
k2—>数据
典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB (2)列存储(Column-oriedted)数据库 ======>了解即可,一般公司用不到
这部分数据库通常用来分布式存储的海量数据,键仍然存在,但是他们的特点是指向了多个列。
典型产品:Cassandra,HBase (3)面向文档(Document-Oriented)数据库
面向文档数据库会将以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关系对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储
典型产品:MorgoDB、CouchDB (4)图形(Graph)数据库

非关系型数据库的四种分类

常见的非关系型数据库:

memcached(key-value)
  Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名。
缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取块很多,前者是内存,后者是磁盘、Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。
  官网:http://memcached.org/
  由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能力、持久化数据能力和分布式复制能力,memcached非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代如Redis   Memcached小结:
  1、key-value行数据库
  2、纯内存数据库
  3、持久化memcachedb(sina) Redis(key-value)
和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。
  redis是一个高性能的key-value数据库。redis的出现、很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用方便。
  官方:http://www.redis.io/documentation
  redis特点:
  1)支持内存缓存,这个功能相当于memcached
  2)支持持久化存储,这个功能相当于memcachedb,ttserver
  3)数据库类型更丰富。比其他key-value库功能更强
  4)支持主从集群、分布式
  5)支持队列等特殊功能
  应用:缓存从存取memcached更改存取redis MongoDB(Document-oriented)   MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。他支持的数据库结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。   特点:
    高性能、易部署、易使用、存储数据非常方便
  主要功能特性:     1.面向集合存储,易存储对象类型的数据
    2.“面向集合”(Collenction-Orented)意思是数据库被分组存储在数据集中,被称为一个集合(Collenction)每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档,集合的概念类似关系型数据库(RDBMS)里的表(table)不同的是它不需要定义任何模式(schema)
    3.模式自由
      模式自由(schema-free)意为着存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。
    4.支持动态查询
    5.支持完全索引,包含内部对象
    6.支持查询
    7.支持复制和故障恢复
    8.使用高效的二进制数据存储,包括大型对象
    9.自动处理碎片、以支持云计算层次的扩展性 Cassandra(Column-oriented)
  Apache Cassndra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。
主要特点:
  1.分布式
  2.基于column的结构化
  3.高伸展性
  4.Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作。也会被路由到某个节点上面去读取。
  Cassandir是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomie(分布式的key-value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。 其他不常用非关系型数据库
  HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver)
  ttserver 持久化输出,缺点存储2千万条 性能下降(由日本人发明)

常见的非关系型数据库介绍

 三.数据库访问接口

1.ODBC

  Open Data Connectivity (ODBC, 开放数据库互联) 技术为访问不同的SQL数据库提供了一个共同的接口.ODBC使用SQL作为访问数据的标准.这一借口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统

2.JDBC

  Java Data Base Connectivity(JDBC, Java数据库连接) 用于Java应用程序连接数据库的标准方法,使用中用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成

3.ADO.NET

  ADO.NET 是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库.它提供了对关系数据,XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互

4.PDO

  PDO(PHP Data Object) 为PHP 访问数据库定义了一个轻量级的,一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据.PDO 是PHP5 新加入的功能

  不同的程序语言,MySQL提供了不同数据库的访问连接驱动.

最新文章

  1. tornado--SESSION框架,一致性hash,分布式存储
  2. HT For Web 拓扑图背景设置
  3. 茎叶图(stem)
  4. 【Codeforces 723B】Text Document Analysis 模拟
  5. Android课程---首学开发
  6. magic_quotes_gpc 、 magic_quotes_runtime 、 magic_quotes_sybase 介绍
  7. JSP页面中 <base href="<%=basePath%>">
  8. 【翻译】Kinect v2程序设计(C++) Body 篇
  9. for循环、for循环嵌套
  10. POJ 3660 Cow Contest(传递闭包floyed算法)
  11. CentOS minimal版安装图形界面的步骤(自动获取IP)
  12. 用WebStorm创建Express项目时出现:express version is unavailable
  13. Java课程设计——GUI密码生成器团队博客
  14. python 全栈开发,Day3(正式)
  15. Flask 扩展 国际化 本地化
  16. 包建强的培训课程(13):iOS与ReactNative
  17. Python 协程并发爬虫网页
  18. Py中axis理解【转载】
  19. Nginx缓存配置以及nginx ngx_cache_purge模块的使用
  20. WPF用户控件库 嵌入外部(VLC)exe

热门文章

  1. easyui制作进度条案例demo
  2. 关于javascript中的typeof和instanceof介绍
  3. mybatis相对于ibatis的优势
  4. 在浏览器输入URL后发生了什么?
  5. 规则引擎以及blaze 规则库的集成初探之二——JSR94 的规则引擎API和实现
  6. maven的pom报plugins缺失的解决方法
  7. Controller和View传递数据的几种方式
  8. 多线程中,ResultSet为空,报错空指针
  9. jQuery插件Highcharts
  10. 使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理