缓存穿透:
正常去mysql 查询 ,但是 速度太慢,当某刻有大量数据请求时 redis ,爆炸式流量 网站一更新,缓存支撑不了 ;本来该去缓存里拿数据,然后大量的数据 突然冲到了mysql ;即缓存被击穿或穿透!手写一些 布隆过滤器。。。
(------网)redis (缓存数据库)
(----- 被保护)mysql ()
为什么要用Nosql
dashuj 大数据:一般数据 无法处理 引入 hadoop
spring 2004 出来
混 得会springBoot + spring clould
淘宝 php 买的 后面用java 分布式
<---- 单机模式
1.因数据量太大,mysq 》 300w 就要建立索引了;
2.数据的索引 (B+ tree ),一个机器的内存也太大
3.访问量(读写混合),一个服务器受不了 -------> 开始引入 分布式模式
垂直拆分 :eg : 一个 mysql 不够用 --> 三个 来实现 读写分离
但 网站80% 时 都要去读的 ,为了减少相同的查询操作 引入缓存 减轻数据库压力
缓存引入过程: 先优化数据结构和索引 -- > 文件缓存 (io 操作)--(数据读写又增大了) -->
Memcached (当时hot热门技术 高速缓存插件 会做缓存的人优先 servelet jsp 80年代的)
那么 :为甚吗要用 Nosql
各类信息 :用户的信息 社交网络 地理位置 用户自己的数据 用户日志 爆发增长, 引入 Nosql
定义: Not only sql 泛指 非关系型sql 随之web2.0 net 的诞生,关系型sql 对付不了超大规模 高并发的 社区了 互联网的 原始 就是论坛 、站长;
关系型数据库:表格、行、列 (POI : 用java 程序 通过poi 的这个java 包 去操作execl 关系型表格)
Nosql :对各类信息的存储 不需要一个固定的格式 支持横向拓展 java: Map
解耦:1 方便拓展 (数据间没关系)
2、大数据量 高性能(rdis write 8w/s read 11w/s) 缓存记录级的 细粒度的缓存 性能高
3、数据类型多 string List Set Hash Zset 5 kins basic type and geo hyperloglog bitmap three special types, 且不需事先设计数据库 三大范式 随取随用
4、传统的 RDBMS and Nosql
RDBMS:
-- 结构化组织
--数据库在单独的表中
--数据操作语言 数据定义语言
--严格一致性
-- 基础的事务
.NOsql
-- 不仅是数据
--没有固定的查询语言
-- 键值对存储、列存储(大数据的habits) 、文件存储(mongodb)、图行数据库(图谱图 做个社交关系)
--最终一致性
--CAP 定理 和 base (异地多活:保证服务器不会宕机) 左边的东西 做实践的话 初级架构师
-- 三高 高性能 高可用 高扩展
3v+3高
3v: 海量volume 多样variety 实时 Velocity
Nosql +rdbms 一起使用 是最强的
chapter3 (微信公众号:狂神说)
一个淘宝首页的数据来源:图片省
1、商品的基本信息 mysql (底层被模块化实现)
2.商品的描述 评论(文字比较多) mongodb
3.图片 {
分布式文件系统 FastDFS
--淘宝自己的 TFS
-- GPPALE 的 gfs
--hadoop HDFS
-- 阿里云的 oss
}
4、商品的关键字
-- 搜索引擎 solr elastrcsearch
--Iserach : 多隆
5.热门的波段信息 秒杀活动
--内存数据库
-- redis Tair Memache..、高速缓存
6 商品的交易 外部的支付接口
--三方的应用 :银行 。。。
一个页面:数据类型太多 数据源繁多 经常重构。数据要改造
解决方案 udsl (统一的数据服务平台) 加一层 中间层
chapter 4
Nosql 的四大分类
kv 键值对
-新良 Redis
美团 Redis + Tair
阿里百度 Rdis +memecache
mongodb 文档数据库(bson 格式 json 一样)
分布式文件存储 c++ 处理大量的文档
鉴于 关系与 非关系中间的 是Nosql 非关系 功能最富么 最像关系型的
conthdb 国外的
列存储数据库
Hbase(大数据的)
分布式文件系统
图关系数据库
--朋友圈设计网络 广告推荐(zui最短路径算法 ..N度关系查找)
防的不是图形 放到是关系
Neo4j infoGrid