什么是数据库
- 数据库是一个以某种有组织的方式存储的数据集合。简单的说,数据库(database)就是一直存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库(数据库中的库)里的数据。
当我们收集到大量的数据后,应该把它们保存起来进一步的处理、抽取我们需要的信息。
数据库排名网:https://db-engines.com/en/ranking
关于NoSQL:http://www.nosql-databases.org/
数据库的种类
数据库通常分为层次型数据库、网络型数据库和关系型数据库三种。不同的数据库是按不同的数据结构来联系和组织的。当今互联网中最常用的数据库模型主要有两种,即关系型数据库和非关系型数据库。
数据类型:结构化数据、半结构化数据、非结构化数据。
- 结构化数据:结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:
学生表 | ||
---|---|---|
学号 | 姓名 | 年龄 |
S001 | 张三 | 22 |
S002 | 李四 | 19 |
S003 | 王五 | 33 |
- 半结构化数据:半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。
-
- 半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。
-
- 常见的半结构数据有XML和JSON,对于两个XML文件,第一个可能为:
<person> <name>A</name> <age>13</age> <gender>female</gender> </person>
第二个可能为:
<person> <name>B</name> <gender>male</gender> </person>
- 常见的半结构数据有XML和JSON,对于两个XML文件,第一个可能为:
-
- 从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。有些人说半结构化数据是以树或者图的数据结构存储的数据,怎么理解呢?上面的例子中,<person>标签是树的根节点,<name>和<gender>标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。
- 非结构化数据:
顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。
1 . 关系型数据库的模型是把复杂的数据结构转换为简单的二元关系(二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
关系型数据库典型产品介绍:Oracle、Mysql及其变种和PostgreSQl等。
关系型数据库表格之间的关系举例
学生表 | ||
---|---|---|
学号 | 姓名 | 年龄 |
S001 | 张三 | 22 |
S002 | 李四 | 19 |
S003 | 王五 | 33 |
课程表 | ||
---|---|---|
课程号 | 课程名 | 学分 |
C001 | Linux | 25 |
C002 | Python | 25 |
C003 | Mysql | 25 |
C004 | Java | 25 |
选课表 | ||
---|---|---|
学号 | 课程名 | 成绩 |
S001 | C001 | 88 |
S001 | C001 | 92 |
S001 | C001 | 78 |
S001 | C001 | 84 |
2 . 非关系型数据库介绍
-
- 非关系型数据库泛指NoSQL,NoSQL(NoSQL = Not Only SQL)。
-
- 随着互联网Web2.0网站的兴起,传统的关系型数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露出很多难以克服的问题。
-
- NoSQL是一项全新的数据革命性运动,早起就有人提出,发展到2009年趋势越发高涨。非关系型时间库由于其本身的特点得到了非常迅速的发展,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充。
-
- 键值存储数据库(Key-Value)
键值数据库类似传统语言中使用哈希表,这张表有一个特定的键和一个指针指向特定的数据。可以通过key来添加、查询和删除数据库,因为使用key主键访问数据,所以会获得很高的性能及扩展性。Key-Value模型对IT系统来说的优势在于简单、易部署、高并发。
- 键值存储数据库(Key-Value)
-
- 典型产品:Redis、Memcached
3 . 列式存储数据库(Column-oriendted)
-
- 列式存储数据库将数据存储在列族中,一个列族存储经常是被一起查询的相关数据,比如人类,我们经常会查询某人的姓名和年龄,而不是家庭住址。这种情况下姓名和年龄会被放到一个列族中,而家庭住址会被放到另一个列族中。
-
- 这种数据库通常用来衣服分布式存储的海量数据。
-
- 典型产品:HBase
4 . 面向文档数据库(Document-Oriented)
-
- 面向文档数据库将数据以文本形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合,每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。
-
- 典型产品:MongoDB、CouchDB
5 . 图形数据库
-
- 图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
-
- 典型产品:Neo4J、InforGrid
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/191760.html