A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 玩转曼哈顿 于 2019-5-23 10:22 编辑

1.NoSQL简介
    NoSQL(NoSQL = Not Only SQL ):不仅仅是SQLNoSQL 数据存储不需要固定的表结构,无需多余的操作就可以横向扩展。
2.与关系型数据库相比之下的优点与缺点
    1.易扩展
    NoSQL 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间,在架构的层面上带来了可扩展的能力。
    2.大数据量,高性能
    NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般 MySQL 使用      Query Cache,每次表一更新 Cache 就失效,它是一种大粒度的 Cache,在针对 web2.0 的交互频繁的应用,Cache 性能不高。而 NoSQL 的      Cache 是记录级的,是一种细粒度的 Cache,所以 NoSQL 在这个层面上来说性能就高很多了。
    3.灵活的数据模型
    NoSQL 无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的 web2.0 时代尤其明显。
    4.高可用
    NoSQL 在不太影响性能的情况,就可以方便地实现高可用的架构。比如 Cassandra, HBase 模型,通过复制模型也能实现高可用。
    当然,NoSQL 也存在很多缺点,例如,并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验,缺乏相关专家技术的支持等。
3.NoSQL分类
    1Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects)
       临时性键值存储:Memcached,Redis
      永久性键值存储:ROMA,Redis
      应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等
      数据模型:Key指向Value的键值对,通常用HashTable来实现
      优点:查找速度快
      缺点:数据无结构化,通常只被当做字符串或者是二进制数据
    2Table-oriented 面向表列, 主要有Google的BigTable和Cassandra以及hbase.

      应用场景:分布式的文件系统
      数据模型:以列簇式存储,将一列数据存储在一起
      优点:查找速度快,可扩展性强,更容易进行分布式扩展
      缺点:功能相对局限
    3Document-oriented面向文档, 文本是一种类似XML文档,MongoDB 和 CouchDB

      Mongodb是一个基于分布式文件存储的数据库,由c++语言编写。 为web应用提供可扩展的高性能数据存储解决方案,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据中功能最丰富,最像关系数据库的
     应用场景:WEB应用(与key-value类似,value是结构化的,不同的是数据库能够了解到value的内容)
     数据模型:Key-Value对应的键值对,Value是结构化的数据
     优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
     缺点:查询性能不高,而且缺乏统一的查询语法
    4Graph-oriented 面向图. 如Neo4J和InfoGrid

     应用场景:社交网络,推荐系统等,专注于构建关系图谱
     数据模型:图结构
     优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等等。
     缺点:很多时候要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案

    5对象存储,db4o,Versant. 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据
    6. xml数据库,Berkeley DB XMLBaseX. 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath
4.CAP原则
            CAP原则是NOSQL数据库的基石。Consistency(一致性)。 Availability(可用性)。Partition tolerance(分区容错性)。
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
1. 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
2. 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
3. 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
5. BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。接下来看一下BASE中的三要素:
1、基本可用
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性----注意,这绝不等价于系统不可用。比如:
(1)响应时间上的损失。正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒
(2)系统功能上的损失:正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面
2、软状态
软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时
3、最终一致性
最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。
参考:
https://blog.csdn.net/dyt443733328/article/details/80090383


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马