zoukankan      html  css  js  c++  java
  • 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配合使用

  • 相关阅读:
    【Wyn Enterprise BI知识库】 什么是商业智能 ZT
    Wyn BI的机会在哪里:越靠近消费者的行业,比如零售、文娱和金融,信息化投入越大 ZT
    客户化软件时代的前夜 ZT
    在“非软件企业”开发软件的困局 ZT
    行业观察报告:从SAAS困局看行业趋势 ZT
    超级干货 :一文读懂数据可视化 ZT
    传统BI还是自助式BI---BI与数据分析 ZT
    【BI学习笔记】在Linux上安装Wyn Enterprise商业智能报表服务器
    MAMP 配置: Mac with OSX 10.8 + (Mac + Apache + MySQL + Php)
    Emule Xtreme Kid eD2K 设置
  • 原文地址:https://www.cnblogs.com/oxygenG/p/13781523.html
Copyright © 2011-2022 走看看