侧边栏壁纸
  • 累计撰写 72 篇文章
  • 累计创建 31 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

Nosql介绍-Peak-Gao

PeakGao
2024-11-27 / 0 评论 / 0 点赞 / 3 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材可能会来自网络,若不小心影响到您的利益,请联系我们删除。

Nosql

什么是Nosql?

不保持ACID,而Nosql数据库遵循BASE原则**(基本可用(Basically Availble)**NoSQL允许分布式系统中某些部分出现故障,那么系统的其余部分依然可用。它不会像ACID那样,在系统出现故障时,进行强制拒绝,允许继续部分访问、**软/柔性事务(Soft-state )**NoSQL在数据处理过程中,允许这个过程,存在数据状态暂时不一致的情况。但经过纠错处理,最终会一致的。**最终一致性(Eventual Consistency)**NoSQL的软状态允许数据处理过程的暂时不一致,但是最终处理结果将是一致的,说明NoSQL对数据处理过程可以有短暂的时间间隔,也允许分更细的步骤一个一个地处理,最好数据达到一致即可。这在互联网上进行分布式应用具有其明显的优势。)

​ Nosql=Not Only Sql(不仅仅是sql,通过键值对存储),就是非关系型数据库,用于超大规模的存储(比如京东的那么多用户)这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

为什么使用Nosql?

​ 随着用户的信息,社交,用户生成的数据和日志爆发式的增长,以前的互联网不发达,流量不大,就一个mysql,mysql数据库就不适合,Nosql数据库库却可以很好的处理这些大 数据

web1.0和web2.0的主要区别

web1.0是基于浏览器的,用户通过浏览器获取内容,即用户只能去浏览已经创作好的内容;
web2.0基于1.0,增加了用户与系统的交互,使用者既是网络内容的获取者,也是网络数据的提供者,例如:论坛、博客、微博等相关社交类型的平台;

POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

poi(point of interest 感兴趣的)用java通过poi这个jar包操作Excel表

Nosql优缺点

​ 优点:方便扩展(数据没有关系,好扩展)、大数据量,高性能(Redis1秒可以写8万次,读取11万,Nosql的缓存是一种细粒度的缓存,性能高**)分布式计算、没有复杂关系,架构灵活**(传统关系型数据库都是结构化的表,nosql可以是列式存储、key-value和文档存储;

​ 缺点:没有标准化(什么样的类型都有)

为什么不使用关系型数据库?

慢慢数据量太大,一台机器放不下
数据的索引,数据超过300万就需要建立索引,不建立索引的话就查询相对慢,内存也放不下访问量大,读写混合,一个服务器承受不了,出现这些情况就需要进阶,然后就进去第二个Memecached(高速缓存插件)+mysql+垂直拆分(也就是读写分离,完了之后才是分库分表),为啥不用orcge因为非常贵。
减轻服务器的数据压力可以用缓存处理(缓存主要用来解决读的问题)

分库分表+水平拆分(mysql集群)
比如有一个人去访问这个网站,然后就去看缓存有没有,会去集群,在比如这几个集群里各放3分之一的数据,通过一些集群机制去找到对应的数据在哪

本质:数据库就是读写
数据库引擎:最早MyISAM:表锁(100万数据,要去查张三的密码,他会把整个这个表锁起来,剩下的进程是不是得这个结果查询出来,效率低,在高并发下就会出现严重的问题),转到Innodb:行锁(明显比表锁效率高,只锁这一行)
慢慢的就使用分库分表解决写的压力。
json也可以当数据库传输
Bson也是数据库交换格式二进制的json,和json差不多

Nosql表现Map<String,Object>存万事万物,

不仅仅是数据,没有固定的查询语言,以键值对(其中的一种),列存储,文档存储,图形数据库(社交关系),最终一致性

–CAP定理和BASE理论 (异地多活):在redis事务中讲

了解3V+3高

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

​ 海量Velume(特别多)

​ 多样Variety(各种各样)

​ 实时 Velocity(现在还是4g,所以看直播还有延时)

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

​ 高并发()

​ 高可扩(随时水平拆分,服务器不够了,可以扩展机器来)

​ 高性能 (保证用户体验和性能!)

真正在公司中实践:关系型数据库+非关系型数据库结合使用才最强 —(阿里巴巴的架构演进)

Nosql的四大分类

kv(键值对):

  • 新浪:Redis
  • 美团:Redis+Tair(集群)
  • 阿里、百度:Redis+memecache(是一个开源、高性能、分布式内存对象缓存系统)

文档型数据库(用的多,bson格式和json一样,bson是二进制)

  • MongoDB(一般必须掌握)在Nosql中

    • MongoDB基于分布式文件存储的数据库,c++编写的、redis也是用c编写的(单进程、单线程) 主要就是用来处理大量的文档,主要解决海量数据的访问效率问题。

    • MongoDB是一个介于关系型数据库和非关系型数据库中间的产品!MongoDB是非关系型数据库,功能最丰富、最像关系型数据库的

      ConthDB:国外的了解一哈

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaTLKz3p-1599445583054)(D:RedisMongoDB.png)]

      …mysql是行储存数据库(一行代表一个记录)

      列存储数据库

      1. HBase(是一个分布式的、面向列的开源数据库、大数据中的)
      2. 分布式文件系统

      图形关系数据库(不是放图片的、是放关系的|如社交拓扑图、朋友圈社交网络)

      ​ 标准的解决方案Noe4j、infoGrid

      在这里插入图片描述

四者对比:

在这里插入图片描述

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区