zoukankan      html  css  js  c++  java
  • java

    首先: NoSql = not only sql  。。。    估计第一次见的就我一个以为是不用sql。。。

    1. NoSql泛指非关系数据库。(mysql,oracle 都是经典的关系数据库)

    2. 关系型数据库 和 非关系数据库 最简单的区别:

    关系型数据库是有行列的,栅格结构。

    非关系型不用行列结构存储数据。而是其他形式储存数据:比如key value键值对,列,BSON,图 等结构

    3.非关系型 vs 关系型

    非关系型数据库的优点:

    1. nosql可以直接存储对象,图片等,而且更利于扩展,添加缓存,分布式存储。(关系数据库有表关系,join,外键一类的,导致牵一线而动全身,分布式存储会很困难)

    2. nosql读写更快。 (关系数据库需要用同时更新索引所以会比较慢)

    关系型数据库的优点:

    1. 因为有索引所以查询更快

    2. 标准化的表结构保证了数据的一致性,使得事务逻辑更清晰。

    3. 可以使用join等复杂查询。

    4. 而且发展时间长,更加稳定可靠。

    为什么使用NoSql

    1. 

    传统网站架构:

    数据库 - spring(dio, service) - springMVC(controller) - view(jsp/html)

    随着用户访问量增加,一个数据库可能无法处理那么多数据,需要改进

    解决:

    1. 添加cache(缓存), 处于dal和数据库之间,把经常使用的数据直接从缓存中读取而不是重复数据库查询。

    2.主从分离,读写分离。  在不同数据库上设立主表和从表,主表存经常修改的数据(比如商品评价),从表存只读不写的数据(比如淘宝的用户账号信息,商品基本信息)。

    3.分布式集群。 使用分布式(简单说就是把一个工程的数据分布到很多个服务器上)用多个服务器用来存储数据。(比如一个专门存客户,一个专门存商家,一个专门存商品等)

    4. 后来随着数量越来越大,关系型数据库在分布式方面的弱势越来越明显,所以出现了NoSql

    由于Nosql修改快,mysql查询快,所以目前主流结构是:Nosql 和 mysql 结合。

    商品基本信息:mysql

    商品描述(大字段):MongDB

    商品图片:文件存储数据库TFS

    商品热搜高频字段:内存数据库(redis)

    数据库事务特点:

    传统数据库ACID:

    Atomic(原子性)
    Consistency(一致性)
    Isolation(隔离性)
    Durability(持久性)

    CAP:

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼(3选2)。
    一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
    可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
    分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

    mysql 等数据库就是CA类型

    redis,MongDB等是CP

    CouchDB是AP原则。

    大多数网站开发遵循AP原则:

    因为分布式系统中,分区是必须的,所以P锁定了。

    然后可用性肯定要一直保证。

    而为了解决一致性,采用用BASE的原则:

    基本可用(basically available):保证C

    软状态(soft state):数据可以暂时性不一致

    最终一致(eventually consistent):在最后的时候保持一致

    比如双11,为了减少压力,可以允许一些数据不一致(比如你在双11的 0 点买了一个商品,60%的人都是在那1分钟内点下单,所以先只更新客户表和库存表,让你知道你买了。可能商家的表里还没更新,他还不知道你买了)。等过了高峰后再同步各个分布式数据库的数据。

  • 相关阅读:
    嵌入式:使用dd命令制作烧写文件
    C: 函数的名字是否受大小写影响?
    C++:互斥量C++实现,内存调试,自动锁
    linux环境ubuntu: pushd: not found
    3. 海思Hi3519A MPP从入门到精通(三 视频输入)
    详解YUV数据格式
    海思Hi3519A MPP从入门到精通(二 系统控制)
    海思Hi3519A MPP从入门到精通(一 系统概述)
    HiGV ui代码流程
    音视频学习路线
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11836292.html
Copyright © 2011-2022 走看看