knight_ka | 生活及学习笔记

Mongodb简介

Mongodb简介

Mongodb是非关系型数据库。nosql中的一种。用c++编写而成。旨在为WEB应用提供可扩展的高性能数据库存储。
Mongodb是介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中功能最丰富,最像关系数据库的。

关系型数据库:

关系型数据库遵循ACDI的规则。Transaction事务的四个特性:

1
2
3
4
5
6
7
8
9
A Atomicity 原子性
事务里的一组操作要么全都成功,要么全都失败。
C Consistency 一致性
事务的操作后的结果要一致。例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
D Durability 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
I Isolation 独立性/隔离性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
事务和事务之间的操作是相互独立的。

如果不考虑隔离性,可能会导致三个问题:
    1.脏读:一个事务读取到了两一个事务没有提交的数据
    2.不可重复读: 一个事务内先读取一条数据,这时候另一个事务提交,这个事务再次读取发现数据不同
    3.虚读、幻读:  指在一个事务读取到了别的事务插入的数据,导致前后读取不一致(和不可重复读很类似),但指的是第一次读取的是3条记录,第二次读的是4条记录,前后不一致。

数据库的隔离级别:

1,serializable:可避免脏读,不可重复读,虚读情况发生,但性能较差。

2,Repeatable read:可避免脏读,不可重复读情况发生。

3,Read committed:可避免脏读情况发生(读取已经提交)

4,Read uncommitted:最低级别,以上情况均无法保证

还有一个丢失更新的问题:通过乐观锁或悲观锁来解决(基础是数据库的行级互斥锁)

mysql默认隔离级别:读已提交
oracle默认隔离级别:可重复读

为什么要用分布式系统:

如果使用单一的服务器,当这台服务器因为一些外界因素宕机了 整个网站就无法访问了,所以使用分布式系统(1.提高服务的可靠性)。当用户量变大的时候,服务器的配置如果过低就很难抵御得住这么大的用户量,这时候需要提高服务器的配置,但是提高一台服务器的配置的话价格比较高,所以使用多台同等配置的服务器(2.节约成本),从而又提高了整个网站的性能(3.提升服务器性能)。分布式系统因为是用多台服务器进行计算的(4.提高计算能力。)。当需要提升配置的时候,只需要添加几台服务器就可以了(5.可扩展性高)。6.可以共享同一些服务器资源。7.很容易安装,实施和调试新的服务。

1.提高服务器性能 (节约成本)

2.提高系统可靠性 (一台服务器宕机,不会影响到其它服务器)

3.可扩展性更高 (可以随时添加更多的机器)

4.更快的速度(集成多太机器的计算能力)

5.资源共享

6.开放的系统

7.灵活性

分布式计算的缺点

1.故障排查和诊断比较麻烦

2.较少的软件支持

3.依赖于网络

4.可能存在数据的安全性和共享的风险

什么是NoSQL?

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

###为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

RDBMS(Relational Database Manager System) vs NoSQL
RDBMS

  • 高度组织化结构化数据(一张表里的数据格式是一样的)
  • 结构化查询语言SQL(Structured Query Language结构化查询语言)
  • 数据和关系都存在一张表中(关系是指:数据模型符合一定条件的二维表格式)
  • 数据操纵语言,数据定义语言
  • 严格的一致性
  • 事务支持

NoSQL
没有预定义的数据格式,高性能,高可用,可伸缩性。最终一致性,没有ACDI。
没有声明性查询语言。CAP定理。

CAP theorem CAP定理

参考:http://www.runoob.com/mongodb/nosql.html