精华内容
下载资源
问答
  • NoSQL 数据库

    万次阅读 2020-06-02 23:16:05
    NoSQL 数据库 一、出现背景 二、优势与缺点 三、NoSQL 数据库分类 四、MongoDB v.s. Redis

    NoSQL 数据库

    一、出现背景

    首先要提一下数据库的应用场景,实际应用中数据库部署在服务器上,服务器得到客户端传来的前端数据后,将数据交由业务逻辑层处理,业务逻辑层访问数据库取出数据。这样的架构逻辑决定了任何一个阶段性能不够都将制约整个流程的性能与用户体验。

    互联网的飞速发展,对高并发、低延时的需求越来越高。然而传统数据库的访问效率逐渐不能满足需求。在此情况下,传统数据库必然需要进行优化升级,比如优化 SQL 语句、数据库读写分离等。但当下软件系统复杂的业务逻辑使得耦合度提高,传统数据库的升级面临很大瓶颈,维护成本也会变高。

    大数据时代到来,若仍然采用传统数据库纵向扩展方式,则需要很大的单台服务器存放,采购成本高,维护难度高。单台服务器配置存在技术上的天花板,存储空间不能无限大。

    如今数据无处不在,如何提取有效数据,于是便催生了数据挖掘研究的迅速发展,传统 SQL 数据库不适合相关研究。

    需求决定供给,高并发低延时易扩展 等需求催生了 NoSQL 数据库的出现于流行。NoSQL 数据库访问高效,方便大数据处理,也为动辄几百上千 QPS 的并发量提供了很好的解决方案。另外,单台数据库存储空间瓶颈使得海量数据只能采用集群环境存储,NoSQL 数据库不同于传统数据库的易扩展性无疑提升了其竞争力。

    二、特点

    与传统的关系型数据库相比,NoSQL 数据库有以下特点:

    • 非持久化,部分 NoSQL 数据库是纯内存存储的;
    • 存储方式与传统数据库不同,NoSQL 数据库有列式存储、key/value存储、文档型存储以及图结构存储等;
    • 无 SQL 语言,没有 SQL 语言操作接口,NoSQL 系统有自己特有的 API 接口;
    • 结构自然,采用文档模型,数据表达方式更自然,与关系型数据库中表结构不同,文档中可以嵌入数组和子文档。
    • 集群设计,NoSQL 系统用于服务器集群环境,并非共享性数据库架构;
    • 存储位置不确定,出于架构原因,NoSQL 数据库系统下,会有不知道数据存在哪里的情况;
    • 弱一致性,系统中的某个数据被更新后,后续对该数据的读取操作可能得到更新后的值,也可能是更改前的值;
    • 数据压缩性能高,压缩比可达到五倍以上,极大节约磁盘空间。

    三、优势与缺点

    优势

    1. 读写效率高:逻辑简单,纯内存操作,性能出色,单节点每秒可以处理超过10万次读写操作,适合高并发、低延时的应用场景。更简单的数据访问模式也让开发者更容易理解数据库的性能表现,尤其是当涉及到索引时;
    2. 易于扩展:NoSQL 数据库的存储方式使其易于扩展,而且更加适合集群环境的数据存储扩展调度;
    3. 易于维护:NoSQL 没有过多的操作,使得系统各部分之间耦合度低,尤其是非结构化以及半结构化的数据,修改灵活,易于维护与修改;
    4. 可用性高、负载均衡:NoSQL 有自己业务的副本集和驱动程序,可以非常有效和方便地实现高可用,读负载均衡;
    5. 开源:大部分分布式数据库系统为开源软件,项目开发测试与部署成本低。

    缺点

    1. 功能有限:目前 NoSQL 产品功能不够完善,大部分不支持事务操作;
    2. 不够成熟:大部分 NoSQL 产品尚处于初创阶段,与传统的关系型数据库相比差距很大;
    3. 不兼容 SQL:对于占据市场几十载的 SQL 标准不支持,使得已有应用的迁移困难较大;
    4. 学习成本高:对于习惯了传统数据库系统的使用者来说,学习 NoSQL 的成本较高。

    四、NoSQL 数据库分类

    分类 举例 典型应用场景 数据模型 优点 缺点
    键值(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度关系查找等 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。
    1. 键值数据库

      键值数据库类似传统语言中使用的哈希表。你可以通过key来添加、查询或者删除数据,因此有很好的性能及扩展性。

      适用的场景
      储存用户信息,比如会话、配置文件、参数、购物车等,这些信息一般都和ID(键)相关。

      不适用场景
      通过值来查询,Key-Value数据库中没有通过值查询的途径;
      需要储存数据之间的关系,在Key-Value数据库中不能通过两个或以上的键来关联数据;
      事务,在Key-Value数据库中故障产生时不可以进行回滚。

    2. 列存储数据库

      列存储数据库将数据储存在列族中,一个列族存储经常被一起查询的相关数据。

      适用的场景
      日志,因为我们可以将数据储存在不同的列中,每个应用程序可以将信息写入自己的列族中;
      博客平台,我们储存每个信息到不同的列族中。

      不适用场景
      ACID事务,比如 Vassandra 就不支持事务;
      原型设计,在模型设计之初,我们不能去预测它的查询方式,而一旦查询方式改变,我们就必须重新设计列族。

    3. 文档型数据库

      面向文档数据库会将数据以文档的形式储存,每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,也可以是复杂的类型。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。

      适用的场景
      日志,没有固定的模式,故可以使用它储存不同的信息;
      分析,鉴于它的弱模式结构,不改变模式下就可以储存不同的度量方法及添加新的度量。

      不适用场景
      在不同的文档上添加事务。不支持文档间的事务,如果对这方面有需求则不应该选用这个解决方案。

    4. 图数据库

      图数据库允许我们将数据以图的方式储存。实体会被作为节点,而实体之间的关系则会被作为边。

      适用的场景
      一些关系性强的数据中;
      推荐引擎,如果我们将数据以图的形式表现,那么将会非常有益于推荐的制定。

      不适用场景
      不适合的数据模型,图数据库的适用范围很小,因为很少有操作涉及到整个图。

    展开全文
  • Nosql数据库

    2020-06-05 09:49:13
    Nosql数据库 nosql兴起原因 关系数据库无法满足web2.0的需求 one size fits all模式很难使用于截然不同的业务场景 关系数据库的完善事务机制和高效的查询机制在web2.0中用处不大 关系数据库和NOSQL数据库的比较 ...

    Nosql数据库

    在这里插入图片描述
    nosql兴起原因

    1. 关系数据库无法满足web2.0的需求
    2. one size fits all模式很难使用于截然不同的业务场景
    3. 关系数据库的完善事务机制和高效的查询机制在web2.0中用处不大

    关系数据库和NOSQL数据库的比较

    关系数据库 nosql数据库
    RDBMS有关系代数理论为基础 NOSQL无
    RDBMS横向扩展 ,纵向扩展有限性,能随数据的增多而减少 nosql有很好的水平扩展
    rdbms要严格定义数据库模式,严格遵守 nosql无数据库模式
    rdbms用索引机制可快速查询 nosql无面向复杂查询的索引
    rdms遵守事务的acid模型,可保证事务强一致性 NOsql遵守base模型,只能保证一致性
    任何一个rdms都易实现 NOSQL无法实现
    rdbms有标准化,技术成熟 nosql无标准化,起步阶段

    NOSQL三大基石
    CAP:C:一致性 A:可用性 P:分区容忍性
    最终一致性:因果一致性,读己之所写一致性,单调读一致性,会话一致性,单调写一致性
    base

    数据库排行榜
    在这里插入图片描述

    展开全文
  • NoSQL数据库

    2019-07-22 23:16:52
    什么是NoSQL数据库 可以理解为No relational,既非关系型性数据库 关系型数据库和非关系型数据库不是对立,而是相辅相成的,nosql数据库有特殊的结构,将数据库存储到内存里面的。 从性能的角度来讲,NoSQL数据库...

    什么是NoSQL数据库

    可以理解为No relational,既非关系型性数据库

    关系型数据库和非关系型数据库不是对立,而是相辅相成的,nosql数据库有特殊的结构,将数据库存储到内存里面的。

    从性能的角度来讲,NoSQL数据库的性能优于关系型数据库。

    从安全性角度考虑,关系型数据库优于NoSQL数据库。

    所以在项目开发中NOSQL和关系型数据库是一起使用的,达到性能和安全双保证。

    NOSQL数据库的四大分类

    key-value:键值存储数据库

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

    Colunmn:列存储数据库

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

    document:文档型数据库

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

    Graph:图形数据库

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

    NoSQL数据库的四大分类表格分享

    NoSQL的特点

    易扩展

     当一台机器不够用了,很容易添加一个新的服务器,只要配置好环境之后,自动使用。

    大数据量、高性能

    读写速度快,nosql基本都是内存数据库,比硬盘存储要快很多,查询数据快。

    灵活性

    NoSQL无需事先为 要存储的数据 建立字段,随时可以存储自定义的数据格式,在关系型数据库添加字段和删除字段是非常麻烦的。

    高可用

    一台机器宕机出问题了,不会影响其他的机器。

    展开全文
  • 什么是NoSQL数据库NoSQL数据库即为not noly sql 数据库,意为不仅仅是SQL数据库,泛指非关系型数据库: ----->>> NoSQL 不拘泥于关系型数据库的设计范式,放弃了通用的技术标准,为某一领域特定场景而...

    什么是NoSQL数据库?

    NoSQL数据库即为not noly sql 数据库,意为不仅仅是SQL数据库,泛指非关系型数据库:
    ----->>>
    NoSQL 不拘泥于关系型数据库的设计范式,放弃了通用的技术标准,为某一领域特定场景而设计,从而使性能、容量或者扩展性都打到了一定程度的突破。
    NoSQL数据库特点:
    1.它不遵循SQL标准
    2.它不支持ACID
    3.它在某个领域远超于SQL的性能(我们不能绝对的说NoSQL数据库的性能远超于SQL数据库的性能,一定是在某个特定的场合)

    NoSQL数据库适用和不适用的场景:

    nosql适用的场景:
    1.性能好
    2.容量大
    3.扩展性高
    4.当无法使用sql的情况,可以尝试使用nosql

    nosql不适用的场景:
    1.需要事务支持不能使用nosql(事务必须严格的一致性)
    2.基于sql的结构化查询存储,处理较为复杂的关系,不能使用nosql

    NoSQL数据库家族:

    1.Memcache(内存数据库)[可用性很低:因为数据无法持久化,现在已经很少有公司使用了]

    很早出现的NoSql数据库;
    数据都在内存中,一般不持久化;
    支持简单的key-value模式,支持类型单一;
    一般是作为缓存数据库辅助持久化的数据库。

    2.Redis(内存数据库)[支持持久化,可以落盘]

    当内存数据和磁盘数据产生冲突时,Redis数据库会优先选择内存为主要依据,因为内存数据比磁盘数据全,只有当内存的数据都丢失了,才会去磁盘获取数据;
    它几乎覆盖了Memcached的绝大部分功能;
    数据都在内存中,支持持久化,主要用作备份恢复;
    除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
    —>>>
    Redis数据库一般是作为缓存数据库辅助持久化的数据库

    3.Mongodb(文档数据库)(一般会作为数据源)(它不善于做复杂的事务)

    高性能、开源、模式自由(schema free)的文档型数据库;
    数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘;
    虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能;
    支持二进制数据及大型对象;
    可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。

    4.Hbase(列数据库)(与Redis数据库不同,Hbase以磁盘中的数据为主,以内存的数据为次要的)

    HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中;
    HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万列元素的数据表。

    展开全文
  • NoSQl数据库

    2019-10-03 21:28:54
    NoSQl数据库特点: 1.灵活的可扩展性 2.灵活的数据模型 3.与云计算紧密结合 关系型数据库无法满足以下的需求: 1.海里数据的管理需求 2.数据高并发的需求 3.高扩展性和高可用性需求 ...
  • NoSql数据库

    2017-10-10 10:03:25
    一.易扩展: 1.NoSql 数据库种类繁多,但是有一个共同的特点都是去掉关系型...1.NoSql数据库都具有非常高的读写性能,尤其是在大数据量下,同样表现优秀; 2.一般Mysql数据库使用Query Cache,每次表的更新 Cache 就失败,
  • NoSQL数据库原理第8章 其他NoSQL数据库简介第8章 其他NoSQL数据库简介NoSQL并非是一个严谨的概念包含很多能够进行数据管理和查询的系统诸如图数据库专门描述点线关系的数据库例如Neo4j用于缓存系统的键值对数据库...
  • 分布式nosql数据库 NoSQL的现代意义可以追溯到2009年,它指的是不基于关系表构建的数据库,这与SQL数据库不同。 通常, NoSQL数据库比传统SQL 数据库拥有更好的设计灵活性,水平可伸缩性和更高的可用性,有时以牺牲...
  • 大家有没有听说过“NoSQL”呢?大家可能会误以为是“No!SQL”的缩写,但实际上,它是“Not Only SQL”的缩写。它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不...
  • NOSQL 数据库

    2013-11-20 01:09:21
    NoSQL数据库概念 NoSQL 与 关系型数据库差别 NOSQL 产品:http://wuliu.taobao.com/user/order_detail_new.htm?spm=a1z09.2.9.30.ov9nyK&trade_id=457927441499107&seller_id=806937633
  • nosql数据库有哪些1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久保存半结构或非结构化数据并具有灵活模式的非关系数据库。 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,875
精华内容 11,150
关键字:

nosql数据库