zoukankan      html  css  js  c++  java
  • NoSQL概述

    一、概述

    NoSQL(Not Only SQL),"不仅仅是SQL", 泛指非关系型的数据库;

    1)特点

    ① 易扩展;

    ② 在大数据量下,NoSQL 数据库具有非常高的读写性能;

    ③ 多样灵活的数据模型;

    2)RDBMS(关系型数据库) 和 NoSQL 比较

    - RDBMS

    1. 高度组织化结构化数据;
    2. 结构化查询语言(SQL);
    3. 数据和关系都存储在单独的表中;
    4. 数据操作语言,数据定义语言;
    5. 严格的一致性;
    6. 基础事务;

    - NoSQL

    1. 没有声明性查询语言;
    2. 没有预定义的模式;
    3. 键值对存储,列存储,文档存储,图形数据库;
    4. 最终一致型,而非ACID属性;
    5. 非结构化和不可预知的数据;
    6. CAP 定理;
    7. 高性能,高可用性和可伸缩性;

    3、3V + 3高

    - 大数据时代的3V(主要是描述问题的)
      1.海量(Volume)
      2.多样(Variety)
      3.实时(Velocity)
    - 互联网需求的3高(主要是对程序的要求)   1.高并发   2.高可扩   3.高性能

    二、NoSQL的四大分类

    1)键值(Key-Value)存储数据库

    这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
    Key/value模型对于IT系统来说的优势在于简单、易部署。
    但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。

    如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

    2)列存储数据库

    这部分数据库通常是用来应对分布式存储的海量数据。
    键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。

    如:Cassandra, HBase, Riak.

    3)文档型数据库

    文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。
    该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。
    文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。

    如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

    4)图形(Graph)数据库

    图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
    NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。
    
    许多NoSQL数据库都有REST式的数据接口或者查询API。

    如:Neo4J, InfoGrid, Infinite Graph.

    分类Examples举例典型应用场景数据模型优点缺点
    键值(key-value) Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 Key 指向 Value 的键值对,通常用hash table来实现 查找速度快 数据无结构化,通常只被当作字符串或者二进制数据
    列存储数据库 Cassandra, HBase, Riak 分布式的文件系统 以列簇式存储,将同一列数据存在一起 查找速度快,可扩展性强,更容易进行分布式扩展 功能相对局限
    文档型数据库 CouchDB, MongoDb Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) Key-Value对应的键值对,Value为结构化数据 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 查询性能不高,而且缺乏统一的查询语法。
    图形(Graph)数据库 Neo4J, InfoGrid, Infinite Graph 社交网络,推荐系统等。专注于构建关系图谱 图结构 利用图结构相关算法。比如最短路径寻址,N度关系查找等 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。
  • 相关阅读:
    element-ui el-tree竖向滚动条和横向滚动条问题
    菜单加滚动条相关样式
    echarts tree 树图总结,点击父节点动态生成子节点,树图数据过多高度自适应,点击子节点跳转页面。
    基于Mininet测量路径的损耗率
    RyuBook1.0案例一:Switching Hub项目源码分析
    深度学习之稠密连接⽹络(DENSENET)
    图形学之图像信号处理
    图形学之卷积滤波器
    图形学之信号处理
    Lecture13_光线追踪1(Whitted-Style Ray Tracing)_GAMES101 课堂笔记
  • 原文地址:https://www.cnblogs.com/Dm920/p/12861300.html
Copyright © 2011-2022 走看看