zoukankan      html  css  js  c++  java
  • 走进NoSql大世界

    1.NoSql是什么?

    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,
    泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。

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

    2.NoSql的主要优势

    1.易拓展

    NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。
    数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。

    2.大数据量高性能

    NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。
    这得益于它的无关系性,数据库的结构简单。
    一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,
    在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的Cache是记录级的,
    是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了

    3.多样灵活的数据模型

    NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,
    增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦

    4.传统RDBMS VS NOSQL

    RDBMS
    - 高度组织化结构化数据
    - 结构化查询语言(SQL)
    - 数据和关系都存储在单独的表中。
    - 数据操纵语言,数据定义语言
    - 严格的一致性
    - 基础事务


    NoSQL
    - 代表着不仅仅是SQL
    - 没有声明性查询语言
    - 没有预定义的模式
    -键 - 值对存储,列存储,文档存储,图形数据库
    - 最终一致性,而非ACID属性
    - 非结构化和不可预知的数据
    - CAP定理
    - 高性能,高可用性和可伸缩性

    3.介绍当今互联网世界的3V+3高

    1.大数据行业要求

    ①海量Volume

    ②多样Variety

    ③实时Velocity

    2.互联网行业

    ①高并发 

    ②高可扩

    ③高性能

    4.NoSql分类

    ①K-V键值对型 如:redis、memcache

    ②文档型(大多bson格式文档) 如:MongoDB、CouchDB

    ③列存储型 如:Cassandra、HBase

    ④图关系型 如:社交网络,推荐系统等。专注于构建关系图谱

    5.RDBMS(关系型数据库)和NoSql重要原理(重要)

    1.RDBMS中的ACID原理

    ①A (Atomicity) 原子性

    就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

    ②C (Consistency) 一致性

    一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

    ③I (Isolation) 独立性

    所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

    ④D (Durability) 持久性

    持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

    2.NoSql中的CAP原理

    • C指的是:Consistency(强一致性)  保证数据一致(实时)
    • A指的是:Availability(可用性)      保证系统可用稳定
    • P指的是:Partition tolerance(分区容错性)  保证分布式集群中各分区能够容错

    注意:分布式存储系统中,CAP理论最多只能实现上面的两个而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。

    在传统的数据库系统中通常只保证CA(即保证一致+可用)

    在分布式存储系统中可保证的性质只有如下:

    ①AP(可用+分区容错) 大部分网站架构选择

    ②CP(一致+分区容错) 如:Redis、Mongodb

    6.分布式和集群的区别

    分布式

    不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。

    集群

    不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。

  • 相关阅读:
    stc单品机的命名规则
    代码导入单片机运行
    openlayers tips
    LeetCode 766. Toeplitz Matrix
    【题集】二叉树的遍历各类题型汇总
    LeetCode 821. Shortest Distance to a Character
    关于C++中vector<vector<int> >的使用
    POJ
    LeetCode#155 Min Stack
    LeetCode#160 Intersection of Two Linked Lists
  • 原文地址:https://www.cnblogs.com/jim0816/p/12330753.html
Copyright © 2011-2022 走看看