当前位置:   article > 正文

1万字长文高速你千万级并发架构下如何提高数据库存储性能_大数据量性能架构优化提升

大数据量性能架构优化提升

图形数据存储管理两类信息:节点信息和边缘信息。 节点表示实体,边缘表示这些实体之间的关系。 节点和边缘都可以包含一些属性用于提供有关该节点或边缘的信息(类似于表中的列)。

边缘还可以包含一个方向用于指示关系的性质。

图形数据存储的用途是让应用程序有效执行需遍历节点和边缘网络的查询,以及分析实体之间的关系。 如图2-12所示,显示了已结构化为图形的组织人员数据。

实体为员工和部门,边缘指示隶属关系以及员工所在的部门。 在此图中,边缘上的箭头表示关系的方向。

1万字长文高速你千万级并发架构下如何提高数据库存储性能

图2-12

使用此结构可以简单直接地执行类似于“查找 Sarah 的直接或间接下属”或“谁与 John 在同一个部门工作?”的查询。 对于包含大量实体和关系的大型图形,可以快速执行复杂的分析。 多个图形数据库提供一种可用于高效遍历关系网络的查询语言。比如:关系、地图、网络拓扑、交通路线等场景。

NewSql

======

NewSql也是最近几年出来的概念,想必大家或多或少都有听过,NewSql是Nosql发展之后的下一代数据存储方案。

前面我们了解了Nosql的优势。

  • 高可用性和可扩展性,自动分区,轻松扩展

  • 不保证强一致性,性能大幅提升

  • 没有关系模型的限制,极其灵活

但是有些优势在某些场景下不是很适合,比如不保证强一致性,对于普通应用来说没有问题,但是对于一些金融级的企业应用来说,

强一致的需求会比较高。另外,Nosql不支持SQL语句,不同的Nosql数据库都是有自己独立的API来进行数据操作,相对来说比较麻烦和复杂。

所以NewSql出现了,简单来说,newSQL 就是在传统关系型数据库上集成了 noSQL 强大的可扩展性,传统的SQL架构设计基因中是没有分布式的,而 newSQL 生于云时代,天生就是分布式架构。

NewSQL 的主要特性:

  • SQL 支持,支持复杂查询和大数据分析。

  • 支持 ACID 事务,支持隔离级别。

  • 弹性伸缩,扩容缩容对于业务层完全透明。

  • 高可用,自动容灾

商用NewSql

  • Spanner、F1:谷歌

  • OceanBase:阿里

  • TDSQL:腾讯

  • UDDB:UCloud

总结

==

在 NoSQL 数据库刚刚被应用时,它被认为是可以替代关系型数据库的银弹,在我看来,也许因为以下几个方面的原因:

  • 弥补了传统数据库在性能方面的不足;

  • 数据库变更方便,不需要更改原先的数据结构;

  • 适合互联网项目常见的大数据量的场景;

不过,这种看法是个误区,因为慢慢地我们发现在业务开发的场景下还是需要利用 SQL 语句的强大的查询功能以及传统数据库事务和灵活的索引等功能,NoSQL 只能作为一些场景的补充。

使用Redis优化性能问题

=============

Redis是目前用得非常多的一种Key-Vlaue数据库,我们先来通过一个压测数据了解一下redis和mysql的性能差距。

演示项目: springboot-redis-example

通过jmeter工具分别压测这个项目中的两个url。

  • http://localhost:8080/city/{id}

  • http://localhost:8080/city/redis/{id}

其中,基于mysql访问的接口,吞吐量数据如下,qps=4735/s。

1万字长文高速你千万级并发架构下如何提高数据库存储性能

图2-13

基于redis的压测数据,如图2-14所示。

1万字长文高速你千万级并发架构下如何提高数据库存储性能

图2-14

可以很明显的看到,在同样的程序中,Redis的QPS要比Mysql的多了1000。

了解Redis

=======

08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建了一个访客信息网站LLOOGG.COM。如果有自己做过网站的同学应该知道,

有的时候我们需要知道网站的访问情况,比如访客的IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。在国内,有很多网站提供了这个功能,比如CNZZ,百度统计,国外也有谷歌的Google Analytics。

也就是说,我们不用自己写代码去实现这个功能,只需要在全局的footer里面嵌入一段JS代码就行了,当页面被访问的时候,就会自动把访客的信息发送到这些网站统计的服务器,然后我们登录后台就可以查看数据了。

LLOOGG.COM提供的就是这种功能,它可以查看最多10000条的最新浏览记录。这样的话,它需要为每一个网站创建一个列表(List),不同网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除(先进先出)。

1万字长文高速你千万级并发架构下如何提高数据库存储性能

图2-15

当LLOOGG.COM的用户越来越多的时候,它需要维护的列表数量也越来越多,这种记录最新的请求和删除最早的请求的操作也越来越多。LLOOGG.COM最初使用的数据库是MySQL,可想而知,因为每一次记录和删除都要读写磁盘,因为数据量和并发量太大,在这种情况下无论怎么去优化数据库都不管用了。

考虑到最终限制数据库性能的瓶颈在于磁盘,所以antirez打算放弃磁盘,自己去实现一个具有列表结构的数据库的原型,把数据放在内存而不是磁盘,这样可以大大地提升列表的push和pop的效率。antirez发现这种思路确实能解决这个问题,所以用C语言重写了这个内存数据库,并且加上了持久化的功能,09年,Redis横空出世了。从最开始只支持列表的数据库,到现在支持多种数据类型,并且提供了一系列的高级特性,Redis已经成为一个在全世界被广泛使用的开源项目。

为什么叫REDIS呢?它的全称是Remote Dictionary Service,直接翻译过来是远程字典服务。

key-value数据库使用排名

================

对于Redis,我们大部分时候的认识是一个缓存的组件,当然从它的发展历史我们也可以看到,它最开始并不是作为缓存使用的。只是在很多的互联网应用里面,它作为缓存发挥了最大的作用。所以下面我们来聊一下,Redis的主要特性有哪些,我们为什么要使用它作为数据库的缓存。

大家对于缓存应该不陌生,比如我们有硬件层面的CPU的缓存,浏览器的缓存,手机的应用也有缓存。我们把数据缓存起来的原因就是从原始位置取数据的代价太大了,放在一个临时存储起来,取回就可以快一些。

如果要了解Redis的特性,我们必须回答几个问题:

1、为什么要把数据放在内存中?

  1. 内存的速度更快,10w QPS

  2. 减少计算的时间

2、如果是用内存的数据结构作为缓存,为什么不用HashMap或者Memcache?

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/757191
推荐阅读
相关标签
  

闽ICP备14008679号