2第八周 - 网络编程进阶 - 数据库类型的理解

Posted chen170615

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2第八周 - 网络编程进阶 - 数据库类型的理解相关的知识,希望对你有一定的参考价值。

前言

1、关系型数据库与非关系型数据库

A、什么是数据库?

数据库是数据的仓库。数据库与普通的文件系统的主要区别:数据库能快速查找对应的数据。

B、什么是关系型数据库?

关系型数据库是依据关系模型来创建的数据库。所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。

常见的关系型数据库:

Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、mysql

关系型数据库的特点:

  • 安全(因为存储在磁盘中,不会说突然断电数据就没有了);
  • 容易理解(建立在关系模型上);
  • 但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间)

C、什么是非关系型数据库?

非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)。

非关系型模型比如有:

  • 列模型:存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,数据即索引,IO很快,主要是一些分布式数据库)
  • 键值对模型:存储的数据是一个个“键值对”,K/v模式。
  • 文档类模型:以一个个文档来存储数据,有点类似“键值对”。

常见非关系模型数据库:

  • 列模型:Hbase
  • 键值对模型:redis,MemcacheDB
  • 文档类模型:mongoDB

非关系型数据库的特点:

  • 效率高(因为存储在内存中)。
  • 但不安全(断电丢失数据,但其中redis可以同步数据到磁盘中),现在很多非关系型数据库都开始支持转存到磁盘中。

2、NoSQL 缓存数据库介绍

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。

NoSQL数据库的四大分类:

  • 键值(Key-Value)存储数据库:数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
  • 列存储数据库:数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。如:Cassandra, HBase, Riak.
  • 文档型数据库:文档型数据库模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb。
  • 图形(Graph)数据库:图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。

NoSQL数据库在以下的这几种情况下比较适用:

  • 数据模型比较简单;
  • 需要灵活性更强的IT系统;
  • 对数据库性能要求较高;
  • 不需要高度的数据一致性;
  • 对于给定key,比较容易映射复杂值的环境。

NoSQL数据库的四大分类表格分析:

3、 Mongodb\\redis\\memcached 区别

 

Redis和Memcache区别:

  • Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
  • 数据类型--Memcache在添加数据时就要指定数据的字节长度;redis不需要。
  • 虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘。LRU算法。
  • 过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10
  • 分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从
  • 存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)。
  • 灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复。

 

三者区别如下:

 

 

以上是关于2第八周 - 网络编程进阶 - 数据库类型的理解的主要内容,如果未能解决你的问题,请参考以下文章

4第八周 - 网络编程进阶 - Mysql数据库操作

5第八周 - 网络编程进阶 - Python 连接 Mysql

6第八周 - 网络编程进阶 - Python语言下的SqlAlchemy ORM框架应用

Python学习笔记——进阶篇第八周———Socket编程进阶&多线程多进程

Python学习笔记——进阶篇第八周———异常处理

第八周编程总结