前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NoSQL概述

NoSQL概述

作者头像
后端码匠
发布2020-11-06 11:58:40
1K0
发布2020-11-06 11:58:40
举报
文章被收录于专栏:后端码匠

NoSQL概述

为什么要使用Nosql

我们现在处理什么年代 2020年 大数据时代 适者生存 学习才是在这个社会生存的唯一法则。

1.单机MySQL的年代

90年代, 一个基本网站访问量一般不会太大, 单个数据库完全足够!那个时候更多的使用静态网页 HTML 服务器根本没有压力 思考下:整个网站的瓶颈是什么?

  • 数据量太大, 一个机器放不下
  • 数据索引 (300万条数据就一定建立索引! B+树), 一个机器内存也放不下
  • 访问量(读写混合), 一台服务器承受不了

只要你开始出现以上三种情况之一, 那么就必须晋级!

2.Memcached(缓存) + MySQL + 垂直拆分

网站80%的情况都是在读数据, 每次都要查询数据就很麻烦, 所以说我们希望减轻数据压力, 我们可以使用缓存来保证效率!

发展过程:优化数据结构-->文件缓存(IO)-->Memcached(缓存 当时最热门的技术!)

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

技术和业务发展的同时, 对人的要求也越来越高 本质:数据库(读 写)

早些年MyISAM:表锁, 十分影响效率!高并发下就会出现严重的问题, 转到Innodb:行锁

慢慢的就开始使用分库分表来解决写的压力! MySQL在那个年代推出了表分区 这个并没有多少公司使用 MySQL集群

4.如今年代

技术爆炸 2010-2020 十年之间, 世界发生翻天覆地的变化

MySQl关系型数据库就不够用了, 数量巨多, 变化很快

MySQL有的使用它来存储一些比较大的文件, 博客 图片 数据库表很大, 效率就低了!如果有一种数据库专门来处理这种数据 MySQL的压力就会十分小(研究如何处理这些问题) 大数据IO压力下, 表几乎没办法更大!

5.目前一个基本互联网项目!

6.为什么要用NoSQL

用户的个人信息, 社交网络, 地理位置. 用户自己产生的数据, 用户日志等等爆发式的增长 这时候我们就应该使用NoSQL数据库, NoSQL可以很好的处理以上的情况.

什么是NoSQL

NoSQL

NoSQL = Not Only SQL(不仅仅是SQL)泛指非关系型数据库,随着 Web2.0 互联网的诞生, 传统关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区 暴露出很多难以克服的问题, NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且当下必须掌握一个技术

很多数据类型用户的个人信息,社交网络,地理位置。这些数据类型的存储要有一个固定的格式!不需要多余的格式就可以横向扩展的!Map<String, Object> 使用键值对

NoSQL特点

解耦

  • 方便拓展(数据之间没有关系, 很好扩展)
  • 大数据量 高性能(Redis一秒些8万次 读取11万 NoSQL的缓存记录, 是一种细粒度的缓存, 性能会比较高)
  • 数据类型是多样的!(不需要事先设计数据库! 随取随用 如果是十分大的表, 很多人就无法设计了)
  • 传统的RDBMS和NoSQL
    • 传统的RDBMS:结构化组织、SQL、数据和关系都存在单独的表中row col、操作数据、数据定义语言、严格的一致性、基础事务......
    • NoSQL: 不仅仅是数据、没有固定的查询语言、键值对存储、列存储、文档存储(社交关系)、最终一致性、CAP原理 和 BASE (异地多活)、高性能、高可用、高可扩、......

了解3V + 3高

大数据时代的3V:主要描述问题

  • 海量Volume
  • 多样Variety
  • 实时Velocity

大数据时代的3高:主要是对程序的要求

  • 高并发
  • 高可扩(随时水平拆分,机器不够用了,可以扩展机器)
  • 高性能(保证我们的用户体验)

真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强大的, 阿里巴巴的架构引进.

阿里巴巴演进分析

思考问题 这么多的数据难道都是在一个数据库中的么?

敏捷开发、极限编程

开源才是技术的王道

任何一家互联网公司,都不可能简简单单让用户能用就好了 大量公司做的都是相同的业务;(竞品协议)

如果未来相当一个架构师:没有什么是加一层解决不了的!

商品的基本信息

名称 价格 商家信息 关系型数据库就能就解决 MySQL/oracle (淘宝早就去IOE了 王坚:推荐文章 :阿里云的这群疯子) 淘宝内部的MySQL 不是大家用的MySQL

商品描述 评论(文字比较多)

文档型数据库中 MongDB

图片

分布式文件存储系统 FastDFS

  • 淘宝自己的 TFS
  • Google GFS
  • Hadoop HDFS
  • 阿里云的 oss

商品关键字(搜索)

  • 搜索引擎:solr elasticsearch
  • ISerach:多隆(多关注技术大佬)

商品热门的波段信息

  • 内存数据库‘
  • Reids Tair Memache

商品的交易 外部的支付接口

  • 第三方应用

要知道, 一个简单的网页背后的技术一定不是大家所想象的那么简单

大型互联网应用问题

  • 数据类型太多了
  • 数据源多, 经常重构(敏捷开发)!
  • 数据要改造, 大面积改造

解决问题:

NoSQL的四大分类

KV键值对

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + memecache

文档型数据库(bson格式 和json一样)

  • MongoDB(一般必须要掌握)
    • MongoDB是一个基于分布式文件存储的数据库, C++编写, 主要用来处理大量的文档
    • MongoDB是一个介于关系型数据库和非关系型数据库中中间产品 MongoDB是非关系型数据库中功能最丰富, 最像关系型数据库.
  • ConthDB

列存储

  • HBase
  • 分布式文件系统

图关系数据库

  • 他不是存储图形, 放的是关系, 比如:朋友圈社交网络 广告推荐
  • Neo4j InfoGrid

四者对比

Web1.0:以静态、单向阅读为主,网站内信息可以直接和其他网站信息进行交互,能通过第三方信息平台同时对多家网站信息进行整合使用。 Web2.0:以分享为特征的实时网络,用户在互联网上拥有自己的数据,并能在不同的网站上使用。 Web3.0:将以网络化和个性化为特征,提供更多人工智能服务,完全基于Web,用浏览器即可实现复杂的系统程序才具有的功能。 Web3.0的特征分析:1、微内容(Widget)的自由整合与有效聚合 2、适合多种终端平台,实现信息服务的普适性 3、良好的人性化用户体验,以及基础性的个性化配置 4、有效和有序的数字新技术

望大家喜欢,觉得内容不错的,欢迎「分享」「赞」或者点击「在看」支持,谢谢各位。❤️爱心三连击

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端码匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用Nosql
    • 1.单机MySQL的年代
      • 2.Memcached(缓存) + MySQL + 垂直拆分
        • 3.分库分表+水平拆分+MySQL集群
          • 4.如今年代
            • 5.目前一个基本互联网项目!
              • 6.为什么要用NoSQL
              • 什么是NoSQL
                • NoSQL
                  • NoSQL特点
                    • 了解3V + 3高
                    • 阿里巴巴演进分析
                      • 商品的基本信息
                        • 商品描述 评论(文字比较多)
                          • 图片
                            • 商品关键字(搜索)
                              • 商品热门的波段信息
                                • 商品的交易 外部的支付接口
                                • NoSQL的四大分类
                                  • KV键值对
                                    • 文档型数据库(bson格式 和json一样)
                                      • 列存储
                                        • 图关系数据库
                                          • 四者对比
                                          相关产品与服务
                                          云数据库 Redis
                                          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档