NoSQL技术梳理

主要解决什么是NoSQL,为什么要有NoSQL,和NoSQL的使用场景等问题

数据库拓展方法:
1、memcached缓存

2、mysql主从复制,读写分离

3、mysql分库分表,水平拆分,mysql集群

MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL最好使用InnoDB引擎

4、MySQL不适合存放大的数据

网站布局

用户请求->Nginx负载均衡->服务器->Mysql集群->文件、图片服务器,流媒体服务器,Hadoop集群等

RDBMS:

  • 高度组织化、结构化的数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中
  • 数据操纵语言,数据定义语言
  • 严格的一致性
  • 基础事务
  • 事务特性:ACID(原子性、一致性、独立性、持久性)

NoSQL:
1、非关系型数据库,去掉关系数据库的关系型特征,容易扩展。在架构层面带来了可扩展的能力
2、数据库结构简单,具有非常高的读写性能

  • 不仅仅是SQL
  • 没有声明性查询语言
  • 没有预定义的模式
  • 键值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而不是ACID属性
  • 非结构化和不可预知的数据
  • CAP定理
  • 高性能,高可用和高伸缩性

NoSQL四种类型:

  • KV键值
    • Redis
    • 内容缓存,处理大量数据的高访问负载
    • key-value的键值对,哈希表实现
  • 文档型数据库(bson格式比较多)
    • MongoDB
  • 表结构可变
  • key-value对应的键值对,value是结构化的数据
  • 列存储数据库
    • Hadoop
    • 分布式文件系统
    • 列簇式存储,查找速度快,可扩展性强
  • 图关系数据库
    • Neo4j,InfoGrid
    • 社交网络等的存储
    • 图结构(最短路径寻址等,N度关系查找)

NoSQL中的CAP和Base:

  • CAP
    • Consistency(强一致性)
    • Availability(可用性)
    • Partition tolerance(分区容忍性)

分布式存储系统中的CAP只能三选二

  • CA:RDBMS

  • CP:MongoDB、HBase、Redis

  • AP:CouchDB、Cassandra、DynamoDB、Riak

  • BASE:通过让系统放松对某一时刻数据一致性的要求,来换取系统整体伸缩性和性能的改观

    • 基本可用(Basically Avaliable)
    • 软状态(Soft state)
    • 最终一致性(Eventually consistent)

分布式
在不同的多台服务器上,部署不同的服务模块,他们之间通过Rpc/Rmi通信和调用,对外提供服务和组内协作
集群
不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问

你可能感兴趣的:(NoSQL技术梳理)