一-认识数据库

前言

数据库 Database,简称BD

数据分类:

  • 狭隘:数值数据
  • 广义:文字、声音、图形等一切能被计算机接受且处理的

数据库–用来存储数据的仓库,方便检索与访问

数据库特点–保持数据信息一致、完整,共享和安全,通过组合分析产生新的有用信息。

数据库管理系统(软件)–管理大量、持久、可靠、共享的数据的工具。

数据库是什么?

数据库是按照某种组织结构存储数据的仓库。(记录书上2p)

数据库组成:

数据库就是“数据”的“仓库”

  • 表、关系、操作对象

  • 数据存在表中

数据库的发展:

  • 1、人工阶段
  • 2、文件系统阶段
  • 3、数据库阶段

数据库管理系统:

数据库管理系统DBMS(全称DataBase Management System)

对收集到的数据进行整理、加工、归并、分类、计算、存储等处理,产生新的数据,以便反映事物或现象本质和特征及其内在联系。

文件系统缺点:

  • 数据冗余性
  • 数据不一致性
  • 数据联系弱

数据库是按照什么结构存储数据的仓库?

数据库通常按照一种结构化的方式来存储数据,这种结构被称为数据库管理系统(Database Management System,简称DBMS)。

常见的数据库管理系统使用的数据存储结构包括关系型数据库和非关系型数据库。

  1. 关系型数据库(Relational Database):关系型数据库使用表格(表)的形式来组织和存储数据。数据以行和列的方式存储在表中,每个表代表一个实体或概念,每行表示一个具体的实例,而每列则代表实例的属性或特征。关系型数据库使用结构化查询语言(Structured Query Language,SQL)进行数据的查询和操作。常见的关系型数据库包括MySQL、Oracle、Microsoft SQL Server等。【关系数据库结构-多个二维表格】
  2. 非关系型数据库(NoSQL Database):非关系型数据库是一种不使用传统的表格结构来存储数据的数据库。非关系型数据库使用各种不同的数据模型来组织和存储数据,如键值对(Key-Value)、文档(Document)、列族(Column Family)、图形(Graph)等。非关系型数据库通常具有更高的可伸缩性和灵活性,适用于处理大规模、高并发的数据。常见的非关系型数据库包括MongoDB、Redis、Cassandra等。

除了关系型数据库和非关系型数据库,还有其他一些特定用途的数据库,如时序数据库(Time Series Database)、图数据库(Graph Database)等,它们针对特定的数据类型或应用场景提供了更优化的存储结构和查询方式。

总之,数据库是按照特定的结构(如表格、键值对、文档等)来存储数据的仓库,并通过数据库管理系统提供的接口进行数据的管理、查询和操作。不同类型的数据库管理系统使用不同的存储结构和查询语言,以满足不同的数据存储和访问需求。

数据库系统构成:

概述:数据库系统一般由 数据库、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成。 其中,DBMS是数据库系统的基础和核心。

数据库系统包含以下组件:

  1. 数据库:存储数据的容器,可以是关系型数据库、非关系型数据库等。
  2. 数据库管理系统(DBMS):管理数据库的软件系统,负责数据的存储、检索、安全性和完整性等。
  3. 应用系统:使用数据库的应用程序,可以是网站、桌面软件、移动应用等。
  4. 数据库管理员(DBA):负责管理和维护数据库系统的专业人员。
  5. 用户:使用数据库系统的人员,包括应用程序的最终用户和DBA。

这些组件之间的关系如下:

  • 数据库被DBMS管理和控制,DBMS提供了访问数据库的接口。
  • 应用系统通过DBMS访问数据库中的数据。
  • DBA负责管理和维护数据库系统,包括监控性能、备份恢复、安全性等。
  • 用户可以是应用系统的最终用户,也可以是DBA,他们通过应用系统或直接操作数据库来访问数据。

结构化查询语言SQL

结构化查询语言SQL(全称:Structured Query Language)是一种全功能的关系数据库语言,它提供了数据定义、数据操作和数据控制等功能。

SQL的主要特点:

  • 一体化(综合统一):SQL语言风格统一,可以完成数据库活动中的全部工作,包括创建数据库、定义模式、更改和查询数据以及安全控制和维护数据库等。
  • 高度非过程化:在使用SQL语句访问数据库时,用户没有必要告诉计算机如何一步步完成任务,只需要提出“做什么”,而无需指明“怎么做”,这使得SQL更易学习和使用。
  • 面向集合的操作方式:SQL语言采用集合操作方式,可以方便地对多个记录进行操作。
  • 提供多种方式使用:一种语法结构,两种使用方式。SQL语言既可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。
  • 语言简洁:SQL语言的语法非常简洁,使得其易于学习和使用。

SQL的主要功能:

  1. 查询数据(SELECT): 通过使用SELECT语句,可以从数据库中检索数据。可以指定要检索的列、条件、排序等。

    SELECT column1, column2 FROM table WHERE condition;
  2. 插入数据(INSERT): 用于将新的数据插入到数据库表中。

    INSERT INTO table (column1, column2) VALUES (value1, value2);
  3. 更新数据(UPDATE): 用于修改数据库中的现有数据。

    UPDATE table SET column1 = value1 WHERE condition;
  4. 删除数据(DELETE): 用于从数据库中删除数据。

    DELETE FROM table WHERE condition;
  5. 创建表(CREATE TABLE): 用于在数据库中创建新的表。

    CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    );
  6. 修改表结构(ALTER TABLE): 用于修改现有表的结构,如添加列、删除列或修改列的数据类型。

    ALTER TABLE table_name
    ADD column_name datatype;
  7. 删除表(DROP TABLE): 用于删除数据库中的表。

    DROP TABLE table_name;
  8. 索引(INDEX): 通过创建索引,可以加速数据库中数据的检索。

    CREATE INDEX index_name ON table_name (column1, column2, ...);
  9. 约束(CONSTRAINT): 用于强制实施数据完整性规则,如主键、外键和唯一性约束。

    CREATE TABLE table_name (
    column1 datatype PRIMARY KEY,
    column2 datatype FOREIGN KEY REFERENCES other_table(other_column),
    ...
    );

这些是SQL的一些基本功能,SQL还具有其他高级功能,如聚合函数、子查询、联结(JOIN)、视图(VIEW)、存储过程、触发器等……

大数据时代的数据库管理系统

分为以下三个

SQL–关系型数据库管理系统(RDBMS)

关系型数据库管理系统(RDBMS)是一种基于关系模型的数据库管理系统,它使用SQL作为查询语言,支持数据的存储、检索、更新和管理。RDBMS以表的形式组织数据,其中表之间通过关系建立连接。

ACID属性: RDBMS遵循ACID属性,确保数据库事务的可靠性和一致性。ACID是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  • 原子性(Atomicity): 事务是不可分割的单元,要么全部执行,要么全部不执行。
  • 一致性(Consistency): 事务将数据库从一种一致性状态转移到另一种一致性状态。
  • 隔离性(Isolation): 多个事务可以并发执行,彼此之间相互隔离,不会相互干扰。
  • 持久性(Durability): 一旦事务提交,其结果将永久保存在数据库中,即使系统故障也不会丢失。

NoSQL–非关系性数据库

  1. 灵活的模式(Schema-less): NoSQL数据库通常具有灵活的数据模型,允许存储各种形式的数据而无需严格定义表结构。这使得NoSQL数据库适用于处理半结构化和非结构化数据。
  2. 分布式和横向扩展: NoSQL数据库设计支持分布式架构,可以方便地在多台机器上进行横向扩展,以应对大规模数据和高并发的需求。
  3. 高性能: NoSQL数据库的设计目标之一是提供高性能的数据处理能力。它们通常能够在大规模数据集上进行快速的读写操作。
  4. CAP定理: NoSQL数据库通常基于CAP定理(Consistency、Availability、Partition Tolerance)进行设计。CAP定理指出在分布式系统中,无法同时保证一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。NoSQL数据库的设计根据应用场景选择其中的两个。
    • 例如,Cassandra是一个分布式数据库系统,它在CAP中选择了分区容忍性(P)和可用性(A),而牺牲了一致性(C)。
  5. 常见类型的NoSQL数据库:
    • 文档型数据库(Document-Oriented): 存储数据的单元是文档,通常使用JSON或类似的格式。例子:MongoDB。
    • 键值对数据库(Key-Value Store): 使用简单的键值对存储数据。例子:Redis、Amazon DynamoDB。
    • 列族数据库(Wide-Column Store): 数据以列族的形式存储,适用于大规模的分布式存储。例子:Apache Cassandra。
    • 图形数据库(Graph Database): 用于存储和查询图形结构的数据库。例子:Neo4j。
  6. 用途: NoSQL数据库在Web应用、大数据、实时分析、日志存储、内容管理系统等方面得到广泛应用,特别是在需要处理半结构化或非结构化数据的场景。

虽然NoSQL数据库在某些场景下提供了更好的性能和扩展性,但它们不是万能的解决方案,而是根据具体应用需求来选择的。在某些需要事务支持、复杂查询和数据一致性的应用场景中,关系型数据库仍然是更合适的选择。

NewSQL–结合SQL和NoSQL

NewSQL是一种数据库技术,旨在结合传统关系型数据库(SQL数据库)的事务处理能力和NoSQL数据库的横向扩展性和灵活性。它试图解决传统关系型数据库在处理大规模数据和高并发性方面的一些限制,同时保留关系数据库的事务特性。

以下是一些NewSQL数据库的共同特点和目标:

  1. 分布式架构: NewSQL数据库通常采用分布式架构,允许在多个节点上水平扩展,以应对大规模数据和高并发访问的需求。

  2. ACID支持: 与传统的关系型数据库类似,NewSQL数据库强调支持ACID属性(原子性、一致性、隔离性、持久性),以确保事务的可靠性和数据库的一致性。

  3. 高性能: NewSQL数据库旨在提供高性能的事务处理,以满足需要处理大量交易和复杂查询的应用程序需求。

  4. 灵活性: 类似于NoSQL数据库,一些NewSQL系统提供了更灵活的数据模型,允许存储半结构化或非结构化数据。

  5. 支持SQL语言: 与传统关系型数据库一样,NewSQL数据库仍然使用SQL作为主要的查询语言,这使得它们更容易集成到已有的应用程序中。

  6. 适用场景: NewSQL数据库通常适用于需要高度可扩展性和高性能的在线事务处理(OLTP)应用,如金融交易、电子商务等。

  7. 例子: 一些代表性的NewSQL数据库包括Google Spanner、CockroachDB、NuoDB等。这些数据库采用了不同的架构和实现方式,但共同的目标是提供横向扩展性和分布式性能,同时保留ACID事务的支持。

需要注意的是,虽然NewSQL数据库尝试结合SQL和NoSQL的特点,但它们并不是一种通用的解决方案。选择使用NewSQL还是传统SQL数据库或NoSQL数据库应该根据具体的应用场景和需求来决定。

当下流行的DBMS

Oracle

  • 类型: 商业的 “关系–对象” 型数据库管理系统(RDBMS)。
  • 特点:
    • 提供强大的事务处理能力,支持复杂的企业级应用。
    • 具有高度可扩展性和可定制性。
    • 支持多用户并发访问,提供高级的安全性和权限控制。
    • 提供丰富的数据库管理和性能优化工具。
    • 支持多平台部署,包括Windows、Linux和Unix。
    • 使用SQL语言进行查询和管理数据库。

MySQL

  • 类型: 开源的关系型数据库管理系统。
  • 特点:
    • 轻量级且易于使用,适用于中小型应用和Web应用。
    • 具有良好的性能,特别是在读取密集型工作负载下表现优越。
    • 支持事务处理,但在某些方面相对于Oracle等商业解决方案有一些限制。
    • 提供高度可定制性,社区支持广泛。
    • 跨平台支持,可在各种操作系统上运行。
    • 使用SQL语言进行查询和管理数据库。

SQL Server

    • 类型: 微软公司提供的商业关系型数据库管理系统。
    • 特点:
      • 针对Windows平台优化,紧密集成于Microsoft生态系统(仅支持Windows)。
      • 提供强大的数据分析和报告工具,如SQL Server Reporting Services(SSRS)和SQL Server Analysis Services(SSAS)。
      • 具有较好的可扩展性和可管理性,适用于中小型到大型企业级应用。
      • 集成了业务智能和高级分析功能。
      • 支持多版本的SQL Server数据库,包括Express、Standard和Enterprise。
      • 使用SQL语言进行查询和管理数据库。

总体而言,这三个流行的DBMS都是关系型数据库管理系统,使用SQL语言进行查询和管理。Oracle更专注于大型企业级应用,MySQL是一款轻量级、开源的数据库系统,适用于中小型应用,而SQL Server在Microsoft生态系统中有较好的集成,并提供强大的数据分析和业务智能功能。选择其中一个取决于具体的应用需求、规模和技术栈。