农妇山泉一亩田 发表于 2022-8-9 14:47:19

NoSQL(简介、历史)

NoSQL

为什么使用NoSQL

1.单机MySQL的网站

APP----->DAL------>MySQL
90年代:一个基本的网站访问量一般不会很大,单个数据库完全足够。
那个时候,更多的去使用静态网页HTML --- -服务器没有太大的压力
这种情况下,整个网站的瓶颈是什么?
1.数据量太大,一台机器放不下了。
2.数据的索引(300万就一定要建立索引)B+Tree,一个机器内存也放不下
3.访问量(读写混合),一个服务器承受不了
只要你发现出现这三种,必学晋级:
2.Memcached+MySQL+垂直拆分(分库分表)

APP------>DAL------->MySQL(1)MySQL--(2写内容)---MySQL(3)
1.3读2写(读写分离)
网站80%都是在读,每次要查询数据库十分麻烦,减轻服务器的压力,使用缓冲提高效率
APP------>DAL----cache--->MySQL(1)MySQL--(2写内容)---MySQL(3)
发展方式:
优化数据结构和索引------->文件缓冲(IO)---------->Memcached(当时火热的技术)
3.分库分表+水平拆分+MySQL集群

​                                        集群1:M---(S--S)
APP----DAL-------cach--集群2:M---(S--S)
​                                        集群3:M---(S--S)
本质是:数据库(读、写)
早些年:MyISAM:表锁(100万张三--密码)十分影响效率!高并发有严重问题
转战Innodb:行锁
慢慢的就开始分库分表解决写的压力MySQL提供了表分区(这个没有多少公司使用),MySQL的集群
如今年代

技术爆炸,2010年---2022年,世界翻天覆地的变化(定位,音乐,...)
MySQL数据库不能用了,数据量大,变化很快!!
(浏览量 10w+ 固定时间后才持久化)
MySQL有的使用它来储存一些比较大的文件,博客,图片!!数据库表很大,数据库的效率低了!如果有一种数据库来专门处理这种数据,MySQL压力就变的十分小了(研究如何处理问题!!)大数据的IO压力下,表几乎没法更大!
目前一个基本的互联网项目

​                                                                                                                MySQL 01        缓存
1用户                                 负载均衡主机         APP服务器1                        MySQL 02        移动信息服务器
2用户 --企业防火墙==                                        APP服务器2                        MySQL 03        Hadoop集群
3用户                                 负载均衡备机                APP服务器3                        MySQL 04        实时通信服务
​                群发服务器                   图片服务器          文件服务器                        MySQL 05        流媒体服务器
为什么要NoSQL!

用户的个人信息、社交网络、地理信息、用户自己产生的数据、用户日志的爆发式增长
什么是NoSQL

not only sql(不仅仅是SQL)
关系型数据库:

[*]行和列来记录(POI)技术操作EXCEL表
泛指非关系型数据库,随着java分布式时代!音乐、尤其是大规模高并发的社区暴露很多难以克服的问题
NoSQL在当今大数据环境下,Redis是必须是掌握的。
很多的用户的个人信息、社交网络、地理信息、用户自己产生的数据、用户日志,这些数据类型的存储不需要一个固定的格式,不需要多月的操作就可以横向扩展。Map
NoSQL的特点:

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

大数据时代的3V
1.海量2.多样3.实时
大数据时代的3高:
1高并发2.高开拓3.高性能
真正的公司中:NoSQL+RDBMS 一起使用
技术没有高低之分,就看如何使用
阿里巴巴的演进分析

这么多的东西难道都是放在一个数据库中么?B2B
敏捷开发、极限编程、协同开发
开源才是技术的王道,任何一家互联网公司只是让用能用就好了
大量的公司做的都是相同的业务(竞品协议)
随着这样的竞争,业务越来越完善,越来越高!
如果你为想当架构师,没有什么是加一层是解决不了的
商品信息数据库基本信息sql商品SPU属性DocumentDB图片图片银行接口相关关键字SearchEngine思考:
1.商品:--名称,价格,商家信息----MySQL /Oracle(淘宝早年就去除IOE--王坚:阿里云的这群疯子)
淘宝内部的Mysql和我们不一样2.商品的描述、评论、文字比较多-- -文档性数据库(MongoDB)
3.图片分布式文件系统FastDFS

[*]淘宝自己的TFS
[*]Gooals 的 GFS
[*]Hadoop   HDFS
[*]阿里云的 OSS
4.商品的关键字
---搜索引擎solor   elasticsearch
---ISerach :多隆
5.商品热门信息
--内存数据库
--RedisTairMemache...
6.商品的交易:
外部的支付接口--三方应用
一个简单网页,背后的技术一定不是那么简单

[*]大型互联网的数据类型太多了
[*]数据源太多了,经常重构
[*]数据要改造
统一的数据服务层UDSL
---Mapping--
热点缓存平台

[*]过期控制

[*]事件过期
[*]自动过期

[*]热点匹配---热点规则
[*]key生成-----KEY规则
[*]缓存读写------过期规则
热点缓存索引----KV集群
NoSQL的四大分类

KV键值对

[*]新浪:Redis
[*]美团:Redis+ Tair
[*]阿里、百度:Redis+memecache
文档形数据库:(bson格式json一样)

[*]MongDB()

[*]基于分布式文件储存的数据库,c++编写,主要用来处理大量文档
[*]是一个介于关系型数据库和非关系型数据库的中间产品,是非关系型数据库中功能最丰富,最想关系型数据库的

[*]ConthDB
列存储数据库

[*]HBase
[*]分布式文件系统
图关系数据库
https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191204%2F559dd072dcc04b7ab2b54e5201aa730f.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1656515252&t=6f2bc92f75697fb49710a322c565603a

[*]它不存储图片,放的是关系,比如社交网络,广告推荐
[*]Neo4j,InfoGrid
https://img-blog.csdnimg.cn/20210125174747584.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pqODk5Mjk2NjU=,size_16,color_FFFFFF,t_70



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: NoSQL(简介、历史)