课堂笔记之大数据技术基础——NoSQL数据库

时间:2024-03-16 15:39:36

本文概要

  1. NoSQL与关系数据库的比较
  2. NoSQL的四大类型、三大基石
  3. NoSQL和NewSQL数据库的区别
  4. 文档数据库MongoDB编程实践

一、NoSQL概述

NoSQL = Not Only SQL
关系型数据库不可能被完全取代,但是在许多业务场景中,非关系型数据库更有益

1. NoSQL数据的特点

  • 灵活的可扩展性:支持在多个节点进行水平扩展,可以存储海量数据
  • 灵活地数据模型:(HBase)在使用过程中可以动态增删列族
  • 和云计算的紧密结合 :云计算可以根据负载动态地纳入或移出集群中的机器,来达到负载均衡,非关系型数据库由于支持水平扩展,可以与云计算机制紧密结合

传统的关系型数据库特点:

  1. 非常完备的关系理论基础(占据主流市场三四十年)
  2. 具有事务性机制的支持
  3. 高效的查询优化机制

传统关系数据库的缺陷:

  1. 无法满足海量数据的管理需求
  2. 无法满足高并发的需求
  3. 无法满足高可扩展性和高可用性的需求

大多企业都通过MySql集群方式解决负载需求:

  1. 主从服务器实现读写分离,异步方式更新数据
  2. 分库分表

Mysql集群的缺陷:

  1. 复杂性:集群部署和配置非常复杂
  2. 延迟性:主从同步存在延迟
  3. 扩容问题:向集群增加机器时,需要对数据集进行重新划分,非常复杂,人工划分数据集时难以平衡负载

二、NoSQL数据的四大类型

1. 键值数据库

课堂笔记之大数据技术基础——NoSQL数据库
键值数据库是理想的缓冲层解决方案

2. 列族数据库

课堂笔记之大数据技术基础——NoSQL数据库

3. 文档数据库

是键值数据库的一种,value值是一个文档,多使用JSON数据类型
课堂笔记之大数据技术基础——NoSQL数据库

4. 图数据库

课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库

三、NoSQL的三大基石

1. CAP理论

课堂笔记之大数据技术基础——NoSQL数据库
CAP不可能兼得,只能取其二,一般有以下几种选择:

  1. CA:放弃分区容忍性,将所有数据放在同一台服务器上,以获取数据的一致性和可用性(传统数据库,扩展性差)
  2. CP:放弃可用性,成就一致性和分区容忍性,使用网络分区,短时间内数据不一致,等数据一致后再去取数据
  3. AP:放弃一致性,即使数据不一致,也要取用,成就可用性和分区容忍性

2. BASE

课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库

3. 最终一致性

课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库
实现强一致性的最低要求为W+R=N+1

四、从NoSQL到NewSQL

课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库
代表产品:亚马逊的RDS和微软的SQL Azure
课堂笔记之大数据技术基础——NoSQL数据库

五、文档数据库MongoDB

MongoDB中的数据格式叫做BSON,是binary形式的JSON数据
课堂笔记之大数据技术基础——NoSQL数据库
课堂笔记之大数据技术基础——NoSQL数据库