NoSQL概述

nosql思维导图 NoSQL(Not Only SQL),"不仅仅是SQL", 泛指非关系型的数据库; 特点: 易扩展; 在大数据量下,NoSQL 数据库具有非常高的读写性能; 多样灵活的数据模型; RDBMS(关系型数据库)和NoSQL 比较 RDBMS 高度组织化结构化数据; 结构化查询语言(SQL); 数据和关系都存储在单独的表中; 数据操作语言,数据定义语言; 严格的一致性; 基础事务; 立即下载

引言

  • 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了 解 决 大 规 模 数 据 集 合 多 重 数 据 种 类 \color{HotPink}{解决大规模数据集合多重数据种类} 解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超 大 规 模 数 据 的 存 储 \color{HotPink}{大规模数据的存储} 大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
  • 如今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

是什么?

  • NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。泛指 非 关 系 型 的 数 据 库 \color{HotPink}{非关系型的数据库} 非关系型的数据库。是对不同于传统的关系型数据库的数据库管理系统的统称。

RDBMS vs NoSQL

RDBMS(关系型)NoSQL(非关系型)
高度组织化结构化数据代表着不仅仅是SQL
结构化查询语言(SQL)没有声明性查询语言
数据和关系都存储在单独的表中没有预定义的模式
数据操纵语言,数据定义语言键 - 值对存储,列存储,文档存储,图形数据库
严格的一致性最终一致性,而非ACID属性
基础事务非结构化和不可预知的数据
 CAP定理
 高性能,高可用性和可伸缩性

CAP定理(CAP theorem)

  • CAP定理(CAP theorem), 又被称作布鲁尔定理(Brewer’s theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
    • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
    • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    • 分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
  • CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的 满 足 两 个 \color{HotPink}{满足两个} 满足两个。
  • 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
    • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
    • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
      CAP theorem
CAP theorem

ACID vs BASE

  • 关系型数据库ACID规则
    • A(Atomicity) 原子性:在事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
    • C (Consistency) 一致性:数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
    • I (Isolation) 独立性:并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
    • D (Durability) 持久性:事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
  • 非关系型数据库BASE思想
    • BASE:Basically Available, Soft-state, Eventually Consistent,是NoSQL数据库通常对可用性及一致性的弱要求原则:
      • Basically Availble –基本可用
      • Soft-state –软状态/柔性事务。 “Soft state” 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
      • Eventual Consistency – 最终一致性, 也是是 ACID 的最终目的。
ACIDBASE
原子性(Atomicity)基本可用(Basically Available)
一致性(Consistency)软状态/柔性事务(Soft state)
隔离性(Isolation)最终一致性 (Eventual consistency)
持久性 (Durable) 

NoSQL数据库分类

类型部分代表特点
列存储Hbase、Cassandra、Hypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储MongoDB、CouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储Tokyo Cabinet / Tyrant、Berkeley DB、MemcacheDB、Redis可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储Neo4J、FlockDB图形关系的最佳存储(社交网络图、广告推荐系统)。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储db4o、Versant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库Berkeley DB XML、BaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
附

大致演变历程

  • 1. 单机MySQL时代
    • 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。
      在那个时候,更多的都是静态网页,动态交互类型的网站不多。
      单机mysql时代网站架构
单机MySQL 网站架构
  • 上述架构下数据存储的瓶颈是什么?

    • 1.一个机器能存储数据量的总大小有限
    • 2.数据库的索引与数据在同一个数据库,随着索引增加,效率反而降低
    • 3.读写混合(在同一数据库实例),并发有限
  • 2. Memcached(缓存)+MySQL+垂直拆分

    • 随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过 文 件 缓 存 \color{HotPink}{文件缓存} 文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候, M e m c a c h e d \color{HotPink}{Memcached} Memcached就自然的成为一个非常时尚的技术产品。
      这里写图片描述
    Memcached+MySQL+垂直拆分 网站架构
    • M e m c a c h e d \color{HotPink}{Memcached} Memcached 作为一个独立的分布式的 缓 存 服 务 器 \color{HotPink}{缓存服务器} 缓存服务器,为多个web服务器提供了一个共享的、高性能缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展,然后又出现了 一 致 性 h a s h \color{HotPink}{一致性hash} 一致性hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存失效的弊端。
  • 3. MySQL主从读写分离

    • 由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用 主 从 复 制 技 术 \color{HotPink}{主从复制技术} 主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。
      这里写图片描述
    MySQL主从读写分离 网站架构
  • 4. 分表分库+水平拆分+MySQL集群

    • 在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB(行锁)引擎代替MyISAM。
    • 同时,开始流行使用 分 表 分 库 \color{HotPink}{分表分库} 分表分库来缓解写压力和数据增长的扩展问题。这个时候,分表分库成了一个热门技术,也就在这个时候,MySQL推出了还不太稳定的表分区。虽然MySQL推出了 M y S Q L \color{HotPink}{MySQL} MySQL  C l u s t e r 集 群 \color{HotPink}{Cluster集群} Cluster集群,但性能也不能很好满足互联网的要求,只是在高可靠性上提供了非常大的保证。
      这里写图片描述
    分表分库+水平拆分+MySQL集群 网站架构
  • 5. MySQL的扩展性瓶颈

    • MySQL数据库也经常存储一些大文本字段,导致数据库表非常的大,在做数据库恢复的时候就导致非常的慢,不容易快速恢复数据库。比如1000万4KB大小的文本就接近40GB的大小,如果能把这些数据从MySQL省去,MySQL将变得非常的小。关系数据库很强大,但是它并不能很好的应付所有的应用场景。MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难,正是当前使用MySQL的开发人员面临的问题。
  • 6. 今天是什么样子
    这里写图片描述

致谢:

  1. 尚硅谷-周阳老师的视频教程
  2. NoSQL 简介 | 菜鸟教程
NoSQL数据库入门思维导图 这个需要那个mindmanger才能打开,这是关于数据可的两张思维导图。 立即下载

相关推荐

MySQL实用教程课后答案

MySQL实用教程(高等学校计算机教材) 郑阿奇 第1章 数据库的基本概念 第2章 数据库和表 第3章 表数据操作 第4章 数据库的查询和视图 第5章 索引与数据完整性约束 第6章 MySQL语言结构 第7章 过程式数据库对象 第8章 备份与恢复 第9章 用户和数据安全性 第10章 事务和多用户 第二部分 MySQL实验 实验1 MySQL的使用 实验2 创建数据库和表 实验3 表数据插入、修改和删除 实验4 数据库的查询和视图 实验4.1 数据库的查询 实验4.2 视图的使用 实验5 索引和数据完整性 实验6 MySQL语言结构 实验7 过程式数据库对象的使用 实验8 备份与恢复 实验9 数据库的安全性 第三部分 实习 实习1 Ubuntu下PHP/MySQL学生成绩管理系统 实习2 ASP.NET(C#)/MySQL学生成绩管理系统

NoSQL简介

1.1 什么是NoSQL NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 1.2 为什么使用NoSQL 今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用...

日积月累 5492

动态规划与状态压缩:从TSP问题理解算法优化核心思想

动态规划是一种通过将复杂问题分解为重叠子问题并存储中间结果来避免重复计算的核心算法思想,广泛应用于路径优化、资源分配和序列决策等场景。其核心原理在于最优子结构和无后效性,通过状态设计和状态转移方程,将指数级复杂度问题转化为多项式时间可解。在工程实践中,状态压缩技术常被用于高效表示集合状态,例如使用二进制位运算来操作城市访问集合,从而大幅提升算法效率。本文以经典的旅行商问题(TSP)为例,深入剖析如何运用动态规划与状态压缩技术,将暴力穷举的指数级复杂度优化为可管理的计算量,为解决组合优化问题提供了重要的方法论

weixin_32075843的博客 365

NoSQL数据库入门

NoSQL 是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称,它所采用的数据模型并非传统关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。NoSQL 数据库没有固定的表结构,通常也不存在连接操作,也没有严格遵守 ACID 约束。因此,与关系数据库相比,NoSQL 具有灵活的水平可扩展性,可以支持海量数据存储。此外,NoSQL数据库支持 MapReduce 风格的编程,可以较好地应用于大数据时代的各种数据管理。

琅琊之榜 3334

Ubuntu终端一键安装英伟达驱动:无需手动下载的完整指南

本文提供了一份在Ubuntu系统上通过终端命令一键安装英伟达显卡驱动的完整指南。该方法利用官方PPA源,无需手动下载驱动文件,可自动检测硬件并安装最佳版本,极大简化了流程,适合深度学习环境搭建等场景,有效提升安装效率与稳定性。

weixin_29232121的博客 180

Gradient Accumulation 梯度累加/梯度累积 (Pytorch)

我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size...

hxxjxw的博客 5800

ACID、BASE与CAP三者联系与区别

ACID原则 我们先介绍什么是ACID原则,ACID是关系数据库系统采纳的原则,也是一种简称,其代表含义如下。 原子性(Atomicity):是指一个事务要么全部执行, 要么完全不执行。也就是不允许一个事务只执行了一半就停止。 以银行转账为例,这是一个典型的事务.它的操作可以分成几个步骤.首先从A账户取出要转账的金额, A账户扣除相应的金额, 之后将其转入B账户的户头, B账户增加相同的金额。这个过程必须完整地执行,否则整个过程将被取消,回退到事务未执行前的状态,不允许出现从A账户巳经扣除金额,而没有打入B

HoppingMad的博客 3292

一篇把 Transport 做到可复制的实战指南:从 CTS 底层表到 LSMW、Variant、Layout、TABU、Query、SAPscript 全对象搬运

本文深入解析SAP系统中的Transport机制,将其视为可审计、可追溯的变更流水线。文章从CTS/Transport Organizer通用方法论和具体对象搬运手法两个层面展开,详细介绍了LSMW项目、程序Variant、屏幕/ALV Layout、表数据、ABAP Query、SAPscript和SO10标准文本等对象的传输策略。通过真实案例说明,代码对象往往能被正确传输,但"运行体验"和"业务配置"却常被遗漏,导致QAS测试正常而PRD环境异常。文章提供了一套可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 168

NoSQL非关系型数据库概述

文章目录NOSQL概念关系型数据库和非关系型数据库的区别:NoSQL非常重要的原因NoSQL的应用场景 NOSQL概念   NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。Redis就是NOSQL 非关系型数据库的典型代表 关系型数据库和非关系型数据库的区别: 关系型数据库特点(Mysql Oracle SqlServer为代表的数据库) 数据是由一张张的表组成,而且这些表与表之间有关系(一对一,一对多,多对多) 数据是

Java小皮孩 2962

Android-Zygote进程的诞生—从init到Zygote启动

Android Zygote进程启动流程解析 Android系统的Zygote进程是所有应用进程的父进程,由init进程创建。启动流程分为: 内核阶段:加载init进程(PID=1) init进程阶段: 挂载基础文件系统(tmpfs、proc等) 设置SELinux安全策略 解析init.rc配置文件 Zygote启动:init进程通过app_process启动Zygote,预加载系统资源 SystemServer:Zygote fork出系统服务进程 关键点: init是用户空间第一个进程......

保持专注,保持热爱 636

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

NoSQL概述 非关系型数据库

NoSQL 一、关系型数据库存在的问题 1. 问题现象 购票网站,商城网站等在用户高峰期时服务器存在崩溃的现象 2. 现象特征 (1) 海量用户 (2) 高并发 3. 造成原因 服务器奔溃并不是服务器本身的问题,而是关系型数据库(MySQL等)的局限性 (1) 性能瓶颈 关系型数据库在读写数据时会使用磁盘IO,性能较低 (2) 扩展瓶颈 关系型数据库中表与表之间的关系是十分复杂的,某张表可能通过外键关联了许多张表, 而这些被关联的表可能也会去关联很多张表,这就导致查询数据时需要动用多张表,十分 影响查询效率

立志成为一个前端、后端、测试全方位发展的程序员 1627

英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍

简单介绍英飞凌 AURIX TC3XX 系列多核单片机的 Flash,便于快速上手使用

大橙子的博客 6637

NoSQL 非关系型数据库概述

文章目录一、前言二、为什么使用NoSQL三、NoSQL和关系型数据库对比四、NoSQL 的特点五、NoSQL基本概念六、NoSQL的三大基石(CAP、BASE和最终一致性)CAPBASE最终一致性七、NoSQL分类八、列存储数据库(Wide Column Store) 一、前言 在开始HBase的学习之前,我们有必要了解一下NoSQL,为什么要使用NoSQL,NoSQL和关系型数据库的对比,N...

beautiful_huang的博客 509

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NoSQl概述

书山有路勤为径,学海无涯苦作舟 了解NoSQL演变 1、单机MySQL时代 90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够! 那个时候,更多的去使用静态网页Html~服务器没有太大的压力! 思考一下,这种情况下:整个网站的瓶颈是什么? 1、数据量太大,一个机器放不下 2、数据索引(B+Tree),一个机器内存放不下 3、访问量(读写混合),一个服务器承受不了 只要开始出现以上三种情况之一,那么就需要晋级 2、Memcached(缓存)+MySQL+垂直拆分 网站80%的情况下都是在读,.

weixin_48903815的博客 1982

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NoSQL非关系型数据库概述根据发展时间详细介绍

Nosql概述 1.为什么使用Nosql 1、单机MySQL的年代! 90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够! 那个时候,更多的去使用静态网页Html~服务器没有太大的压力! 这种情况下:整个网站的瓶颈是什么? 1、数据量如果太大,一台机器放不下了! 2、数据的索引(B+tree),一个机器内存也放不下(mysql数据库当数据量达到300万条,就需要建立索引,不然查询就会非常慢) 3、访问量(读写混合),一个服务器承受不了 只要有以上三种情况之一,就需要晋级了! 2、Memc

key_world的博客 888

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

2-NoSQL(非关系型数据库)-入门概述

1、NoSQL是什么? NoSQL(Not only SQL,不仅仅是数据库),泛指非关系型数据库数据库,其数据存储不需要固定的模式,无需多余操作就可以横向扩展。 2、传统的RDBMS VS NOSQL 3、传统的非关系型数据库:Redis、Mem...

chuiai8582的博客 701

非关系型数据库概述-NoSQL

The advantage of the relational model  Flexible, suits and data model  Can integrate multiple applications via shared data store  Standard within and between organizations  Standard interface lan...

weixin_42426385的博客 274

一、NoSQL入门概述

                           

weixin_33978016的博客 71

非关系型数据库---NoSQL概述

NoSQL概念 随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字。) NoSQL被我们用得最多的当数key-value存储,当然还...

回家养老 376

NoSQL(非关系型数据库)概述及分类

NoSQL,泛指非关系型的数据库,NoSQL去掉关系数据库的关系型特性,数据之间无关系,非常容易扩展NoSQL型数据库一般包含一些共同特性:易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展,在架构的层面上带来了可扩展的能力大数据量,高性能NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下。一般 MySQL 使用 Query Cache。

m0_73613534的博客 405

NoSQL入门概述

NoSQL入门概述 一、 入门概述 互联网时代背景下大机遇,为什么用nosql 1) 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读...

Young_Fee的博客 265
上一篇: JSTL关于c:forEach序号的问题
下一篇: Redis(一)-安装+HelloWorld
松林羊
博客等级 码龄11年 43粉丝 58原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值