• NoSQL概览


    1. Why NoSQL

    1.1 单机版本

    前提:网站访问量不大的时候,单机版的数据库足够

    思考(应用瓶颈),出现如下三种情况之一,架构必须要升级:

     1. 数据量太大,单个数据库无法存放

     2. 数据索引(单表数据量大于300W,一定要建立索引)索引太大内存无法存放;

     3. 访问量(读写混写)单个数据库扛不住峰值

    1.2 缓存&读写分离版本 

     Memcached(缓存)+ MySQL + 垂直拆分(读写分离)

     分析发展过程:优化数据结构和索引==>文件缓存(IO)==>Memcache

     1. 早期在没有MyCat等数据库中间件的时候,3个MySQL实例会有数据同步的问题,可以同时冗余三分一模一样的数据

     2. 引入另外一种策略(读写分离),3个实例:一个负责写操作,两外两个负责读,并增加同步机制;

     3. 针对频查询的数据,增加缓存机制,减轻数据库压力

    1.3 分库分表&集群版本 

     分库分表 + 水平拆分(MySQL集群)

     早期MyISM:表锁,查询表中的一条记录会锁住整张表,效率低下,高并发下会出现严重的锁问题

     转战Innodb:查询时行锁,锁一行数据

     分库分表解决写的压力,分表(根据不同的字段拆分大表)

    1.4 SQL瓶颈

     如今的时代

     1.定位+音乐+热榜+图片数据的存储不适用于关系型MySQL数据库,效率低下 ===>NoSQL

     2.大数据量的IO下,表结构几乎无法修改

    2. What‘s NoSQL

     2.1 NoSQL分类&特点

    ## NoSQL四大分类:

     1.KV键值对:Redis、Memcache

     2.文档型数据库:MongoDB、ConthDB

     3.列存储数据库:HBase、分布式文件系统

     4.图数据库:Neo4j、InfoGrid A*,最短路径算法

    ## NoSQL特点:

     1. 方便扩展(数据之间没有关系)

     2. 大数据量,高性能(Redis一秒写8W次,一秒读11W)

     3. 数据类型多样,不需要设计数据库

     2.2 RDBMS和NoSQL区别

    SQL

    • ​ 数据和关系维护在单独的表中
    • ​ 数据定义语言
    • ​ 严格的一致性
    • ​ 基础的事务

    NoSQL

    • ​ 键值对存储数据、列存储、文档存储、图形数据库
    • ​ 最终一致性
    • ​ CAP定理和BASE理论
    • ​ 保证三高特性【高性能,高可用,高可扩展】

    3. 拓展

     大数据时代的3V(描述问题):海量,多样,实时

     大数据时代的3高(程序要求):高并发高可拓(可随时拓展集群)、高性能(保证用户体验和性能)

     实际项目:NoSQL+RDBMS配合使用

  • 相关阅读:
    telnet命令测试端口连接是否正常, telnet不是内部或外部命令的方案
    Linux常用命令
    nginx的反向代理的优势,特点于原理(一)
    linux操作系统中的常用命令以及快捷键(一)
    Centos网卡名称命名
    Centos第一次使用配置IP地址
    Linux环境下交叉编译器安装及运行
    jupyter更换路径
    python3实现在二叉树中找出和为某一值的所有路径
    使用 SQL 服务器时,"评估期已过期"错误消息
  • 原文地址:https://www.cnblogs.com/oxygenG/p/13781523.html
Copyright © 2020-2023  润新知