zoukankan      html  css  js  c++  java
  • Redis-01-NOSQL

    1.SQL的发展历程

      1)单机MySQL的美好时代

        一个网站的访问量一般都不大,而且更多的是静态页面,动态交互类型的网站不多,用单个数据库完全可以轻松应对

      2)缓存+垂直拆分

        随着访问量的上升,部分使用MySQL架构的网站在数据库上都开始出现性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力。但是访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带来了比较高的IO压力。Memcached就成为了一个非常时尚的技术产品。

        同时,对表按业务进行拆分-垂直拆分

      3)主从读写分离

        由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配。

      4)水平拆分-mysql集群

        在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这是MySQL的主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB,引擎代替MyISQM。同时开始流行使用分表分库来缓解写压力和数据增长的扩展问题。

       垂直拆分,读写分离,水平拆分:https://www.cnblogs.com/jthr/p/14470951.html

      

    1.SQLNOSQL 

    关系型数据库:

       1.以表的形式存储数据

      2.数据之前的关系存储在表中

      3.表的格式固定,数据的格式已经被定下来了

      4.扩展性不强(比如业务发生变化,通常需要加表或者在原表的基础上新增修改字段)

      5.有申明式查询语言

      6.有严格的事物

    NOSQL:

       1.数据格式不固定

      2.扩展性强(可以存储任意想要的格式)

      3.没有申明式查询语言

      4.大数据量下高性能

      5.最终一致性,而非ACID属性
      6.CAP定理

      acid和cap:https://www.cnblogs.com/jthr/p/14475318.html

    在现今大数据的时代下,对数据的量、多样性、实时性要求都十分的高。所以对互联网的要求,高并发、易扩展、高可用。Nosql能够提供促进作用。

    2.NOSQL的聚合模型

     nosql的目标是聚合数据,去关系

      Nosql数据模型:

        1.key value键值

        2.BSON

          BSON()是一种类json的一种二进制形式的存储格式,简称为Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象

        3.列族

           按列存储的(把一列的数据作为一个单位存储)。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势

         4.图形

            比如说复杂的用户之间的关系的存储使用图形。

    3.Nosql数据库的四大分类

    类型 部分代表 特点
    列存储

    Hbase

    Cassandra

    Hypertable

    顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

    文档存储

    MongoDB

    CouchDB

    文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。

    key-value存储

    Tokyo Cabinet / Tyrant

    Berkeley DB

    MemcacheDB

    Redis

    可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

    图存储

    Neo4J

    FlockDB

    图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

    5.四类数据库的对比

  • 相关阅读:
    collections.ChainMap类合并字典或映射
    collections.namedtuple()命名序列元素
    过滤、修改和替换列表数据
    快速排序
    itertools.groupby()分组字典列表
    operator.attrgetter() 进行对象排序
    operator.itemgetter() 字典列表排序
    collections.Counter类统计列表元素出现次数
    递归
    正则表达式的一些题
  • 原文地址:https://www.cnblogs.com/jthr/p/14470803.html
Copyright © 2011-2022 走看看