当前位置: 首页 > article >正文

数据库概述(1)

课程主页:Guoliang Li @ Tsinghua

数据库在计算机系统中的位置

首先,数据库是在设计有大量数据存储需求的软件时必不可少可的基础。

最常见的是:我们通过app或者是浏览器来实现一些特定需求——比如转账、订车票。即引出背后的CS和BS两种网络架构——客户端(client)和服务器(server)以及浏览器(browser)和服务器(server)。因为服务器里装着数据库,所以可以帮我们存储和管理数据,比如说要转账,就会发送一个请求到server服务器,然后交给数据库去处理,最后返回结果给用户(用户面前的浏览器、app)

有很多数据库都是开源的,“开源的”是指数据库的源代码是开放共享的,任何人都可以用开源的数据库源代码通过编译器将人看懂的代码文件编译成机器看得懂的指令,让计算机去做某些事情,比如数据储存和查询——即实现数据库的功能,发挥计算能力(算力);编译器还能实现编译数据库驱动程序实现应用和数据库之间的交互。

在计算机系统中有这么几个成员——非实体的软件(software)比如【最常见的app】、其次是【数据库】、后面是【编译器】、再底层一些是【操作系统(比如Windows)】以及看得见的硬件hardware

其实我们刚刚已经解释了应用和编译器这两个东西和数据库之间的关系。

数据库由什么构成

上面我们所谈论的都是广义的数据库——包含很多,比如数据(data)、数据库(狭义,指数据的集合database即DB)、数据库管理系统(DBMS即一种管理数据的软件)、数据库系统(广泛的概念)。

查询接口层:假设你要开发一款转账的应用,这时候就需要用到数据库驱动程序,驱动程序会实现API接口的功能【API接口是指实现各种软件之间交互的工具】,通过驱动程序可以让转账的应用接入数据库,进行查询、存储等功能。接口可以用Java写成叫JDBC(Java database connectivity),用C语言写成的叫ODBC。

而数据库系统就是包括数据库(DB)、数据库管理系统(DBS)、数据库管理员(DBA)、数据库应用系统,我们上面举的“转账应用”就是数据库应用系统。

数据库里面的数据是什么

如果有用过Excel表格来记录某些东西的伙伴应该会知道生活中有一些数据是可以整理成表格形式来方便记录和查找的。比如转账这个例子,假设有很多用户在同一天都有转入和转出的记录,那么可以类似下面这么记录:

结构化数据:

上面的表格由行和列组成,在数据库中分别被称为“记录”和“属性”(或字段)

注:“记录”也被称为实体或元组;“属性”也被称为字段

这样的数据也被称为关系数据——可以用表格记录起来的数据,也被叫做结构化数据。除了结构化数据还有半结构化和非结构化数据。可以用表存储的数据叫结构化数据,

半结构化数据:

而用图中举例的比如键值对、XML、JSON、图(树状图等)、向量(关于向量后期的博客会涉及再详细解释)等方式存储的数据叫半结构化数据。

键值对是指一对一存储数据,每一个键对应一个值,比如在关系型数据库(表格存储数据——结构化数据)中,键可以指用户名的ID,而值可以指跟这个用户有关的所有信息。

下面是XML(可扩展标记语言)和JSON(JavaScript对象表示法,JavaScript是一种编程语言)

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book>
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>
{
  "name": "John Doe",
  "age": 30,
  "is_student": false,
  "scores": [88, 92, 77],
  "address": 
    {
    "street": "21 2nd Street",
    "city": "New York",
    "state": "NY"
    }
}


http://www.kler.cn/news/334048.html

相关文章:

  • easypoi, fastpoi快速导出xlsx,导出多sheet的xlsx
  • mysql-索引笔记
  • 有关自连接表的统一封装
  • 基于定制开发与2+1链动模式的商城小程序搭建策略
  • 招联2025校招内推倒计时
  • 如何在电脑上浏览手机界面
  • 【部署项目】禹神:前端项目部署上线笔记
  • 设计模式-模版方法模式
  • No.4 笔记 | 探索网络安全:揭开Web世界的隐秘防线
  • 如何在每台设备上恢复已删除的照片
  • 最新版的dubbo服务调用(用nacos做注册中心用)
  • 【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
  • rtmp协议转websocketflv的去队列积压
  • 【2024年最新】基于Spring Boot+vue的旅游管理系统lw+ppt
  • 从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体
  • 真正的Open AI ——LLaMA颠覆开源大模型
  • LeetCode hot100---二叉树专题(C++语言)
  • 《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
  • 从Rally到Atlassian Cloud:思科Cisco实现云迁移的技术挑战与解决方案
  • 基于keras的停车场车位识别