NoSQL数据库介绍

目录

一、发展历史

二、什么是NoSQL?

三、为什么使用NoSQL?

四、NoSQL vs. RDBMS

五、NoSQL的四种类型

键值存储

文档存储

列式存储

图形存储

六、NoSQL的优缺点

七、NoSQL的特点

灵活的可扩展性

灵活的数据模型

与云计算紧密融合

大数据量,高性能

高可用


一、发展历史

        NoSQL 一词最早出现于 1998 年,是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的关系数据库。

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

        2009 年在亚特兰大举行的"no:sql(east)“讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false”。因此,对 NoSQL 最普遍的解释是"非关联型的",强调 Key-Value Stores 和文档数据库的优点,而不是单纯的反对 RDBMS。

二、什么是NoSQL?

        NoSQL(Not Only SQL),意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。

        NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

        NoSQL不是反对“SQL”语言,只是简单表示和RDBMS的不同。

        大多数起源于互联网企业,更适应互联网业务。

        大多是开源免费的,但可能缺乏完善的文档和服务。

        NoSQL数据库会采用非关系型的数据模型。弱化模式或者表结构,弱化完整性约束,弱化甚至取消事务机制。

        可能无法支持,或者不能完整的支持SQL语句。

        目的是实现强大的分布式部署能力--- 一般包括分区容错性、伸缩性和访问效率(可用性)等。

        不同类型的关系型或者NoSQL数据库侧重点不同,因此,不能简单地说谁更优秀。

三、为什么使用NoSQL?

        随着互联网的飞速发展与普及,网民上网冲浪时所产生数据也逐日增多,从 GB 到 TB 到 PB。这些数据有很大一部分都是由关系型数据库管理系统(RDBMS)来进行处理的。

        由于关系型数据库的范式约束、事务特性、磁盘 IO 等特点,若服务器使用关系型数据库,当有大量数据产生时,传统的关系型数据库已经无法满足快速查询与插入数据的需求。NoSQL 的出现解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,获取性能上的提升。但是,在某些特定场景下 NoSQL 仍然不是最佳人选,比如一些绝对要有事务与安全指标的场景。

        NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

四、NoSQL vs. RDBMS

五、NoSQL的四种类型

  • 键值存储

        特点:键值数据库就像传统语言中使用的哈希表。通过 Key 添加、查询或者删除数据。

        优点:查询速度快。

        缺点:数据无结构化,通常只被当作字符串或者二进制数据存储。

        应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载。

        NoSQL 代表:Redis、Memcached…

  • 文档存储

        特点:文档数据库将数据以文档的形式储存,类似 JSON,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。

        优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。

        缺点:查询性能不高,缺乏统一的查询语法。

        应用场景:日志、 Web 应用等。

        NoSQL 代表:MongoDB、Elasticsearch、CouchDB…

  • 列式存储

        特点:列存储数据库将数据储存在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是它们的特点是指向了多个列。举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

        优点:列存储查找速度快,可扩展性强,更容易进行分布式扩展,适用于分布式的文件系统,应对分布式存储的海量数据。

        缺点:查询性能不高,缺乏统一的查询语法。

        应用场景:日志、 分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。

        NoSQL 代表:HBase、ClickHouse、Cassandra …

  • 图形存储

        特点:图形数据库允许我们将数据以图的方式储存。

        优点:图形相关算法。比如最短路径寻址,N 度关系查找等。

        缺点:很多时候需要对整个图做计算才能得出需要的信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃。

        应用场景:社交网络,推荐系统等。专注于构建关系图谱。

        NoSQL 代表:Neo4j、Infinite Graph…

六、NoSQL的优缺点

  • 优点

        高可扩展性

        没有标准化

        分布式计算

        有限的查询功能(到目前为止)

        低成本

  • 缺点

        最终一致是不直观的程序

        架构的灵活性,半结构化数据

        没有复杂的关系

  • 总结

        NoSQL 数据库在以下几种情况下比较适用:

        数据模型比较简单

        需要灵活性更强的 IT 系统

        对数据库性能要求较高

        不需要高度的数据一致性

        对于给定的 Key,比较容易映射复杂值的环境

七、NoSQL的特点

  • 灵活的可扩展性

        传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展” 在面对数据库负载大规模增加时,往往需要通过升级硬件来实现“纵向扩展” NoSQL数据库在设计之初就是为了满足”横向扩展”的需求,因此天生具备良好的水平扩展能力。

  • 灵活的数据模型

        关系数据库具有规范的定义,遵守各种严格的约束条件。这种做法虽然保证了业务系统对数据一致性的需求,但是过于死板的数据模型,也意味着无法满足各种新兴的业务需求。相反,NoSQL数据库采用健/值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。

  • 与云计算紧密融合

        云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加人或退出,NoSQL数据库可以凭信自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融人到云计算环境中,构建基于NoSQL的云数据库服务。

  • 大数据量,高性能

        nosql数据库都有着非常亮的读写性能,特别是在大数据量之下 一样也衷现的非常的优界,这主要得益于它的无关系性,数据库的结构简单。

        通常的nosql使用Query Cache。nosql的Cache是记录级的,是一种细粒度的Cache,所以说,nosql从这个方面来说的话,性能就要高了很多了。

  • 高可用

        高可用也是nosql很明显的一个特点,nosql在不太响性能的情况之下,就能够非常方便的实现高可用架构,通过模型的话也可以实现高可用。

相关推荐

  1. NoSQL数据库

    2024-03-10 03:10:05       52 阅读
  2. NoSQL数据库

    2024-03-10 03:10:05       41 阅读
  3. 【架构-15】NoSQL数据库

    2024-03-10 03:10:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 03:10:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 03:10:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 03:10:05       82 阅读
  4. Python语言-面向对象

    2024-03-10 03:10:05       91 阅读

热门阅读

  1. docker安装mariadb数据库

    2024-03-10 03:10:05       45 阅读
  2. iommu=pt内核参数解析

    2024-03-10 03:10:05       72 阅读
  3. 并发编程--Volatile关键字

    2024-03-10 03:10:05       47 阅读
  4. 串口移位寄存器

    2024-03-10 03:10:05       47 阅读
  5. 康威生命游戏

    2024-03-10 03:10:05       42 阅读
  6. .SVN 信息泄露漏洞原理以及修复方法

    2024-03-10 03:10:05       47 阅读
  7. Prompts(一)

    2024-03-10 03:10:05       41 阅读
  8. 实现video视频缓存

    2024-03-10 03:10:05       46 阅读
  9. http请求重定向

    2024-03-10 03:10:05       63 阅读