浅羽技术_社区达人页

个人头像照片
浅羽技术
已加入开发者社区1794
勋章 更多
个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
门派掌门
门派掌门
成就
已发布119篇文章
3条评论
已回答10个问题
1条评论
已发布0个视频
技术能力
兴趣领域
  • Java
  • 开发框架
  • 微服务
  • 设计模式
  • 中间件
  • SQL
  • 数据库
  • 程序员
  • 开发者
擅长领域
技术认证

暂时未有相关云产品技术能力~

才疏学浅,习习而为,分享一些IT行业信息技术知识。
暂无更多
暂无更多信息

2023年02月

2022年11月

2022年10月

2022年09月

2022年08月

2022年07月

  • 发表了文章 2022-10-24

    消息中间件ActiveMQ常见问题解析

  • 发表了文章 2022-10-24

    关于SQL优化,你需要掌握这些

  • 发表了文章 2022-09-04

    关于线程池,你需要了解这些

  • 发表了文章 2022-09-04

    线程的生命周期和状态

  • 发表了文章 2022-08-27

    ModelScope 模型库产品快速使用

  • 发表了文章 2022-08-27

    事物传播行为与隔离级别介绍

  • 发表了文章 2022-08-27

    Spring 使用注解方式进行事务管理

  • 发表了文章 2022-08-27

    工作中常用到的Linux命令操作

  • 发表了文章 2022-08-26

    zookeeper的节点加密方式及分布式锁实现过程

  • 发表了文章 2022-08-26

    zookeeper集群之间如何通讯

  • 发表了文章 2022-08-26

    zookeeper的选主过程

  • 发表了文章 2022-08-25

    zookeeper核心知识点(一)

  • 发表了文章 2022-08-25

    非关系型数据库Redis核心内容

  • 发表了文章 2022-08-25

    MQ的原理以及持久化

  • 发表了文章 2022-08-24

    悲观锁和乐观锁的区别以及实现方式

  • 发表了文章 2022-08-24

    mysql的存储引擎详解

  • 发表了文章 2022-08-24

    mysql的索引分类B+和hash详解

  • 发表了文章 2022-08-23

    多线程常见面试问答知识点

  • 发表了文章 2022-08-23

    面试常见IO问答知识点

  • 发表了文章 2022-08-23

    常见网络协议考察知识点

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2023-02-15

    DevOps的基本原理是什么?

    开发新能源

    踩0 评论0
  • 回答了问题 2022-11-21

    ModelScope中模型能跑到手机终端上去吗?有什么办法吗?

    应该是可以的

    踩0 评论0
  • 回答了问题 2022-11-21

    问答最高荣誉,乘风问答官招募中!每周积分活动、每月排位赛等权益专享!

    报名

    踩0 评论0
  • 回答了问题 2022-10-14

    23届秋招,你怎么看?

    今年秋招属实比起往年会难很多,但是如果是明年或者后年,照最近几年的行情来看,只会越来越难,所以能把握好当下,就不要轻易放弃,难是难,但是为什么别人可以,自己不行呢,我觉得很大程度还是跟自身所挂钩,所以在这里分享一些我的调节心态的方法和一些经验心得,希望对大家有帮助:

    1、切记不要紧张,公司多的很,就算这一家不要,还有后面数不尽的公司在等你,总有一个适合你的。所以在面试过程中,轻松自然一点,然后保证气氛活跃一点,就当成是两个人聊天而已,当答的不好的地方,积极向面试官询问。就算这家不要,这个知识点掌握了,下家不就会了吗。一定要学会引导面试官向对你有利的方面提问,这样才会达到事半功倍的效果。

    2、在与面试官交流的时候,不要全场紧盯着面试官,这样会让人觉得很不自然。不能抖腿,或者有其他的小动作,严格把握好自己的行为举止。讲完自己的一个观点以后,要及时告诉面试官,你的回答已经结束,看面试官是否满意。讲话语速不宜太快,跟着思维一步一步来,这样面试官才会看到你是在认真想问题,想解决方案,过快,也会导致会有很多表述不清,语句不连贯。对于不懂的技术,实事求是,不会就是不会,然后可以问面试官可否介绍一下贵公司这方面是如何实现的。

    3、对于自己的薪资来说,也要有一个预期,适当可以根据公司的情况来进行衡量。比如你觉得这个公司很不错,就是公司给的不是很高,但是其他方面待遇还是很好的,觉得自己在这里能学习成长很多,也可以在这发展。对于一些给你不错薪资的公司来说,要认真衡量自己是否能胜任这一岗位,觉得可以胜任就接受。当然也要相信自己,不要一味将自己薪资定位很低,这样反而会让面试官觉得你技术能力欠缺。

    4、一般情况的话,当你和技术经理面试的时间越长,证明他对你越感兴趣,也就是说明你能拿到这个公司的 offer 的几率越大。当最后技术经理跟你说,你等下,HR 一会面试你,那么恭喜你,你的技术已经得到了认可。相比技术来说,人事这边只要没有太大问题,都可以通过,主要也就是聊薪资以及看你的为人处事了。

    踩0 评论1
  • 回答了问题 2022-09-21

    你知道什么是“云境深处的守护者”吗?

    身为互联网行业从业人员,我们平时打交道最多的是网络,而网络安全对于我们可以说是重中之重,所以我们在平时工作当中应该尽可能多了解前辈的指导性总结肯定是没错的。每天少看点和工作/专业不相关的内容和网站,多琢磨琢磨相关领域大佬的分享会对自己的成长有更大帮助。

    之前有幸了解过一些企业安全技术总监的总结分享,借助这个机会,分享给大家,同时希望得到欧阳欣老师的指导:

    1、企业安全管理最终都会向互联网公司学习–未来大多数公司都会复制自己业务到互联网,也就是大多数企业都会拥有互联网的属性。从现在看,互联网公司的安全管理方法论是领先传统公司整整一个时代的,完全不在一个量级上。你还在做传统的安全吗?夸张一点说你就快不属于这个行业了;

    2、向云迁移–云是一种趋势,虽然我不认为短期内马上会有非常多的公司将自己的业务迁移到公有云上,或者从头打造私有云。但是云计算折射出的IT管理方式,技术架构却会越来越成为安全管理的风向标,例如分布式IDC管理,虚拟化,SDN,海量运维生态,业务伸缩,大数据,高度自动化,敏捷发布……等很多带着时代标签的东西,安全管理体系的设计和产品化落地需要越来越多的围绕这些特性标签展开工作,如果你没有这方面的经验,也会逐渐out;

    3、倾向于以技术和产品(工具自动化)解决问题,而不再是以前宣扬的七分管理三分技术。看近些年的IT技术发展,本质上由Google、Facebook为代表的这些互联网公司带动,除了技术架构,像运维管理、研发生命周期管理、安全管理都在成为其他公司的教科书,安全的最高境界是让你身处于保护之中而不感觉那些繁琐措施和流程的存在,以技术、自动化、机器学习、人工智能为导向解决问题的价值观已超越流程制度的落后方式,也是过去那些理论标准越来越显得发虚的原因。

    对于我们互联网从业者来说,其实在过去相当长的时间里,由于乙方公司的净利润很低以及甲方安全不是产生收入的部门,所以从业者的前景一度比较暗淡,直到后来有了360这样的公司,有了BAT的崛起,才使得技术从业者的待遇得到了极大的改善。

    斯诺登曝光之后,国家层面开始重视信息安全,以华为这样的企业建立安全能力中心为代表,现如今安全人才需求开始井喷,供求比大幅失衡,国内资深从业者的工资已经赶超了美国的工程师,在当下看是一片利好,但有时候也说不清这到底是价值回归还是有点泡沫成分,没人能说得准。

    但短期内一定是人才供不应求,但是不是长期供不应求也很难说,因为现在越来越多的高校也开始培养安全方向的人,供给量会变大,安全会从小众变成大众学科,希望阿里云能在云安全方面做出更好的带头作用,这样我们行业开发者也有了前进的目标,相信未来的网络安全领域会发展更好,一起加油吧~

    踩4 评论0
  • 回答了问题 2022-09-08

    技术新手如何成为满级大佬?

    无论是谁,对于编程来说,一开始看都很难看懂的,这也是为什么这个行业,属于互联网高薪行业代表的原因之一。

    我是属于自学编程的非科班码农,在我看来,自学编程应该重点思考下自己的学习方式以及是否对 Java 感兴趣。

    拿我自己来说吧,第一次接触编程也是不知如何下手,看书看不懂,觉得自己不适合,但是时刻提醒自己既然选择了这条路,就一定要坚持下去。

    在开始那段时间,每天都很自律,当初第一次敲 HelloWorld时都搞不懂,HelloWord 这么简单的程序,那时的我不是字母拼写错就是符号错误。。。

    然后也根本不理解这些都是啥意思,就那么硬是来回敲了有几十遍,把它背过了!一开始一定要多实践,就算你看的书再多,其实你只要一动手,就会发现,理论跟实际还是有很大差距的。

    再后来基本就是这样的常态了,每天敲代码到晚上 2 点多,那会就在想,我的头发恐怕坚持不了几年了,2点睡觉已是常态。

    有恒心和毅力,然后一直坚持下去,前期多吃苦,后面才能走的不是那么费劲,为自己以后的发展提供更扎实的基础。

    当完成了自己做的第一个项目时,那个心情简直无法形容的开心,你会发现那个心情真的超级 nice,这也就是编程的乐趣所在吧,也是你真真实实感受到编程能带给你满足感,从而继续为之努力。

    当然也少不了一些编程技术书籍的陪伴,不断充实着我知识的大门,还是那句话,书还是要多读,就算最初读不懂,多读几遍,总会懂的,所谓书中自有黄金屋,书中自有颜如玉,知识是无穷尽的,只有不断学习,才不会落后。 image.png

    做程序,做程序,少不了调试代码,改 bug,当初一个 bug 改了整整一个晚上,好在改出来,也验证了bug 不睡 我不睡。

    在学习的过程中,一定要学会自己解决问题,遇到 bug,自己就算花费多少时间,先自己尝试解决下,这样不仅可以锻炼自己的解决问题能力,更是为以后实际工作做铺垫,毕竟公司工作后,没有人愿意一直帮助你解决的,都得靠自己。

    到后来,可以独立完成一套管理系统,在那个时候,算一个小小的成就。 ​ 基本的理论知识学习差不多,就应该积极多投简历,参与到实际的工作中了。

    功夫不负有心人,在上面这么多对的日日夜夜学习下,我也收到了属于自己的 offer: ​ 再往后就是实实在在的做公司的研发了,期间第一份工作是真的很忙,忙的时候会这样,当我在外地出差的时候,甚至都得负责公司项目的研发,所以电脑陪伴我在高铁,酒店等任何地方,基本机不离手,时刻待命。 image.png

    所以,说到底,谁也拯救不了你自己,如果你自己不努力的话,都没用!

    我不是科班出身,通过自己的努力,现在我融入到了这个行业,也很深爱着我的 Java。

    随着技术水平的积累,也慢慢开始了写作,希望将自己的过往点点滴滴都记录下来。因为其实你能将自己的知识真正分享出来的时候,才是你真正深刻懂了这门技术。

    现在自己的书架,也慢慢多了起来这些技术书籍: ​image.png

    至于学习资料的那些,现在互联网这么发达,只要你想学,愿意去花时间去搞一个东西,不存在搞不出来,除非你还是对自己不够狠。

    希望,我的这一点分享,可以帮到一些开发者,也希望可以从大家身上学到更多~

    踩2 评论0
  • 回答了问题 2022-08-30

    你想问李飞飞什么问题?

    数据库的操作对于我们 Web 应用开发尤其重要,关于数据库的性能,这并不只是 DBA 才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的 SQL 语句)下面是我总结的关于市面上主流的关系型数据库和非关系型数据库的简介。

    一、关系型数据库

    1. MySQL 数据库

    MySQL 是最受欢迎的开源 SQL 数据库管理系统,它由 MySQL AB 开发、发布和支持。MySQL AB 是一家基于 MySQL 开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL 是 MySQL AB 的注册商标。

    MySQL 是一个快速的、多线程、多用户和健壮的 SQL 数据库服务器。MySQL 服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置 (mass- deployed) 的软件中去。

    定位:

    开源、多平台、关系型数据库

    目前使用最广泛、流行度最高的的开源数据库。

    特点:

    (1) 支持事务,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据,有插件式存储引擎,支持多种存储引擎格式

    (2) 用编译安装的方式,或者二进制包的方式,按照 “安装软件 - 创建实例 - 库表用户初始化”,可以很快完成数据库部署

    (3) 使用标准的 SQL 语句进行数据库管理,简单 SQL 语句的并发和性能较好,对视图、存储过程、函数、触发器等支持的不是太好

    (4) 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有比较多的开源监控工具来监控和记录数据库的状态,比如 zabbix,nagios,cacti,lepus 等

    (5) 逻辑备份 mysqldump/mysqldumper ,物理备份 用 xtrabackup 等工具进行备份;

    (6)MySQL 高可用有多种方案,官方有基础的 master-slave 主从复制,新版本的 innodb cluster,第三方的有 MHA 等高可用方案;

    (7)MySQL 水平拆分,可以通过水平拆分 proxy 中间进行逻辑映射和拆分,扩大 MySQL 数据库的并发能力和吞吐量。

    适用场景:

    默认的 innodb 存储引擎,支持高并发,简单的绝大部分 OLTP 场景;

    Tokudb 存储引擎,使用高并发 insert 的场景;

    Inforbright 存储引擎,可以进行列压缩和 OLAP 统计查询场景;

    选择注意:

    使用 MySQL 进行 OLTP 业务时,需要注意数据量级,如果数据量级过大,需要进行水平拆分;

    如果有 OLAP 需求,可以结合其他架构综合考虑。

    2. Microsoft SQL Server 数据库

    SQL Server 是由微软开发的数据库管理系统,是 Web 上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。

    目前最新版本是 SQL Server 2005,它只能在 Windows 上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。

    SQL Server 提供了众多的 Web 和电子商务功能,如对 XML 和 Internet 标准的丰富支持,通过 Web 对数据进行轻松安全的访问,具有强大的、灵活的、基于 Web 的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。

    定位:

    商业、Windows 平台、关系型数据库

    最早接触、与微软体系结合紧密的的商业数据库,属于 “微软技术体系”

    特点:

    (1) 支持事务,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据

    (2) 在 Windows 平台,用图形界面进行软件安装;

    使用:在 Windows 平台,使用 SQL Server Mangement Studio 图形界面进行安装;

    (3) 一般通过 Windows 资源管理和 SQL server 图形工具进行系统和数据库性能显示;

    (4) 通常用第三方备份恢复软件进行备份恢复;

    高可用:通过共享存储和双机热备的方式,可以实现 SQL Server 数据库的高可用;

    (5) SQL Server 数据库集群采用共存存储的方式,通过硬件垂直升级来对数据库集群进行扩展;

    适用场景:

    大多数 OLTP 场景(与微软体系配合)

    选择注意:

    SQL Server 与微软技术体系结合比较紧密,绝大多数工作,都是通过图形界面完成,对于习惯使用命令行的 DBA 可能会有不习惯;

    SQL server 对双引号,大小写,元信息的管理和处理方式,与其他数据库很不相同,需要注意;

    使用 SQL Server 满足 OLTP 业务,会有比较好的效果,但对于大数据量的 OLAP 业务,最好还是选用专门的 OLAP 架构,不要在同一个 SQL Server 实例上混用 OLTP 和 OLAP 业务;

    SQL server 属于商业软件,需要注意版权和 licence 授权费用;

    3. Oracle 数据库

    Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说 Oracle 数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

    定位:

    商业、多平台、关系型数据库

    功能最强大、最复杂、市场占比最高的商业数据库

    特点:

    (1) 支持事务,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据

    (2)Oracle 单实例数据库部署相对容易,但 Oracle RAC 集群环境,部署的步骤和依赖条件都比较多;

    (3) 通常使用命令行工具,进行各种数据库的管理,通常也可以用 shell 脚本和 python 脚本提高 Oracle 数据库管理效率;各种管理功能,都比较强大;

    (4)Oracle 官方有比较全面的监控工具,常用的第三方监控平台,如 zabbix,cacti,lepus 等都有对 Oracle 数据库的各项指标的完善监控;

    (5) 支持冷备份和热备份,可以用 exp/imp , expdp/impdp 等进行逻辑备份和恢复,可以使用强大的 RMAN 工具进行专业的物理热备份和恢复;

    (6)Oracle 数据库的高可用架构,可以用第三方双机热备软件,结合 Oracle 单实例实现;可以使用 Oracle Dataguard,实现 master 和 standby 的备份;可以使用 Oracle RAC 集群实现实例级别的高可用和负载均衡,使用 ASM 实现存储级别的高可用;

    (7) 由于 Oracle 集群采用共享存储的方式,一般只能通过垂直硬件升级进行升级;

    适用场景:

    绝大多数 OLTP 场景,部分 OLAP

    选择注意:

    Oracle 从架构到运维,可以说是最难的数据库,学习和使用难度较高。

    4. Postgresql 数据库

    PostgreSQL 是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为 PostgreSQL,版本 4.2 为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL 支持大部分 SQL 标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

    PostgreSQL 是一个免费的对象 - 关系数据库服务器 (数据库管理系统),它在灵活的 BSD - 风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server) 之外的另一种选择。

    定位:

    开源、多平台、关系型数据库,功能最强大的开源数据库。

    特点:

    (1) 支持事务,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据;

    (2)postgresql 需要先准备好 Python 等环境,然后编译安装软件,初始化数据库,启动实例,整个部署过程相对比较清晰;

    (3)postgresql 数据库可以使用命令行方式进行管理,也可以通过 pgadmin 图形工具进行管理;各种管理功能,都比较强大;

    (4) 可以在命令行中查看各种性能视图和状态视图;相对其他其他数据库,并没有太好的图形监控工具和平台;

    (5) 支持冷备份和热备份,可以用 COPY 命令进行逻辑导出和导入;用 pgdump 和 pgrestore 进行物理备份和恢复;

    (6)postgresql 官方支持 master-standby 复制;也可以用 Slony-I 第三方组件进行数据库同步;

    (7)postgresql 可以通过修改源码实现的 postgres-XC 实现水平扩展;

    适用场景:

    绝大多数 OLTP 场景,部分 OLAP

    适合目前互联网需要的一些信息,比如地理位置信息处理;

    以 postgresql 作为底层数据库的 greenplum 数据仓库,是主流的 MPP 数据仓库;

    基于 postgresql 的 TimeScaleDB,是目前比较火的时序数据库之一;

    选择注意:

    Postgresql 的架构、使用难度、功能性介于 Oracle 数据库和 MySQL 数据库之间,但因其开源的推动,各方面也有不错的发展;

    Postgresql 目前还没有比较主流和好用的监控平台,这是 postgresql 数据库目前存在的一个不足。

    5. Sybase 数据库

    美国 Sybase 公司研制的一种关系型数据库系统,是一种典型的 UNIX 或 WindowsNT 平台上客户机 / 服务器环境下的大型数据库系统。

    Sybase 提供了一套应用程序编程接口和库,可以与非 Sybase 数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。

    Sybase 通常与 SybaseSQLAnywhere 用于客户机 / 服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的 PowerBuilder 为开发工具,在我国大中型系统中具有广泛的应用。

    6. DB2 数据库

    DB2 主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。

    DB2 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和 SQL 命令。

    DB2 采用了数据分级技术,能够使大型机数据很方便地下载到 LAN 数据库服务器,使得客户机 / 服务器用户和基于 LAN 的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。

    DB2 以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2 具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。

    7. Access 数据库

    Microsoft Office Access 是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

    Microsoft Office Access 是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。它是微软 OFFICE 的一个成员, 在包括专业版和更高版本的 office 版本里面被单独出售。

    MS ACCESS 以它自己的格式将数据存储在基于 Access Jet 的数据库引擎里。它还可以直接导入或者链接数据 (这些数据存储在其他应用程序和数据库)。

    软件开发人员和数据架构师可以使用 Microsoft Access 开发应用软件,“高级用户” 可以使用它来构建软件应用程序。和其他办公应用程序一样,ACCESS 支持 Visual Basic 宏语言, 它是一个面向对象的编程语言, 可以引用各种对象,包括 DAO(数据访问对象),ActiveX 数据对象, 以及许多其他的 ActiveX 组件。可视对象用于显示表和报表,他们的方法和属性是在 VBA 编程环境下,VBA 代码模块可以声明和调用 Windows 操作系统函数。

    (1) 完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。

    (2) 强大的数据处理功能

    (2)强大的数据处理功能 (3) 可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好

    (4) 作为 Office 套件的一部分,可以与 Office 集成,实现无缝连接

    (5) 能够利用 Web 检索和发布数据,实现与 Internet 的连接。 Access 主要适用于中小型应用系统,或作为客户机 / 服务器系统中的客户端数据库。

    二、非关系型数据库

    1. Mongodb 数据库

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    定位:

    开源、多平台、文档型 nosql 数据库

    非常主流的文档型 nosql 数据库,“最像关系型数据库”,定位于 “灵活” 的 nosql 数据库

    特点:

    (1) 数据文件存储格式为 BSON,模式自由,整体架构与关系型数据库有对应关系,具有较好的高可用性和伸缩性,有插件式存储引擎,新版本默认是 writedtiger 存储引擎;

    (2) 部署比较简答,下载软件,设置好配置文件即可启动服务;

    (3) 不支持 SQL 语句,使用与 SQL 对应的 json 方式管理数据库;

    (4) 有比较丰富的监控和性能命令,官方有比较完善的图形监控系统,但需要购买;

    (5) 支持冷备份和热备份,可以使用 mongoexport/mongimport 进行逻辑备份,也可以使用基于 oplog 的 mongodump/mongorestore 物理热备份;

    (6)MongoDB master-slave 主从复制:在 master 节点上加 --master 参数,从数据库加 -slave 和 - source 参数,就可以实现同步,这种目前不建议;ReplicaSets 复制集,在 mongodb 1.6 之后,开发了新的 replicaset,着呢家了故障自动切换和自动修复成员节点,各个 DB 将数据一致,建议使用这种方式;可以测试读写分离和故障转移;

    (7)mongodb 海量数据水平拆分,将数据分别存储在 sharding 各个节点上,构建出分布式集群。Sharding 架构由 底层多个 mongodb Shared Server,config 水平拆分配置库 config server,前端路由 route process,三部分构成。Sharding 集群底层可以是 mongodb 单实例,也可以高可用的 replicaSet 复制集。

    适用场景:

    网站后台数据库:mongodb 非常适合实话实说插入、更新与查询,并可以实时复制和高伸缩性,适合更新迭代快、需求变更多、以对象为主的网站应用;

    小文件系统:对于 json 文件,二进制数据,适合用 mongodb 进行存储和查询

    日志分析系统:对于数据量大的日志文件,IM 会话消息记录,适合用 mongodb 来保存和查询;

    缓存系统:mongodb 数据库也会使用大量的内存,合理的设计,也可以作为缓存系统使用;不过目前缓存系统使用更多的方案是 memcached 和 redis。

    选择注意:

    Mongodb 不适合的场景:

    高度事务性的系统:即传统的 OLTP 业务,mongodb,乃至其他 nosql,对事务性支持都不太好;

    传统的统计分析应用:即传统的 OLAP 业务,需要高度优化的查询方式,mongodb 支持不好;

    使用 SQL 语句比较方便的业务:mongodb 是 json 类型的查询方式,虽然也灵活,但不如用 SQL 方便,如果业务和适合 SQL,则就不太合适 mongodb 了。

    2. Redis 数据库

    redis 是一个 key-value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set -- 有序集合) 和 hash(哈希类型)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从) 同步。

    Redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得 Redis 可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布 / 订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

    定位:

    开源、Linux 平台、key-value 键值型 Nosql 数据库

    简单稳定,非常主流的、全数据 in-momory、定位于 “快” 的键值型 nosql 数据库

    特点:

    (1) 命令执行速度非常快,读写性能可达 10 万 / 秒;数据结构是 key-value 类似字典的功能,可以键过期 - 缓存,发布订阅 - 消息系统,简单的事物功能;

    (2) 用下载软件介质,编译安装的方式,可以很快完成数据库部署;服务启动 redis-server,可以用默认配置、运行参数配置、配置文件启动,三种方式;redis 在 Linux 平台支撑较好,官方没有 Windows 版本,微软维护了一个分支;

    (3) 用 redis-cli 客户端连接,一般用简单的 set ,get,del 进行数据管理; 在单实例 redis 的基础上,进行可以数据持久化,主从复制,高可用和分布式等功能;

    (4) 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有开源监控工具来监控和记录数据库的状态,比如 cachecloud;

    (5) 直接备份成物理问价的 RDB 持久化,基于 AOF 日志的实时 AOF 持久化

    (6) 官方的 redis sentinel 哨兵高可用集群

    (7) 官方基于分配槽的 redis cluster 分布式集群

    适用场景:

    缓存

    基础消息队列系统

    排行榜系统

    计数器使用

    社交网站的点赞、粉丝、下拉刷新等应用;

    选择注意:

    Redis 的使用场景,是 redis 适合的解决的问题,也有不适合解决的问题。

    从数据规模角度讲,小数据规模使用 redis 比较合适,大数据规模使用 redis 不合适;(大数据规模,在一定程度上,可以用 SSDB 替代 redis 使用);

    从数据冷热角度看,热数据适合放在 redis 中,冷数据不适合放在 redis 中。

    3. Hbase 数据库

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 HBase 基于列的而不是基于行的模式。

    1、定位:

    开源、Linux 平台、列存储 nosql 数据库

    可用于海量数据存储、与 Hadoop 生态圈结合、定位于 “大” 的列存储 nosql 数据库

    2、特点:

    (1) 命令执行速度非常快,读写性能可达 10 万 / 秒;数据结构是 key-value 类似字典的功能,可以键过期 - 缓存,发布订阅 - 消息系统,简单的事物功能;

    (2) 相对其他数据库,hbase 的部署比较复杂,依赖 Hadoop,zookeeper 等组件,Hbase 集群包括一个 mater 节点,多个 regionServer,zookeeper 管理所有 regionServer,需要依次部署 Hadoop、zookeeper 之后,再部署 HBASE 集群;

    (3) 用 redis-cli 客户端连接,一般用简单的 set ,get,del 进行数据管理; 在单实例 redis 的基础上,进行可以数据持久化,主从复制,高可用和分布式等功能;

    (4) 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有开源监控工具来监控和记录数据库的状态,比如 cachecloud;

    (5)Hbase 一般用作海量数据的仓库,本身通过多层副本来保证数据安全性,不用进行专门的备份

    (6)HBASE 集群基于 Hadoop,需要依次部署 Hadoop 单机模式、集群模式、HA 模式,通过 Hadoop HA 实现高可用;

    (7)HBASE 以集群形式,依次是单机模式,伪分布模式,完全分布模式,底层基于 HDFS,zookeeper 可以很好地进行扩展;

    3、适用场景:

    两大用途:

    用于简单数据写入和海量、结构简单数据查询的业务场景;

    用于成为其他数据库备份和下沉的数据库;

    4、选择注意:

    Hbase 不适合的场景:对数据分析需求高,需要能够用 sql 或者简单的 MapReduce 实现分析需求的业务场景,不适合用 Hbase;

    单表数据量,不超过千万时,使用 Hbase,体现不出 Hbase 的优势,而且会比较慢,不适合用 Hbase。

    4. Memcaced 数据库

    Memcaced 是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的 web 应用,最初版本由 LiveJoumal 的 Brad Fitzpatrick 在 2003 年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而 Memcached 是服务端的主程序文件名。

    缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后者是磁盘、Memcached 是一种纯内存缓存系统,把经常存取的对象或数据缓存在 memcached 的内存中,这些被缓存的数据被程序通过 API 的方式被读取,memcached 里面的数据就像一张巨大的 hash 表,数据以 key-value 对的方式存在

    Memcached 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的 Web 应用。

    三、对话李飞飞老师想了解的关于数据库存在的问题

    1. 如何结合不同的业务场景选择合适的数据库?

    2.业务系统应用架构设计时如何适配分布式数据库以实现高性能,在线扩展后性能如何同步提升?

    3. 分布式数据库故障时如何确保故障自动转移,自动恢复业务,实现高可用?

    4. 分布式数据库全局一致性和高性能如何取舍达到平衡?

    5. 中小企业公司后端稳态类系统进行分布式方向改造的必要性?

    6. 关于国产分布式数据库未来趋势分析?

    7. 在分布式数据库架构选型中,如何看待计算与存储分离?

    8. 有没有数据库综合管理平台推荐?

    9. 国产数据库选型集中式与分布式如何选取?

    10. 阿里云PolarDB数据库都有哪些具体的优势,未来的规划以及进一步发展?

    踩8 评论0
  • 回答了问题 2022-08-22

    你收到过哪些特别的开发者周边?

    希望阿里云社区越办越好,我们一起加油努力努力

    踩0 评论0
  • 回答了问题 2022-08-16

    【藏经阁一起读(25)】读《五天玩转EMAS Serverless》,你有哪些心得?

    全书详细的介绍了从 EMAS Serverless的基本原理、开发者如何接入EMAS Serverless以及 EMAS Serverless 的开发环节、实战演示了小程序疫苗预约的框架搭建和数据库管理、云函数开发和云函数实战、云存储以及云调用,五个大的章节,读完后使人受益匪浅,对我很受帮助的的核心知识点有以下几方面:

    第一部分:

    1、EMAS Serverless 使用场景

    2、EMAS Serverless 产品能力

    3、云函数是怎样工作的

    4、控制台功能渎示

    第二部分:

    开发前的准备主要有两个步聚:

    1、开通支付宝小程序开发者账号。

    2、配置 EMAS Serverless 密钥。把支付宝小程序的开发者信息、支付宝公钥、以及应用私钥到 EMAS Serverless 的控制台。

    3、Serverless SDK 的使用优点。用户安全、高效、方便地使用 Serverless 云资源。

    4、Serverless SDK 的四个功能,即云函数、云数据库、云存储,以及用户信息的访问和使用。

    5、SDK 的使用方式,包括 SDK 集成和接口规范。

    第三部分:

    1、小程序疫苗预约项目介绍

    2、业务场景设计

    3、数据库设计

    4、数据操作命令学习

    5、云数据库控制台功能介绍

    第四部分:

    1、在云函数开发方面,介绍了本地开发、打包部署、控制台调试和端侧集成。

    2、在云函数实战方面,我们以登录注册和疫苗预约两个典型场景演示了业务逻辑设计,业务逻辑实现以及集成测试的基本流程。

    第五部分:

    1、使用云存储的关键是,需要了解图片本地临时地址和云存储接口返回的网络地址之间的区别。本地地址是由本地1/0,通过小程序的國片 API 产生的。网络地址是云存储通过本地图片,上传到 Serverless 后台,为图片创一个网络地址。

    2、学习云调用。介绍了支付宝的开放能力。实际演示了推送能力的集成链路以及消息模板的开通链路,并结合疫苗预约小程序通过这两条链路实现了疫苗预约消息的用户推送。

    踩0 评论0
  • 回答了问题 2022-08-10

    【藏经阁一起读(24)】读《Elastic Stack 实战手册》,你有哪些心得?

    数据技术领域一直都受益于开源、开放,在信息过载的时代蓬勃发展。Elastic Stack 就是这数据激流中的标杆,基于开源,始于搜索,通过开箱即用的体验持续降低了搜索和大数据领域的门槛,如今已家喻户晓,成为优秀开发者的必备技能之一。这份《Elastic Stack 实战手册》同样受益于社区的开放性,是集体智慧的结晶,相信定能帮助更多开发者学习、理解和掌握 Elastic Stack,并应用于各自的业务实践,用技术驱动业务增长并创建价值。在此我也呼吁更多开发者朋友积极参与进来,用建议和行动让“手册”得以持续进化。本书是迄今为止参与人数最多,综合方面最全的专业书籍,感谢社区集合了多方面力量与资源,这样的书籍很值得收到大家的喜爱,我提前阅读了部分内容,推荐《应用实践部分》,毕竟能实战才是王道。

    踩1 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息