数据存储方式
计算机数据(Data)的存储一般以硬盘为数据存储空间资源,从而保证计算机内的数据能够持续保存。
采用数据库的管理模式不仅提供了数据的存储效率,而且在存储的层面上提高了数据的安全性,并方便查询
数据概念
描述事物的符 称为数据,是数据库中存储的基本对象,是按一定顺序排列组合的物理符 。数据有多种变现形式,可以为数字、文字、图像、图形、声音、语言等它们经过数字化后(经过进制转化为数字)存入计算机中。
数据的描述形式还不能完全表达其内容,需要经过解释,例如“20201678,王文,5300”,了解其含义的会得到信息为:工 为20201678的王文的工资为5300,而不了解的就不能理解其含义。所以数据和对数据的解释是不可分的
数据库
数据库就是一个存储数据的仓库(数据库至长期存储在计算机内的、有组织的、可共享的数据集合)
在生活中,每个人都在使用数据库。我们在电话簿里查找名字时,就是在使用数据库。在某个浏览器上进行搜索时,也是在使用数据库。
在计算机中,则要抽象出对这些事物感兴趣的特征,并组成一个记录来描述。
数据库的组成
数据库系统(Database System,DBS)由硬件和软件共同构成。数据库涉及到的技术,包括数据库系统、SQL 语言和数据库访问接口。
- 硬件主要用于存储数据库中的数据,包括计算机、存储设备等。
- 软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等。
- 数据库系统是指在计算机系统中引入数据库后的系统。完整的数据库系统结构关系如图所示:
由图可知,一个完整的数据库系统一般由数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户组成。
数据库系统主要有以下 3 个组成部分:
数据库:用于存储数据的地方。
数据库管理系统:用于管理数据库的软件。
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。
数据库管理系统的一些功能
- 数据定义功能:DBMS 提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。
- 数据操纵功能:DBMS 还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如查询、插入、删除和修改等。
-
数据库的运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。例如:
- 数据的完整性检查功能保证用户输入的数据应满足相应的约束条件;
- 数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据;
- 数据库的并发控制功能使多个用户可以在同一时刻并发地访问数据库的数据;
- 数据库系统的故障恢复功能使数据库运行出现故障时可以进行数据库恢复,以保证数据库可靠地运行。
-
提供方便、有效地存取数据库信息的接口和工具:编程人员可通过编程语言与数据库之间的接口进行数据库应用程序的开发。数据库管理员(Database Administrator,DBA)可通过提供的工具对数据库进行管理。
- 数据库管理员是维护和管理数据库的专门人员。
- 数据库的建立和维护功能:数据库功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监控、分析功能等。这些功能通常由一些使用程序来完成。
SQL语句
对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。
SQL 具有如下优点。
- 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
- 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java 等语言中使用。
- 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
-
语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。
SQL 包含以下 4 部分: - 数据定义语言(DDL):DROP、CREATE、ALTER 等语句。drop create alter
- 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。insert update delete
- 数据查询语言(DQL):SELECT 语句。 select
- 数据控制语言(DCL): GRANT、REVOKE、COMMIT、ROLLBACK 等语句。 grant revoke commit rollback
注意:SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性。大多数数据库都支持通用的 SQL 语句,同时不同的数据库具有各自特有的 SQL 语言特性。
数据库访问接口
不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。
主要的数据库访问接口主要有 ODBC、JDBC、ADO.NET 和 PDO。
- ODBC(Open Database Connectivity,开放数据库互连):为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作性。一个应用程序可以通过共同的一组代码访问不同的 SQL 数据库管理系统。
- 一个基于 ODBC 的应用程序对数据库的操作不依赖任何 DBMS,不直接与 DBMS 打交道,所有的数据库操作由对应的 DBMS 的 ODBC 驱动程序完成。也就是说,不论是 MySQL 还是 Oracle 数据库,均可用 ODBC API 进行访问。由此可见,ODBC 的最大优点是能以统一的方式处理所有的数据库。
- JDBC(Java Data Base,Java 数据库连接)用于 Java 应用程序连接数据库的标准方法,是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。
- ADO.NET是微软在 .NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET 提供了对关系数据、XML 和应用程序的访问,允许和不同类型的数据源以及数据库进行交互。
- PDO(PHP Data Object)为 PHP 访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO 是 PHP 5 新加入的一个重大功能。
数据库类型
DBMS(数据库管理系统)主要通过数据的保存格式进行分类,现阶段主要分为以下几种类型。分别是关系型数据库和非关系型数据库。
关系型数据库(Relational?Database,RDB)
关系型数据库是现在应用最广泛的数据库。关系型数据库在 1969 年诞生,可谓历史悠久。和 Excel 工作表一样,关系型数据库也采用由行和列组成的二维表来管理数据,所以简单易懂。同时,它还使用 SQL(Structured Query Language,结构化查询语言)对数据进行操作。
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
传统的关系型数据库采用表格的存储方式,数据以行和列的方式进行存储,要读取和查询都十分方便.
简单说,关系型数据库是由多张能互相连接的表组成的数据库。
- 优点
- 都是使用表结构,格式一致,易于维护。
- 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
- 数据存储在磁盘中,安全。
- 缺点
- 读写性能比较差,不能满足海量数据的高效率读写。
- 不节省空间。因为建立在关系模型上,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间。
-
固定的表结构,灵活度较低。
常见的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access 和 MySQL 等。
非关系型数据库
非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。
通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。
- 优点
- 非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。支持多种特殊格式,使用灵活,应用场景广泛,
- 速度快,效率高。 NoSQL 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
- 海量数据的维护和处理非常轻松。
- 非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。
- 可以实现数据的分布式处理。
- 缺点
- 非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。
- 非关系数据库没有事务处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。
- 功能没有关系型数据库完善。
常见的非关系型数据库类型有 面向文档,列存储,XML,键值存储数据库等。
具有代表性的非关系型数据库有,Neo4j、MongoDB、Redis、Memcached、MemcacheDB 和 HBase 等。
面向文档(Document-Oriented)数据库
文档型数据库的灵感来自于 Lotus Notes 办公软件,和最后一种键值存储数据库类似。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档的形式存储。每个文档都是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
列存储(Column-oriented)数据库
列存储数据库将数据存储存在列族(column family)中,一个列族用来存储经常被一起查询的相关数据。
- 例如,有一个 Person 类,我们经常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
列存储数据库通常用来应对分布式存储的海量数据。具有代表性的列存储数据库有 Cassandra 和 HBase。
XML 数据库(XML?Database,XMLDB)
XML 数据库是一种支持对 XML(标准通用标记语言下的一个应用)格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的 XML 文档进行查询、导出和指定格式的序列化。
键值存储数据库(Key-Value?Store,KVS)
键值存储数据库是用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。具有编程语言知识的读者可以把它想象成关联数组或者散列(hash)。
近年来,随着键值存储数据库被应用到 Google 等需要对大量数据进行超高速查询的 Web 服务当中,它正逐渐为人们所关注。
具有代表性的键值存储数据库有 Redis、Memcached 和 MemcachedDB
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表32963 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!