Java教程

NOSQL

本文主要是介绍NOSQL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

项目发展历程

单机MySQL的年代

网站的瓶颈:

  1. 数据量太大,一个机器放不下
  2. 数据的索引(B + Tree),一个机器内存也放不下
  3. 访问量(读写混合),一个服务器承受不了

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

网站80%的情况都是读的情况,为了减轻数据的压力,可以使用缓存来保证效率。

发展过程:

  1. 优化数据结构和索引
  2. 文件缓存(IO)
  3. Memcached

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

本质:数据库(读,写)

数据库引擎历史:

早些年使用MyISAM:表锁,十分影响效率,高并发下就会出现严重的锁问题

转战Innodb:行锁

慢慢的开始使用分库分表来解决写的压力,MySQL的集群,很好的解决。

当前基本互联网项目架构

NOSQL

为什么使用NOSQL

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等信息爆发式增长,使用NOSQL可以很好的解决这个问题

简介

NOSQL: Not Only SQL (不仅仅是SQL)

  • 泛指非关系型数据库,随着Web2.0诞生。传统的关系型数据库很难对付Web2.0时代。尤其是超大规模的高并发问题。
  • 很多的数据类型,如用户的个人信息,社交网络,地址位置等。这些数据类型的存储不需要一个固定的格式。不需要多余的操作就可以横向扩展。

特点

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据量性能(Redis一秒写8万次,读11万次。NOSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
  3. 数据类型是多样型的(不需要事先设计数据库,随取随用)
  4. 传统RDBMS和NOSQL对比
RDBMS
- 结构化组织
- SQL查询语言
- 数据和关系都存在单独的表中
- 数据操作语言,数据定义语言
- 严格的一致性
- 基础的事物
NOSQL
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库
- 最终一致性
- CAP定理和BASE(异地多活)
- 高性能,高可用,高可扩展性

大数据时代的特点

  • 大数据的3V:描述问题

    1. 海量Volume
    2. 多样Variety
    3. 实时Velocity
  • 大数据的3高,对程序的要求

    1. 高并发
    2. 高可扩展性
    3. 高性能

NoSQL的四大分类

  • KV键值对

    • Redis
  • 文档型数据

    • MongoDB

      • 是一个分布式文件存储的数据库,C++编写,主要用于处理大量文档。是一个介于关系型数据库和非关系型数据中的中间产品,是非关系型数据库中功能最丰富,最像关系型数据库的。
    • ConthDB

  • 列存储数据库

    • HBase
    • 分布式文件系统
  • 图形关系数据库(不是存图形的,放的是关系)

    • Neo4J
    • InfoGrid

这篇关于NOSQL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!