• 一、NoSQL发展历史
  • 二、什么是NoSQL
  • 三、为什么使用NoSQL
  • 四、NoSQL vs. RDBMS
  • 五、常见的数据库
  • 六、NoSQL的四种类型
    • 1、键值(Key-Value)存储
    • 2、文档(Document-Oriented)存储
    • 3、列式(Wide Column Store/Column-Family)存储
    • 4、图形(Graph-Oriented)存储
  • 七、NoSQL的优缺点
    • 1、优点
    • 2、缺点
    • 3、总结

一、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

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

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

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

四、NoSQL vs. RDBMS

五、常见的数据库

根据 DB-Engines:https://db-engines.com/en/ranking 的排行,本文截取了排行榜 Top 40 如下图所示。DB-Engines 排名根据数据库管理系统的受欢迎程度对其进行排名。该排名每月更新一次。

六、NoSQL的四种类型

1、键值(Key-Value)存储

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

优点:查询速度快。

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

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

NoSQL 代表:Redis、Memcached…

2、文档(Document-Oriented)存储

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

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

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

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

NoSQL 代表:MongoDB、Elasticsearch、CouchDB…

3、列式(Wide Column Store/Column-Family)存储

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

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

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

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

NoSQL 代表:HBase、ClickHouse、Cassandra …

4、图形(Graph-Oriented)存储

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

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

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

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

NoSQL 代表:Neo4j、Infinite Graph…

七、NoSQL的优缺点

1、优点

高可扩展性
没有标准化
分布式计算
有限的查询功能(到目前为止)
低成本

2、缺点

最终一致是不直观的程序
架构的灵活性,半结构化数据
没有复杂的关系

3、总结

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

数据模型比较简单
需要灵活性更强的 IT 系统
对数据库性能要求较高
不需要高度的数据一致性
对于给定的 Key,比较容易映射复杂值的环境

NoSQL数据库详细介绍相关推荐

  1. Tempdb数据库详细介绍

    Tempdb数据库详细介绍 一.Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象.可以简单理解tempdb是SQLServer的 ...

  2. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软 ...

  3. 【Unity 3D游戏开发】在Unity使用NoSQL数据库方法介绍

    随着游戏体积和功能的不断叠加,游戏中的数据也变得越来越庞杂,这其中既包括玩家产生的游戏存档等数据,例如关卡数.金币等,也包括游戏配置数据,例如每一关的配置情况.尽管Unity提供了PlayerPref ...

  4. python数据库应用开发实例_纯Python开发的nosql数据库CodernityDB介绍和使用实例

    看看这个logo,有些像python的小蛇吧 .这次介绍的数据库codernityDB是纯python开发的. 先前用了下tinyDB这个本地数据库,也在一个api服务中用了下,一开始觉得速度有些不给 ...

  5. SQL Server 中4个系统数据库详细介绍

    SQL Server 中4个系统数据库,Master.Model.Msdb.Tempdb. (1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统 ...

  6. Linux实战教学笔记44:NoSQL数据库开篇之应用指南

    第1章 NoSQL数据库 1.1 NoSQL概述 自关系型数据库诞生40年以来,从理论产生发展到现实产品,例如:大家最常见的MySQL和Oracle,逐渐在数据库领域里上升到了霸主地位,形成每年高达数 ...

  7. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  8. oracle23290,详细介绍Oracle数据库EM Console重建过程

    详细介绍Oracle数据库EM Console重建过程 本文详细介绍了Oracle数据库中EM Console重建的一些知识以及重建时的错误分析与解决,希望能够对您有所帮助. Oracle数据库操作中 ...

  9. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

最新文章

  1. Applese 涂颜色(欧拉定理降幂+快速幂)
  2. System.Text.Json 中的 JsonExtensionData
  3. datagridview实时更新数据_旭诺云盒|智能办公新趋势进出口数据自动提取,通关状态实时更新...
  4. 641. Design Circular Deque
  5. 自旋锁spin : spin_lock_irq , spin_lock_irqsave
  6. 【React 】基于Antd Design的CheckBox多选框组件封装
  7. 好用的服务器终端,推荐7款超级好用的终端工具 —— SSH+FTP
  8. ffmpeg处理——*.flv视频文件和*.ass字幕文件合并成mp4
  9. 遗传算法应用于XGBoost的调参过程
  10. 大型网站之网站静态化(综合篇)
  11. 基于JavaWeb的订餐管理系统的设计与实现
  12. iis8+php环境搭建问题
  13. 为什么发动机需要吸入大量的空气?
  14. 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告
  15. 待办事项 数据库表设计
  16. Linux 线程基础 1
  17. Android 10.0 蓝牙去掉传输文件的功能
  18. 字符串逆序不一样的解法(递归)
  19. tableView 取消 cell 默认下划线样式 - iOS
  20. 【文末送书】2022世界杯冠军预测,机器学习为你揭晓

热门文章

  1. Java 简单实现银行业务
  2. Android Ble 轻量级框架
  3. 开学必备物品有哪些,分享几款必备的数码好物清单
  4. osg20讲(读文件)
  5. 服务器更换桌面壁纸,实时更换桌面背景工具
  6. 在“指尖”完成商务社交,看中融泰隆如何通过LTD官微名片达成高效获客!
  7. linux新建用户命令行无颜色问题
  8. Windows电脑解决Google翻译失效实用方法
  9. 【吭】navicat 连接不上虚拟机上的mysql容器 client does not support authentication protocol requested by server;
  10. HarmonyOS设备开发:HarmonyOS烧录出现“internal/modules/cjs/loader.js:883 throw err;”的解决办法