HBase WAL原理学习

大数据组件的WAL机制的架构设计原理对比 HBase 的 HLog 滚动清理 vs 长时间保留(增加恢复选项但占用存储)ZooKeeper 同步刷盘(强一致) vs Flink 异步刷盘(高性能)增量快照(如 Flink 的 Changelog)可能部分替代传统 WAL。:通过“日志先行”在性能与可靠性之间取得平衡,但需根据场景优化配置。:选择 ZooKeeper 或 HBase(同步 WAL)。存储硬件(如 NVMe)提升 WAL 的写入性能瓶颈。:优先考虑 Redis 或 Kafka(异步刷盘)。Kafka 的日志分段删除策略(按时间/大小) 阅读详情
1.概述 
客户端往RegionServer端提交数据的时候,会写WAL日志,只有当WAL日志写成功以后,客户端才会被告诉提交数据成功,如果写WAL失败会告知客户端提交失败,换句话说这其实是一个数据落地的过程。在一个RegionServer上的所有的Region都共享一个HLog,一次数据的提交是先写WAL,再写memstore,示意图如下 
 

2.HLog Class 
WAL的实现类是HLog,当一个Region被初始化的时候,一个HLog的实例会作为构造函数的参数传进去。当Region在处理Put、Delete等更新操作时,可以直接使用该共享的HLog的append方法来落地数据。Put、Delete在客户端上可以通过setWriteToWAL(false)方法来关闭该操作的日志,这么做虽然可以提升入库速度,但最好别这么做,因为有数据丢失的风险存在。 
HLog的另一个重要功能是跟踪变化,这个通过sequence number来实现。sequence number作为HFile里的一个元数据字段,它用来跟踪哪些日志是已经持久化了的,哪些还在内存中。(注:通过对源码的分析,这种变化因为每个Region是不一样的,所以在HLog的日志里是记录了多条,是针对于每个Region来记录的,把该Region的最后一次持久化的seqId作为一条日志写入HLog,这样,比该seqId小的数据就是已经持久化过的了。)(照这种分析,在HLog replay的过程中,岂不是从后往前replay日志更方便么?有待学习replay的实现方式来验证) 

 
这个图表明同一个RegionServer上的三个Region共享一个HLog,因此当它们写数据时,是把<HLogKey,WALEdit>这个的数据对按顺序混合的写到HLog上的,以获得最好的写入速度。 

3.HLogKey Class 

WAL现在是通过Hadoop的SequenceFile来存储key/value集合。value简单的存储了来自客户端的数据如row key, column family, column qualifier, timestamp, type, and value;而HLogKey则存储了the region and table name、还有更新时间、sequence number和cluster ID,cluster ID用于将日志复制到集群里的其他机器上。 

4.WALEdit Class 
来自客户端的更新数据的请求被封装到WALEdit类上。这个类把对row数据的修改原子化。(怎么原子化的还得看源码) 
5.LogSyncer Class 
Table在创建的时候,有一个参数可以设置,是否每次写Log日志都需要往集群里的其他机器同步一次,默认是每次都同步,同步的开销是比较大的,但不及时同步又可能因为机器宕而丢日志。 
Pipeline vs. n-Way Writes 
同步的操作现在是通过Pipeline的方式来实现的,Pipeline是指datanode接收数据后,再传给另外一台datanode,是一种串行的方式;n-Way Writes是指多datanode同时接收数据,最慢的一台结束就是整个结束。差别在于一个延迟大,一个并发高,hdfs现在正在开发中,以便可以选择是按Pipeline还是n-Way Writes来实现写操作。 
Table如果设置每次不同步,则写操作会被RegionServer缓存,并启动一个LogSyncer线程来定时同步日志,定时时间默认是一秒也可由hbase.regionserver.optionallogflushinterval设置 

5、HLog的几个特点
 
WAL(Write-Ahead-Log)是HBase的RegionServer在处理数据插入和删除的过程中用来记录操作内容的一种日志。在每次Put、Delete等一条记录时,首先将其数据封装成〉,append到RegionServer对应的 HLog文件的过程。它有几个重要的特点:
    1、RegionServer上所有的Region共享HLog文件;也就是RegionServer的个数与HLog是一一对应的,为什么不选择每个Table对应一个HLog的原因是,通过RegionServer的个数可以衡量分布式系统的规模,这是系统运维可以控制的因素,而Table的个数和大小完全是由应用层来决定。极端情况下,我们的HBase集群可能只有一张大表 (每天10亿规模的读写),而可能需要上百个节点搭建HBase集群,在这种情况下,按照RegionServer记录一个HLog的意义就凸现出来了。 同样的道理可以解释,为什么要把所有的Region的log都插入同一个文件。

HBase中WAL(Write-Ahead-Log)的特性与场景分析

图 1 RegionServer内WAL文件与Region的关系图


2、HLog也是记录在HDFS上;这一个众所周知的问题,这里提出来的原因在于,在大多数情况下它成为了影响了HBase写操作吞吐的重要因素。如图2、3显示,在对表格进行批量删除数据时,每次操作时不写HLog比写HLog,性能要好大概10~20倍。而且正是由于写HDFS的原因,可以看到大概有些点的性能偏离平均值2倍以上的性能。对于图2写WAL而言,这些点大部分属于写HDFS响应的时间的异常点。在HBase-0.92版本中,使用的append操作在hdfs底层其实是一种write操作,而这种操作在遇到超过block预设大小时,会有一次和NameNode的操作,另外在高负载的HDFS集群上,写速度波浪式的,不会持续保持稳定,而这种不稳定对于像append这样的操作,最终在反复测试时,就会表现出现偏离平均值2倍以上的1%现象。相比较而言,图3由于没有写WAL,可以看到它不仅在平均性能上表现更好,也在稳定性上更胜一筹,它的抖动出现在MemStore向HDFS刷数据的时间点上。显然,在MemStore足够大的情况下,这种波动是可以预期的,甚至也是很多应用可以容忍的。

HBase中WAL(Write-Ahead-Log)的特性与场景分析

 

 

图 2写WAL批量删除数据的性能图



HBase中WAL(Write-Ahead-Log)的特性与场景分析

 

                            图 3不写WAL批量删除数据的性能图

    写 WAL 还是不写 WAL ,在一定程度上确实会给系统性能产生了很大影响,根据 HBase 内部设计, WAL 是一种规避数据丢失风险的一种补偿机制,如果应  用可以容忍一定的数据丢失的风险,可以尝试在更新数据时,关闭写 WAL 。下一篇文章,会介绍使用不写 WAL 删除数据失效的场景。

   3、HLog是系统稳定的重要依据。在一个HRegionServer的存活周期内,可能因为长时间的Stop-The-World GC,或者因为它所依赖的HDFS或者ZooKeeper,出现下线的情况,对于一个高负载的HBase生产集群而言,这是一个非常常见的现象。对于RegionServer的下线,往往通过jps监控进程存活和nc –z来监控关键服务端口的存活状态来验证服务的状态,保证让下线的RegionServer尽快恢复,保证原HBase集群的整体负载的吞吐。在RegionServer下线这个过程中,是HBase内部最核心部件工作的关键时期,简单总结一下RegionServer下线后内核处理流程如下:

  •  (1) HMaster从ZooKeeper捕获到对应RegionServer的znode被删除,将其放入ServerManager的DeadSevers列表中。
  • (2)启动ServerShutdownHandler,进入该handler的处理流程中。
  • (3)SplitLogManager对原RegionServer的HLog文件夹内的Hlog文件提交到zookeeper的splitlog路径下。(注意,HLog存在Roll操作,造成了Hlog文件夹内可能存在多个hlog文件)。
  • (4)SplitLogManager等待RegionServer上的SplitLogWorker认领任务,并在任务完成之后,进入Region Assign流程。每个SplitLogWorker都会经历将HLog上出现的所有Region分别以文件的形式存储,在hbase所在hdfs根目录下splitlog文件夹内,会以RegionServer认领一个某个下线的RegionServer的HLog为文件夹名,包含按照Region分散开来的Hlog文件集。
  • (5)HMaster的AssignmentManager从.META.以及当前处于InTransaction状态的集合中,计算出需要Assign的Region,然后通过getRegionPlan获得将该Region迁移的目的地址,并修改Region状态从Offline变成OPENING。然后AssignmentManager就进入了状态机的处理流程中。
  • (6)被选中目的地的Region,Master通过RPC让其执行openRegion操作,RegionSever使用HRegion.openRegion,会首先经历一次replayRecoveredEditsIfAny,将那些散落在splitlog下各个worker处理过的Region的Hlog信息加载过来,并执行replay。
  • (7)所有相关的Region处理完毕,这样一个RegionServer下线的影响就结束了。在这段时间内,相应Region的读写操作全部暂停。你如果客户端写得比较友好,Region上线有足够快的话,对于客户端而言,相当于一次服务抖动,只是这个抖动有点大。

从这个流程中可以看出,虽然HLog采用了Distributed Split来加快切分,但是这里Hlog的稳定仍然是服务稳定性重要因素。因此,有一项比较有趣的事情时,我们完全可以做一个备用的RegionServer来轮询是否有RegionServer处于下线状态,一旦处于下线状态,就按照只读的方式来加载相应的Region,这样至少可以保证在RegionServer下线,可以保证数据服务的一定的可用性。

HBase源码分析之WAL WAL(Write-Ahead Logging)是数据库系统中保障原子性和持久性的技术,通过使用WAL可以将数据的随机写入变为顺序写入,可以提高数据写入的性能。在hbase中写入数据时,会将数据写入内存同时写wal日志,为防止日志丢失,日志是写在hdfs上的。 默认是每个RegionServer有1个WAL,在HBase1.0开始支持多个WALHBASE-5699,这样可以提高写入的吞吐量。配置参 阅读详情

相关推荐

HBase WAL机制详解:数据持久化的保障

HBase的写入流程中,MemStore是性能瓶颈吗?不——MemStore是内存结构,写入速度极快。真正的风险是内存数据的易失性。故障恢复:RegionServer宕机后,通过WAL恢复未Flush的MemStore数据;事务原子性:确保写入操作要么“日志+MemStore”都成功,要么都失败(避免部分写入);顺序写优化:WAL是顺序写(比HFile的随机写快10~100倍),降低持久化延迟。

操作系统内核探秘的博客 831

菜鸟学数据库——WAL模式及其原理

参考文章: SQLite的WAL机制 什么是WAL? WAL模式的全称是Write Ahead Logging,它是很多数据库中用于实现原子事务的一种机制,SQLite 3.7.0版本引入了该特性。Android 3.0 以上版本的SQLite 版本都大于3.7.0。 在WAL模式下,SQLite中除了db文件,还包含两个文件,.wal文件和.shm文件,前者是日志文件,后者是日志索引文件...

weixin_33946020的博客 2030

AP发票批量付款程序(WEB ADI)

CREATE OR REPLACE PACKAGE MEW_AP_BATCH_PAYMENTS_PKG IS   PROCEDURE MAIN(P_BATCH_ID          NUMBER                 ,P_ORG_ID            NUMBER                 ,P_BANK_ACCOUNT_NAME VARCHAR2

储藏室 5050

什么是WAL模式

什么是WAL模式什么是WAL?WAL工作原理 什么是WAL? WAL模式的全称是Write Ahead Logging,它是很多数据库中用于实现原子事务的一种机制,SQLite 3.7.0版本引入了该特性。Android 3.0 以上版本的SQLite 版本都大于3.7.0。 在WAL模式下,SQLite中除了db文件,还包含两个文件,.wal文件和.shm文件,前者是日志文件,后者是日志索引文件。 WAL工作原理 在引入WAL机制之前,SQLite使用rollback journal机制实现原子事务。 r

code_feien的博客 3611

整合WGCNA、机器学习和孟德尔随机化

(G)通过蛋白质免疫印迹法(Western blot)测定的 UT-B(由 SLC14A1 编码)、ARHGEF38、NEFH、MSMB、KRT23 和 KRT15 在前列腺癌肿瘤组织和癌旁非癌组织中的蛋白质表达水平。本研究利用来自基因表达综合数据库(GEO)的数据集筛选差异表达基因(DEGs),并采用加权基因共表达网络分析(WGCNA),以识别在模块中与前列腺癌高度相关的驱动基因。(F)蓝绿色模块中的模块成员关系(MM)与前列腺癌(PCa)的基因显著性(GS)的散点图。(D)6 个基因之间的相关性分析。

多组・学・多组学 1136

如何评估一颗 AI 芯片的真实性能?TOPS、FPS 与 Token/sec 全解析

AI 芯片在实际部署中,其理论峰值性能往往无法反映真实执行效率。如何科学评估一颗 AI 芯片的“真实性能”,已成为芯片选型与系统集成环节中的关键技术问题。本文从工程实战角度出发,深入拆解当前常用性能评估指标(TOPS、FPS、Token/sec)背后的定义逻辑与使用陷阱,并结合推理模型部署与执行路径,系统讲解 AI 芯片在不同场景下的性能验证方法。通过对芯片算力-功耗-调度三维关系的分析,读者将掌握评估一颗 AI 芯片是否“跑得动业务”的核心判断能力。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3385

Sqlite学习笔记(四)&&SQLite-WAL原理 Write ahead logging

Sqlite学习笔记(四)&&SQLite-WAL原理(转) 2015-08-24 21:55 by 沧海一滴, 90 阅读, 0 评论, 收藏, 编辑 Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然。 WAL是什么       WAL(Writ

linuxheik的专栏 2238

深入浅出DDR系列(二)--DDR工作原理

学习完了DDR的基本组成和硬件结构原理之后,从整体上了解了DDR的特性和静态图,包括原理、管脚图等。那么本章就要从动态的角度来分析时序结构,包括read/write的整个过程到数据返回发生了什么,其中包括以下内容 DDR是如何完成Read、Write 等的操作 DDR的基本命令 DDR的时序参数 DDR的性能分析 1. DRAM基本组成 对于DRAM,其主要由行和列组成,每一个bit中都是由类似右下图的类晶体管的结构组成,对于sdram的数据,可以通过控制column和row就可以访问sd

奇小葩 3万+

一文讲透 WAL(Write-Ahead Logging):数据库持久化的核心原理

本文深入解析WAL(预写式日志)的核心原理与实现,揭示其如何解决数据库持久性与性能的矛盾。WAL通过"先写日志后写数据"的策略,将随机IO转换为顺序IO,在保证ACID特性的同时提升性能。文章系统性地阐述了WAL的设计思想、ARIES恢复算法、LSN机制等关键技术,对比分析了Shadow Paging等替代方案的缺陷,并提供了性能优化实践与常见陷阱规避指南。内容涵盖从基础原理到分布式系统应用的全方位知识,适合需要深入理解数据库核心机制的后端工程师和DBA阅读。通过40-60分钟的深度阅读

goodparty的专栏 2661

Waymo数据集里的隐藏彩蛋:5个激光雷达数据融合实战(附Python代码)

本文深入解析Waymo数据集中5个激光雷达的数据融合技术,提供Python实战代码,帮助开发者掌握多传感器协同工作的关键方法。通过时间同步、坐标转换和运动补偿等技术,实现高精度3D场景重建,提升自动驾驶系统的环境感知能力。

weixin_30399821的博客 79

大宗农产品交易知识图谱推理引擎的构建--需求分析

大宗农产品交易知识图谱推理引擎的构建 一、项目概述 ​ 进入信息时代,全球产生的数据量爆炸式增长,一方面数据产生的方式发生改变,由手工产生越来越多地转为自动化生成,另一方面,人类的活动也越来越依赖数据;民以食为天,粮食方面的信息数据对人类来说至关重要,而当前繁杂的数据已经超出了人工处理的范围,这就对数据采集和数据处理提出了新的要求。 知识图谱是将大量收集的数据整理成机器能处理的知识库,并实现可视化的展示。知识图谱本质上是一种大规模的语义网络,其主要目的是对真实世界里的实体或概念之间的关联关系进行描述;构造

qq_40583949的博客 2585

Hbase WAL原理学习

1.概述 客户端往RegionServer端提交数据的时候,会写WAL日志,只有当WAL日志写成功以后,客户端才会被告诉提交数据成功,如果写WAL失败会告知客户端提交失败,换句话说这其实是一个数据落地的过程。在一个RegionServer上的所有的Region都共享一个HLog,一次数据的提交是先写WAL,再写memstore,示意图如下 [img]http://dl.iteye.com/up...

uestzengting的专栏 221

在 SAP 世界里拥抱非 SAP 技术:一名 ABAP 开发者的成长路径与实战方法论

那段时间非常煎熬,但它带来的回报也很真实:你会更尊重“可观测性”的价值,也会更愿意在 SAP 场景里把日志、追踪、断言、隔离测试做扎实。解决这类问题,靠的并不是某个神奇的 SAP 函数,而是跨栈的工程设计:接口要有业务幂等键,SAP 侧要有落库与锁策略,返回要有可识别的状态码,异常要能回放,补偿要有可追踪的工单或队列。这套体系吸引我的地方,在于它更贴近真实业务:客户要的往往不是“能打印”,而是“能规范地输出”,包括版式、字体、条码、二维码、电子签章位置、分页规则、多语言、合规水印、可回写的交互字段等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 165

HBase伪分布式环境搭建与原理深度解析

HBase伪分布式是理解其核心架构的入门基石,它将分布式系统的关键组件——ZooKeeper协调服务、HDFS底层存储、Master/RegionServer职责分离等——浓缩于单机可验证环境中。其本质并非简化版集群,而是LSM-Tree写入机制、WAL预写日志、HFile落盘流程等原理的可视化沙箱。技术价值在于建立配置协同的‘三权分立’认知(HBase/HDFS/ZooKeeper),规避因`hbase.rootdir`路径不一致或`fs.defaultFS`协议错误导致的启动失败;典型应用场景包括教学实

weixin_29053695的博客 230

短距激光雷达专业讲解:定义、架构、技术路线与选型逻辑

短距激光雷达,通常指有效探测距离不大于 50 米的激光雷达产品。它主要服务于服务机器人、扫地机器人、AGV/AMR、无人机、智能手机、AR/VR、工业安全等中近距感知场景。它与车载中长距激光雷达的最大区别,不是“探测距离短一点”,而是整套工程目标不同。短距激光雷达的核心诉求是:小体积、低成本、高帧率、强抗光、嵌入式集成。单价从百元级扫地机模组,到数千元级工业 3D 雷达不等。一句话概括:中长距车载激光雷达追求远距离、高可靠、车规寿命;

致力于lidar应用开发 151

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HBase伪分布式搭建与核心机制实操指南

HBase作为分布式列式数据库,凭借海量数据的高并发读写能力,成为大数据生态中的关键组件。在生产集群部署之前,在单机搭建伪分布式环境是理解其运作机制的高性价比路径。伪分布式模式下,HMaster、HRegionServer和ZooKeeper在同一台机器上独立运行,完整复现集群的通信与协调逻辑,既能快速验证功能,又能直观排查问题。从零开始梳理Hadoop HDFS层、HBase安装配置及核心参数,深入剖析WAL预写日志异常的处理思路,并结合HBase Shell演示建表、数据读写与自动拆分/预分区等操作。掌

weixin_30512965的博客 238

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HBase WAL

预写日志 RegionService内部架构图 预写日志(Write-ahead log,WAL)就是设计来解决宕机之后的操作恢复问题的。数据到达Region的时候是先写入WAL,然后再被加载到Memstore的。就算Region的机器宕掉了,由于WAL的数据是存储在HDFS上的,所以数据并不会丢失。 如何关闭/打开WAL WAL是默认开启的。你可以选择通过调用下面语句: Muta...

初阳 3588

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HBase WAL 机制详解:保障数据不丢的关键机制

本文深入解析 HBase WAL(Write-Ahead Log)机制的核心原理,详细阐述数据写入路径、日志滚动策略以及故障恢复机制。通过分析 WAL 如何确保数据在 HBase 分布式环境中的持久性和一致性,帮助读者理解 HBase 数据不丢的技术保障体系,并提供实际应用中的最佳实践与注意事项。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 701

hbase WAL机制原理

解决的问题 HBase的Write Ahead Log (WAL)提供了一种高并发、持久化的日志保存与回放机制。每一个业务数据的写入操作(PUT / DELETE)执行前,都会记账在WAL中。 如果出现HBase服务器宕机,则可以从WAL中回放执行之前没有完成的操作。 本文主要探讨HBase的WAL机制,如何从线程模型、消息机制的层面上,解决这些问题: 由于多个HBase客户端可以对某一台HB...

qq_18219755的博客 641

HBase的Write Ahead Log (WAL)

HBase的Write Ahead Log (WAL)一、预写日志WAL(Write-Ahead-Log)HLogHLogKeyLogFlusherLogRollerReplay问题二、WAL的写入 一、预写日志WAL(Write-Ahead-Log) HBase的Write Ahead Log (WAL)提供了一种高并发、持久化的日志保存与回放机制。每一个业务数据的写入操作(PUT / DELE...

爱是与世界平行 1422

总结:HBase原理篇

HBase是列式数据库,底层基于LSM数据结构进行存储,因此写入性能很强,读取性能较差。关于LSM的详细信息可以阅读文章: https://cloud.tencent.com/developer/news/340271 一、什么是列式数据库? 详情看下:https://blog.youkuaiyun.com/coderising/article/details/100021718 列式数据库是针对行数据库而言的,行式数据库是以一行数据作为一个存储单元,而列式数据库是以一列数据为一个存储单元,针对hbase来说,

w2009211777的专栏 5961

HBase高级特性:WAL与Snapshot机制

1.背景介绍 HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。HBase提供了一种高效的数据存储和查询方式,可以处理大量数据的读写操作。在HBase中,WAL(Write Ahead Log)和Snapshot机制是两个非常重要的高级特性,它们在HBase的数据持久化和一致性保证方面发挥着重要作用。本文将从以下几个方面进行深入探讨: 背景介绍 核...

AI天才研究院 1478

HBase基础架构与核心原理深度解析:WAL的生死劫

作为分布式列式存储系统的代表,HBase的基础架构设计充分体现了Google BigTable论文的核心思想。在2025年的技术生态中,HBase 3.x版本通过分层架构设计,实现了海量数据的高效存储与实时访问能力。其架构可划分为客户端层、协调层、存储层和底层持久化四个关键层次,各层之间通过精密的协作机制保障系统的高可用性。客户端与服务协调层客户端API作为系统入口,通过ZooKeeper集群获取元数据路由信息。

zuiyuelong的博客 1273

Hbase的WAL在RegionServer基本调用过程

Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。本文档用于说明hbase的wal简单原理以及从源码的角度分析一个“写”请求是如何到达wal,wal又会做哪些请求。 本文档用于说明hbase的wal简单原理以及从源码的角度分析一个“写”请求是如何到达wal,wal又会做哪些请求。特别说明Hbase不同版

tengxy_cloud的专栏 1813

(转)HBase WAL简介

【转载原因:解释很清楚】 【转载原文:https://www.jianshu.com/p/65cb8cd81f40】 RegionServer 会将数据保存在内存中(MemStore),直到满足一定条件,将其 flush 到磁盘上。这样可以避免创建很多小文件。内存存储是不稳定的,常见的也是 HBase 使用的解决方案是write-ahead logging(WAL):每次更新操作都会写日志,...

小蚯蚓的博客 1300
上一篇: DBA生存之四大守则
下一篇: 深入剖析MongoDB架构
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值