数据库简单了解

数据库


数据库概念

数据库(Database,DB)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。

简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过 DBMS 创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

  • 数据以表格的形式出现
  • 每行为各种记录名称
  • 每列为记录名称所对应的数据域
  • 许多的行和列组成一张表单
  • 若干的表单组成database

数据库的分类

关系数据库

(英语:Relational database),是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。

  • MySQL
  • MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)
  • Percona Server(MySQL的代替品)
  • PostgreSQL
  • Microsoft Access
  • Google Fusion Tables
  • SQL Server
  • FileMaker
  • Oracle
  • Sybase
  • dBASE
  • Clipper
  • FoxPro
    几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。

非关系型数据库(NoSQL)

NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。

Key/value最终一致性存储

  • Apache Cassandra(为Facebook所使用):高度可扩展
  • Dynamo
  • Hibari
  • Project Voldemort
  • Riak

Key/value硬盘存储

  • LevelDB(Google)
  • BigTable
  • MemcacheDB
  • Tokyo Cabinet
  • Tuple space
  • TreapDB

Key/value RAM存储

  • Oracle Coherence
  • memcached
  • Citrusleaf database
  • Velocity
  • Redis
  • Tuple space

Key/value基于Paxos算法的存储

  • Keyspace

关系数据库和非关系数据库对比

  • 适合使用SQL开发的项目:

可以预先定义逻辑相关的离散数据的需求
数据一致性是必要的
具有良好的开发者经验和技术支持的标准的成熟技术

  • 适合使用NoSQL开发的项目:

不相关,不确定和逐步发展的数据需求
更简单或者更宽松的能够快速开始编程的项目
速度和可扩展性至关重要的

数据库模型

数据库模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述(例如树、表等)。数据库模型的分类如下:

  • 对象模型
  • 层次模型(轻量级数据访问协议)
  • 网状模型(大型数据储存)
  • 关系模型
  • 面向对象模型
  • 半结构化模型
  • 平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)

架构

数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。

  • 内层:最接近实际存储体,亦即有关数据的实际存储方式。
  • 外层:最接近用户,即有关个别用户观看数据的方式。
  • 概念层:介于两者之间的间接层。

数据库索引

数据索引的观念由来已久,像是一本书前面几页都有目录,目录也算是索引的一种,只是它的分类较广,例如车牌、身份证字号、条码等,都是一个索引的号码,当我们看到号码时,可以从号码中看出其中的端倪,若是要找的人、车或物品,也只要提供相关的号码,即可迅速查到正确的人事物。

数据库操作:事务

事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分区的工作单位。

数据表

关系数据库没有数据表,关键字、主键、索引等也就无从谈起,数据表是关系数据库中一个非常重要的对象,是其它对象的基础,也是一系列二维数组的集合,用来存储、操作数据的逻辑结构。根据信息的分类情况。一个数据库中可能包含若干个数据表,每张表是由行和列组成,记录一条数据数据表就增加一行,每一列是由字段名和字段数据集合组成,列被称之为字段,每一列还有自己的多个属性,例如是否允许为空、默认值、长度、类型、存储编码、注释等

数据类型

在定义数据字段的类型对你的数据库的优化非常重要,数据类型决定了数据在计算机中的存储格式,代表不同的信息类型,大致可以分为:数值、日期/时间和字符串(字符)类型,字符串类型又包括二进制类型。

文件系统和数据库系统的对比

说到数据库系统,不得不说与之有关的文件系统

第一 管理对象不同:

两者最显而易见的区别就是,文件系统是以文件为载体记录数据的,管理的也是记载着这些数据的文件,而非数据本身,文件的各种形式对应着不同的数据结构。(非常浅显的对比就是给一个文件重命名并不会造成文件内记录的数据发生改变)

而数据库系统管理的是数据本身,在数据库内的任何操作都会立刻影响到数据。

第二 存储数据方式不同:

文件系统用文件将数据长期保存在外存上。(这里的文件可以有很多不同的形式,不同后缀的文件就相当于不同的数据结构)

数据库系统用数据库统一存储数据。(有统一的数据结构)

第三 程序与数据的关系不同:

文件系统中,程序访问数据是直接访问的,对数据的查询修改必须在程序内完成,而这依赖于开发者对文件的逻辑及物理结构非常清楚。

数据库系统中,数据不再仅服务于某个程序或用户,而是以单位的形式共享出来,统一由DBMS软件管理。由于程序对数据的操作都是通过DBMS实现的,因此程序和数据彻底独立开,可以在更高的抽象级别观察和访问数据。

基于以上三点不同,可以总结出两者在生产环境中的主要优劣:

文件系统的缺点:

① 文件系统编写应用程序不方便,往往程序需要随着文件的变化而修改。

② 文件系统中的文件不能满足各种程序的需要,因此同一数据往往会以不同的文件形式储存,造成数据的冗余和不一致性。

③ 文件系统不支持对文件的并发访问。

④ 文件系统中的数据缺少统一的管理,表现在数据的结构,编码,表示格式,命名以及输出格式等不容易做到规范化、标准化,因此数据的安全和保密面临更大的挑战。

文件系统的优点:

① 由于数据的冗余,因此在高可用方面的表现远远优于数据库系统。且在海量存储方面,大量的冗余带来了更大的容错能力。

② 分布式方案的出现让文件系统能够在海量数据面前大显身手,极强的可扩展性带来极好的数据存储能力。

数据库系统的缺点:

① 由于DBMS的存在,在简单的不需要数据共享的场景下,性能不如文件系统。

② 由于数据没有冗余,在高可用方面有一定的隐患,只能通过备份解决。

③ 面对海量数据的应用场景很被动,表现不佳。

数据库系统的优点:

① 由于DBMS的存在,用户不再需要了解数据存储和其他实现的细节,直接通过DBMS就能获取数据,为数据的使用带来极大便利。

② 具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在并发访问时数据的一致性。

③ 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

④ 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖DBMS来对数据进行操作且对性能的消耗相比文件系统比较小。

⑤ 对事务的支持。DBMS支持事务,即一系列对数据的操作集合要么都完成,要么都不完成。在DBMS上对数据的各种操作都是原子级的。

以上仅是对数据库简单的了解

参考文章:

数据库与文件系统
1.https://blog.youkuaiyun.com/hiddpy/article/details/80817184

数据库基础
2.https://github.com/jaywcjlove/mysql-tutorial/blob/master/chapter1/1.1.md#关系数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值