NoSQL数据库详细介绍
- 一、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数据库详细介绍相关推荐
- Tempdb数据库详细介绍
Tempdb数据库详细介绍 一.Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象.可以简单理解tempdb是SQLServer的 ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软 ...
- 【Unity 3D游戏开发】在Unity使用NoSQL数据库方法介绍
随着游戏体积和功能的不断叠加,游戏中的数据也变得越来越庞杂,这其中既包括玩家产生的游戏存档等数据,例如关卡数.金币等,也包括游戏配置数据,例如每一关的配置情况.尽管Unity提供了PlayerPref ...
- python数据库应用开发实例_纯Python开发的nosql数据库CodernityDB介绍和使用实例
看看这个logo,有些像python的小蛇吧 .这次介绍的数据库codernityDB是纯python开发的. 先前用了下tinyDB这个本地数据库,也在一个api服务中用了下,一开始觉得速度有些不给 ...
- SQL Server 中4个系统数据库详细介绍
SQL Server 中4个系统数据库,Master.Model.Msdb.Tempdb. (1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统 ...
- Linux实战教学笔记44:NoSQL数据库开篇之应用指南
第1章 NoSQL数据库 1.1 NoSQL概述 自关系型数据库诞生40年以来,从理论产生发展到现实产品,例如:大家最常见的MySQL和Oracle,逐渐在数据库领域里上升到了霸主地位,形成每年高达数 ...
- 15个nosql数据库
1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...
- oracle23290,详细介绍Oracle数据库EM Console重建过程
详细介绍Oracle数据库EM Console重建过程 本文详细介绍了Oracle数据库中EM Console重建的一些知识以及重建时的错误分析与解决,希望能够对您有所帮助. Oracle数据库操作中 ...
- Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁
1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...
最新文章
- Applese 涂颜色(欧拉定理降幂+快速幂)
- System.Text.Json 中的 JsonExtensionData
- datagridview实时更新数据_旭诺云盒|智能办公新趋势进出口数据自动提取,通关状态实时更新...
- 641. Design Circular Deque
- 自旋锁spin : spin_lock_irq , spin_lock_irqsave
- 【React 】基于Antd Design的CheckBox多选框组件封装
- 好用的服务器终端,推荐7款超级好用的终端工具 —— SSH+FTP
- ffmpeg处理——*.flv视频文件和*.ass字幕文件合并成mp4
- 遗传算法应用于XGBoost的调参过程
- 大型网站之网站静态化(综合篇)
- 基于JavaWeb的订餐管理系统的设计与实现
- iis8+php环境搭建问题
- 为什么发动机需要吸入大量的空气?
- 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告
- 待办事项 数据库表设计
- Linux 线程基础 1
- Android 10.0 蓝牙去掉传输文件的功能
- 字符串逆序不一样的解法(递归)
- tableView 取消 cell 默认下划线样式 - iOS
- 【文末送书】2022世界杯冠军预测,机器学习为你揭晓
热门文章
- Java 简单实现银行业务
- Android Ble 轻量级框架
- 开学必备物品有哪些,分享几款必备的数码好物清单
- osg20讲(读文件)
- 服务器更换桌面壁纸,实时更换桌面背景工具
- 在“指尖”完成商务社交,看中融泰隆如何通过LTD官微名片达成高效获客!
- linux新建用户命令行无颜色问题
- Windows电脑解决Google翻译失效实用方法
- 【吭】navicat 连接不上虚拟机上的mysql容器 client does not support authentication protocol requested by server;
- HarmonyOS设备开发:HarmonyOS烧录出现“internal/modules/cjs/loader.js:883 throw err;”的解决办法