NoSQL概述

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: NoSQL概述

NoSQL概述


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


1.单机MySQL的年代

43da74d1827cb5292fc67445a1f600ae.png

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

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

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


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

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


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


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

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

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

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

8218a2ee64fbe90932092793cb57724b.png


4.如今年代

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

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

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


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

5d7892860fe1961f4b2e5c3a3c6dce6b.png


6.为什么要用NoSQL

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


什么是NoSQL

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

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

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

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

  • 第三方应用

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

大型互联网应用问题

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

解决问题:

3a02eb7c075bf4a18a8d3a36d5d5892b.png

e5a23b63c9684c3078dd6f0722081993.png


NoSQL的四大分类

KV键值对

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

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

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

列存储

  • HBase
  • 分布式文件系统

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

  • Neo4j InfoGrid


b45cc485245c91ab5838d793741b67f8.png


Web1.0:以静态、单向阅读为主,网站内信息可以直接和其他网站信息进行交互,能通过第三方信息平台同时对多家网站信息进行整合使用。

Web2.0:以分享为特征的实时网络,用户在互联网上拥有自己的数据,并能在不同的网站上使用。

Web3.0:将以网络化和个性化为特征,提供更多人工智能服务,完全基于Web,用浏览器即可实现复杂的系统程序才具有的功能。

Web3.0的特征分析:1、微内容(Widget)的自由整合与有效聚合 2、适合多种终端平台,实现信息服务的普适性 3、良好的人性化用户体验,以及基础性的个性化配置 4、有效和有序的数字新技术

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
2月前
|
存储 自然语言处理 Oracle
Oracle数据库字符集概述及修改方式
【8月更文挑战第15天】Oracle 数据库字符集定义了数据的编码方案,决定可存储的字符类型及其表示方式。主要作用包括数据存储、检索及跨系统传输时的正确表示。常见字符集如 AL32UTF8 支持多语言,而 WE8MSWIN1252 主用于西欧语言。修改字符集风险高,可能导致数据问题,需事先备份并评估兼容性。可通过 ALTER DATABASE 语句直接修改或采用导出-导入数据的方式进行。完成后应验证数据完整性。此操作复杂,须谨慎处理。
|
11天前
|
存储 NoSQL 关系型数据库
NoSQL 数据库的优缺点?
NoSQL 数据库的优缺点?
28 4
|
11天前
|
存储 SQL NoSQL
NoSQL数据库
NoSQL数据库
27 4
|
2月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
8天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
19 0
|
3月前
|
SQL NoSQL 数据库
Flutter Hive NoSql 数据库使用指南
本文将会写一个 Hive CURD 的例子,详细介绍 Hive 这个轻量级的 Flutter 离线数据库的使用方法,包括 Hive 在 Flutter 开发中的重要性、Hive 与 SQLite 的比较等,帮助开发者快速上手 Hive 数据库。
Flutter Hive NoSql 数据库使用指南
|
2月前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
35 0
|
2月前
|
存储 SQL NoSQL
探索数据存储的多样性:深入比较Entity Framework Core与NoSQL数据库MongoDB的特性与应用
【8月更文挑战第31天】在现代软件开发中,选择合适的数据存储方案对应用性能至关重要。本文通过对比Entity Framework Core(EF Core)和MongoDB,探讨两者的特点及适用场景。EF Core作为.NET生态中的ORM,简化了SQL数据库的交互;MongoDB则是一种灵活的NoSQL文档数据库,适合处理大量非结构化数据。两者在数据模型、查询方式及性能上各有优势,选择时需根据具体应用需求决定。理解这些差异有助于做出更合理的技术选型。
32 0
|
2月前
|
SQL 存储 NoSQL
从SQL到NoSQL:理解不同数据库类型的选择与应用——深入比较数据模型、扩展性、查询语言、一致性和适用场景,为数据存储提供全面决策指南
【8月更文挑战第31天】在信息技术飞速发展的今天,数据库的选择至关重要。传统的SQL数据库因其稳定的事务性和强大的查询能力被广泛应用,而NoSQL数据库则凭借其灵活性和水平扩展性受到关注。本文对比了两种数据库类型的特点,帮助开发者根据应用场景做出合理选择。SQL数据库遵循关系模型,适合处理结构化数据和复杂查询;NoSQL数据库支持多种数据模型,适用于非结构化或半结构化数据。SQL数据库在一致性方面表现优异,但扩展性较差;NoSQL数据库则设计之初便考虑了水平扩展性。SQL使用成熟的SQL语言,NoSQL的查询语言更为灵活。
41 0
下一篇
无影云桌面