目录
- 概述
- alibaba实践分析数据架构
- NoSQL四大分类
- 狂神语录
一、概述
为什么要使用NoSQL
- 单机数据库时代 早些年代,一个基本的网站访问量基本不大,单个数据库完全足够,服务器压力不大
- 大数据时代问题有 数据量太大、数据的索引(B+ Tree)过大、访问量(读写混合)等瓶颈问题。10-20年是技术爆炸的10年,各种功能需求像定位、点赞、音乐热榜的,关系型数据库已经力不从心了。这时候就需要非关系型数据库优化。
- 优化过程:优化数据结构和算法—>文件缓存(IO)—>Memcache缓存 + 垂直数据库拆分(读写分离,可以理解为对个相同的数据库放在多个服务器并且需要保持数据的一致性)—> 数据库分库分表、水平拆分(数据库集群)
- 目前基本互联网公司的项目架构
- 用户的个人信息,社交网络,地理位置,用户自己产生的数据,用户日志等爆发式增长可以使用NoSQL来解决
NoSQL特点
- 方便拓展,数据之间没有关系,很好拓展
- 大数据提高性能,NoSQL以记录作缓存,是一种细粒度的缓存,性能会比较高。
- 数据类型是多样型的,不需要事先设计数据库,随取随用
- 没有固定的查询语言
- 键值对存储列、文档、图像数据库
- CAP原理和BASE
- 高性能、高可用、高拓展
技术无高低之分,关键是如何使用!
思维的提高才是能力的提高!
二、albb实践分析数据架构
技术架构发展
- 大量公司都在做着相同的业务,互联网公司做的不仅仅是能用的功能,而是业务竞争,功能越来越完善。
数据架构发展:架构师之道,没有什么是加一层解决不了的
分析
- 商品的基本信息(名称、价格、商家信息):关系型数据库就能解决(MySQL、Oracle,淘宝内部使用的MySQL是自己优化过的MySQL)
- 商品的描述、评论文字内容:文档型数据库MongoDB可以解决
- 图片:分布式文件系统 FastDFS(淘宝的TFS)还有其他的GFS、Hadoop的HDFS、阿里云的oss等
- 商品的关键字(搜索):搜索引擎 solr、ElasticSearch、ISearch
- 商品热门的波段信息(秒杀):内存数据库Redis、Memacache
- 商品的交易、外部支付接口:三方应用
大型互联网应用问题
- 数据类型多
- 数据源繁多,经常重构!
- 数据需要大面积改造
- 简单来说就是数据库种类繁多,怎么统一的操作使用数据库。
解决方案
- 统一的数据服务层UDSL:在网站应用集群和底层数据源之间,构建一层代理,统一数据层(类似JDBC屏蔽不同类型的数据库)
- 模型数据映射、统一的查询更新API直接使用全部数据库。
- 热点缓存设计:在UDSL下再加一层缓存,称之为热点缓存平台
三、NoSQL的四大分类
键值对型
- 新浪:Redis
- 美团:Redis + Tair
- 阿里、百度 : Redis + Memachche
文档型数据库(Bson格式)
- MongoDB:一个基于分布式文件存储的数据库,C++ 编写,主要用来处理大量的文档!是一个介于关系型和非关系数据库的数据库,是非关系型数据库中最像关系型数据库的。
- ConthDB
列存储数据库
- Hbase:大数据会用到
- 分布式文件系统
图形关系数据库
- 放的不是图形,放的是关系,比如朋友圈社交网络、推荐系统
四、狂神语录
发现还挺有道理(狗头)
- 活着的意义:追求幸福(物质追求、心情愉悦)、探索未知(不断学习!)
- 一个nb的人必然有一段kb的岁月,然后像sb一样的坚持,最后会变得nb!
- …