Nosql介绍


  • Lv 1

    【MongoDB简介/设计理论/使用技巧】

    Nosql介绍

    1. 前言:
    MongoDB属于一种可扩展的敏捷Nosql数据库,为了让大家更容易的理解后续MongoDB的教学内容,本章节我们将让大家知道Nosql是什么?相较于关系型数据库有什么不同?我们到底要选择哪种数据库呢?废话不多说,接下来我们直接引领各位进入本章主题。

    2. Nosql介绍

    2.1. Nosql是什么?

    Nosql,亦即Not Only Sql,泛指非关系型的数据库。
    随着现在大规模与高并发的web2.0网站应用,一般关系型数据库已难承受这一类的应用需求场景,也因如此,Nosql数据库在短短几年,有着迅速的发展。Nosql的出现,主要是为了解决大数据应用难题,被用来处理大量数据与多元数据的存储与运算问题。

    2.2. Nosql特性

    • 可弹性扩展:
      Nosql去掉关系数据库的关系型特性,数据之间没了关系就非常容易扩展。

    • BASE:
      BASE,即:基本可用(Basically Available)、可伸缩(Scalable)、最终一致(Eventual consistency)。相较于关系型数据库的ACID严格事务特性,Nosql数据库仅保证BASE。

    • 大数据量/高性能:
      由于无关系性与单纯的数据结构,因此Nosql数据库往往有较好的读写性能。

    • 灵活的数据模型:
      Nosql不需要事先定义数据字段,随时可以存储自定义的数据格式,此特性有利于在一张大数据量的表中新增一个字段的情况。

    • 高可用:
      Nosql可通过复制,更容易的实现高可用的特性。

    2.3. Nosql数据库常见的四大类:

    • 键/值(Key-value)存储数据库:
      主要使用hash来透过特定键查找特定数据,这类数据库在存储时不采用任何模式(Schema),因此极易于实现添加数据,但缺点是必须透过键值查找,无法针对存储的内容值来查找元素,适用于大量数据的高访问负载场景,常用于日志系统,此类数据库如:Redis/Voldemort/Scalaris/Oracle Berkeley DB都是属于此类。

    • 列存储数据库:
      列存储是以列为单位做数据存储,相对行存储方式,它更适合用于批量数据处理与实时数据查询。优点在于因同列数据格式相同更适合数据压缩,因此更善于处理大量数据查询与计算、且有利于分布式扩展,但不适合作删除或更新的实时操作,列存储数据库如:Sybase IQ/Vertica等。

    • 图存储数据库:
      图存储数据库应用途行理论存储实体之间的关系信息,如社交关系网络、族谱,一般关系型数据库存储效能较差,图存储数据库的设计可弥补这个缺失。如:Neo4j、FlockDB、GraphDB等。

    • 文档型数据库:
      文档型数据库采用面向文档的方式来存储数据库,亦即可将单个实体的所有数据都存在一个文档中,而文档存在集合中,适合对文档中某些字段建立索引。文档包含实体的所有信息,包括子文档。一般以半结构的文档以特定格式存储,如JSON格式,MongoDB即属于此类。

    2.4. 什么时候选择Nosql?(适用场景)

    既然Nosql数据库有这么多的优势,诸如:高性能、可扩展性、灵活数据模型,是否可直接取代关系型数据库(Relational Database,RDB)呢?回顾前言,其实Nosql并无法完全取代RDB,Nosql主要是为了”解决大数据应用难题,被用来处理大量数据与多元数据的存储与运算问题” 。在这样的特性差异下,我们将如何选择数据库来解决数据存储与处理的问题呢?以下提供几点做为判断依据,我们就能有个初步的决定了。

    • 数据模型复杂度:
      Nosql适合模型复杂度较低的应用,若需要多表关联的模型,则更适合用RDB,若对象实体关联少(能以文档方式合并)或仅有简单的键值结构,则适用于Nosql。

    • 对数据库性能要求:
      若数据库速度至关重要,那么使用Nosql可能是合适的,它能透过数据分布大幅的提高性能。

    • 数据一致性的要求:
      Nosql的一大缺点是他的一致性方面无法与RDB系统相提并论,仅能做到最终一致,因此强一致性/强事务的需求较难被同时满足。

    • 数据可用性的要求:
      考虑数据若不可用所可能造成的风险,Nosql数据库提供强大的数据可用性(在部分应用上,响应延迟也算某种程度的非高可用)。
      对于一个项目需求的数据库应用,并非总是选择单一种数据库,可以将应用切开设计,将需要RDB特性的数据放在RDB使用(如:交易系统),而其他数据放在Nosql中管理,如:每日交易纪录。

    2.5. Nosql的历史

    NoSQL最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。
    2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。

    2.6. 结语
    Nosql数据库拿掉了数据关联,进而达到数据分布存储与处理的目的,不但满足了扩展的需求,也实现并行处理的高效能,对于现今web 2.0的高效能、弱事务应用的疑难杂症提供了完善的解决方案,Nosql数据库也在近几年如雨后春笋般冒出,并得到蓬勃的发展。


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待