- 博客(205)
- 资源 (22)
- 收藏
- 关注

原创 【解锁】传送门
目录Linenoise——C命令行处理工具Catch2——C++测试框架(Quick Start)Linenoise-NG(Linenoise Next Generation)——C++命令行处理工具Yarn——快速、可靠、安全的node包依赖管理工具Pandoc——Pandoc安装、使用、快速上手autopep8——python代码格式化工具flake8——python官方代码扫...
2020-02-11 18:33:52
2095

原创 【运维经】第0章——目录
开这个专栏目的是想把开发和运维的经验记录下来并分享给大家。专栏里面内容比较简单,主要是围绕一些能够提高工作效率的小技巧,小工具和非常实用的命令等。希望这些点滴的记录能够给你的工作增添些许色彩,让枯燥的日常工作变得更加有趣儿一些。本专栏尽量保持日更,如果由于特殊原因断更后续会尽量补更。
2020-02-02 11:00:58
726
原创 编译安装Fedora最新内核
以上是下载、编译和安装Fedora内核的基本步骤。如果您需要进行更高级的配置或调试,可以查看Fedora内核源代码中的文档或参考Fedora官方文档。在该页面中选择需要下载的内核版本,然后在页面下方找到相应的源代码包下载链接。下载的源代码是一个rpm包,需要解压才能得到内核源代码。首先需要确定您需要下载的内核版本。该命令将使用默认配置文件生成内核配置。该命令将使用所有可用的CPU核心并行编译内核。在编译内核之前,需要安装一些编译工具。该命令将安装内核模块和内核镜像,并将新内核添加到引导程序中。
2023-03-22 11:18:00
1349
原创 核心系统国产平台迁移验证
信息技术应用创新,旨在实现信息技术领域的自主可控,保障国家信息安全。金融领域又是关系国家经济命脉的行业,而对核心交易系统的信息技术应用创新是交易所未来将要面临的重大挑战。为了推进国产化进程,选取核心交易系统的典型模块,实践了基于鲲鹏平台的迁移验证,在各技术栈迁移流程方法、性能调优、典型问题等方面,做了大量的探索与尝试。
2023-03-11 22:17:55
2357
原创 gdb查看汇编代码的例子
run注意:如果您使用的是 Intel 架构的处理器,可以在 gdb 中使用命令来切换汇编代码的格式为 Intel 格式。默认情况下,汇编代码是 AT&T 格式的。
2023-03-05 19:17:01
4228
原创 MySQL LOAD VS DM8 dmfldr
某业务系统从MySQL迁移至达梦后,有导入业务文件的功能使用MySQL的LOAD方式将csv文件导入到指定的表中。迁移到达梦后,该功能需要进行对应的调整(因为达梦没有LOAD功能),但达梦提供了dmfldr来实现快速的将文件装载到数据库的表中,从目前业务的需求上看,达梦的dmfldr是可以替代MySQL的LOAD功能。针对这个需求,本文使用一个demo来对比LOAD和dmfldr的使用与性能差异。
2023-01-13 16:18:26
710
原创 【与达梦同行】达梦驱动图谱
达梦提供了大部分主流开发语言的驱动接口,在我用使用过的国产数据库中对客户端驱动的支持应该算是非常不错的。本文主要介绍达梦的驱动开发,通过实际操作,从环境搭建到实践验证,介绍了达梦各种语言驱动的详细使用过程,由于篇幅原因,将演示代码提交到gitee仓库上供大家参考。
2022-12-17 15:30:40
1138
原创 openGauss洗冤录 之 copy from
对于copy功能PostgreSQL从9.2.4到16devel是否有过优化?或者openGauss是否持续合并或优化PostgreSQL的copy功能,这方面我没有去考证过。单纯从测试结果上看,openGauss的copy性能要略逊于PostgreSQL。当然,可能是我水平有限,所以希望各位openGauss的专家、老师集思广益,还openGauss一个真实的COPY FROM文件导入性能。(大家可以回复优化方案,我这边去做验证)
2022-12-11 20:47:08
879
原创 测评报告:文件导入哪家强?
本文将针对文件导入功能,在MySQL、PostgreSQL、达梦8、LvorySQL、openGauss、OceanBase六款数据库进行了对比测试。测试过程中使用相同的硬件环境和操作系统,且各数据库使用安装时的默认参数。注意:由于Oracle没有提供ARM相关的安装介质,所以本次测试并未对比Oracle的sqlldr;所有被测数据库都未经过优化,全部使用默认参数;
2022-12-10 15:29:57
1114
原创 OceanBase TableAPI实践案例(Java)
早在OceanBase 社区版 3.1.1中开放了一组新的 API 叫做 TableAPI,TableAPI 以 API而非 SQL 的方式提供了一种新的访问 OceanBase 数据的接口。它把 OceanBase 可靠和可扩展的分布式存储层能力直接提供给应用程序,提供了灵活(非关系模型)和轻量的数据访问接口(无连接状态),应用程序可以把 TableAPI 当做 key-value , Table-store , Hbase等多种数据模型的数据库来使用。
2022-11-17 08:28:37
901
原创 openGauss/MogDB高可用整理
主库为自己管理的每一个备库指定一个同步优先级(sync_priority) 与 同步状态(sync_state) 。**同步优先级(sync_priority)**表示备库在同步模式下的优先级,它是一个固定值。较小的值表示较高的优先级,而是一个特殊值,表示“异步模式”。备库优先级是一个有序列表,在主库配置参数 中依序给出。例如在以下配置中,和的优先级分别为1和2。**同步状态(sync_state)**是备库的状态,它因所有在列备库的运行状态及其优先级而异,以下是可能的状态:MogHA 是云和恩墨基于 M
2022-11-13 20:50:44
432
原创 TDSQL高可用整理
TDSQL PostgreSQL版采用分布式集群架构,如下图所示。该架构分布式无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署TDSQL PostgreSQL版数据库集群。Coordinator:协调节点(简称CN),对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;
2022-11-12 10:42:17
1864
原创 PolarDB高可用整理
当一条查询请求在查询协调节点上被执行跨机并行查询时,该查询产生的执行计划会被分片路由至各个执行节点,每个执行节点将会执行各自的分片计划,并将分片的查询结果汇总至查询协调节点。可以称查询协调节点为QC(Query Coordinator)节点,称分片计划的执行节点为PX(Parallel Execution)节点。如上图所示,RO1为QC节点,它接收了一条查询输入请求,并将查询计划分片路由至RO2、RO3、RO4三个PX节点。
2022-11-12 10:41:05
456
原创 AnalyticDB PostgreSQL高可用整理
AnalyticDB PostgreSQL版基础版的Master和Segment节点均采用了单节点部署,架构图如下。图 1. 基础版架构图相比较下图中的高可用版,基础版取消了Master Node的副本Standby Node,以及Compute Node中Primary的副本Mirror。图 2. 高可用版架构图。
2022-11-12 10:38:43
527
原创 达梦高可用整理
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同 一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,其中联机日志保存在共享存储上,归档日志可以保存在本地存储上也可以保存在共享存储上。DMCSS 是 DM 集群同步服务的简称,是 DMDSC 集群应用的基础,使用 DMDSC 集群或者DMASM 集群
2022-11-11 13:44:56
2889
1
原创 MogDB高可用方案
主库为自己管理的每一个备库指定一个同步优先级(sync_priority) 与 同步状态(sync_state) 。**同步优先级(sync_priority)**表示备库在同步模式下的优先级,它是一个固定值。较小的值表示较高的优先级,而是一个特殊值,表示“异步模式”。备库优先级是一个有序列表,在主库配置参数 中依序给出。例如在以下配置中,和的优先级分别为1和2。**同步状态(sync_state)**是备库的状态,它因所有在列备库的运行状态及其优先级而异,以下是可能的状态:MogHA 是云和恩墨基于 M
2022-10-19 15:32:24
338
原创 OceanBase高可用方案
OceanBase 数据库参考传统数据库分区表的概念,把一张表格的数据划分成不同的分区(Partition)。在分布式环境下,为保证数据读写服务的高可用,OceanBase 数据库会把同一个分区的数据拷贝到多个机器。不同机器同一个分区的数据拷贝称为副本(Replica)。同一分区的多个副本使用 Paxos 一致性协议保证副本的强一致,每个分区和它的副本构成一个独立的 Paxos 组,其中一个分区为主分区(Leader),其它分区为备分区(Follower)。
2022-09-24 20:46:38
2026
原创 openGauss账本数据库,你不知道的那些事儿
本文将通过对比官方文档关于**“设置账本数据库”**中的几个章节,结合源码来说说文档中操作步骤背后的原理。官方文档账本数据库融合了区块链思想,将用户操作记录至两种历史表中:用户历史表和全局区块表。当用户创建防篡改用户表时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息,同时在blockchain模式下会创建一张用户历史表来记录对应用户表中每条数据的变更行为;而用户对防篡改用户表的一次修改行为将记录至全局区块表中。
2022-09-20 09:54:52
913
原创 miniob源码 架构概览
整体架构是基于Reactor事件驱动的异步消息处理模型,使用线程池,通过配置文件编排stage链,完成SQL处理流水线。
2022-09-14 11:04:46
2952
3
原创 使用vscode编译、调试miniob源码
实际上编译和调试是两个过程,我更习惯只配置调试launch.json,而tasks.json的工作可以直接手动完成,也就是可以参考的步骤完成编译,然后直接设置可持续文件的路径进行调试。同样的道理,这种调试方法可以用到其他项目的源码调试中,比如之前调试PostgreSQL和openGauss都可以用这个方法。
2022-09-14 11:03:31
3603
9
原创 MogDB秘籍 之 乾坤大挪移
希望这篇文章能把PostgreSQL、openGauss和MogDB关于插件开发和迁移相关的问题能够尽量的讲清晰,需要结合之前的几篇(“postgresql自定义函数实现,通过contrib模块进行扩展”、“openGauss/MogDB调用C FUNCTION”、“openGauss/MogDB脚本源码浅析(2)—— gs_install_plugin/gs_install_plugin_local”)文章一起学习了解。
2022-09-14 10:56:42
850
原创 openGauss/MogDB脚本源码浅析(2)—— gs_install_plugin/gs_install_plugin_local
总的来说这两个工具还是比较好用的,代码实现也比较简单。了解原理之后可以根据几个关键路径手动安装,或者在遇到安装问题的时候可以通过本文的分析继续排查解决。
2022-09-14 10:55:16
748
原创 To enable updating the table, set REPLICA IDENTITY using ALTER TABLE.
原因是发布订阅的表没有主键,不能进行update和delete操作。
2022-09-02 15:59:09
1750
原创 MogDB逻辑解码与pg_recvlogical
逻辑复制/解码相对于物理复制更加灵活,也可以根据实际业务需要开发对应的逻辑解码插件,甚至可以当做ETL来使用。总的来说逻辑解码是对用户非常友好的接口。以上通过对MogDB逻辑复制、逻辑解码的原理和部分代码进行分析,利用pg_recvlogical和SQL演示逻辑解码的过程,希望对大家理解MogDB逻辑解码有所帮助。
2022-09-02 15:58:10
949
原创 MogDB 3.0.0 新特性——发布订阅
发布订阅基于逻辑复制实现,其中有一个或者更多订阅者订阅一个发布者节点上的一个或者更多发布。订阅者从它们所订阅的发布拉取数据。实现集群间的数据实时同步。
2022-09-02 15:56:54
854
原创 MogDB企业应用 之 Rust驱动
Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和类似C++,但是设计者想要在保证性能的同时提供更好的内存安全。Rust已经逐步开始进入企业应用和操作系统的内核开发,之前听过几次openEuler SIG组的双周会,一些内核模块已经或即将使用Rust进行开发,虽然一些现代的开发语言现在还很难撼动传统的C/C++ 地位。但是像go和Rust已经开始在一些领域里面崭露头角。go的目标是取代C,而Rust则号称是C++ 的最佳接班人。
2022-09-02 15:55:32
743
原创 PostgreSQL企业应用——Rust三剑客(pgx)
Rust是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和类似C++,但是设计者想要在保证性能的同时提供更好的内存安全。Rust已经逐步开始进入企业应用和操作系统的内核开发,之前听过几次openEuler的双周会,一些内核模块已经或即将使用Rust进行开发,虽然一些现代的开发语言现在还很难撼动传统的C/C++ 地位。但是像go和Rust已经开始在一些领域里面崭露头角。go的目标是取代C,而Rust则号称是C++ 的最佳接班人。
2022-09-02 15:54:10
1191
原创 MogDB企业应用 之 七种武器
如今江湖上最卷的门派,非国产数据库莫属。各位大侠们往往把精力放在拼内功(内核/架构)、拼身法(性能)、拼拳脚(功能/兼容性)、拼江湖地位(生态/社区)。然而好像并不怎么重视兵(武)器(接口/驱动/API),当然,可能我是搞C/C++出身,也许搞JAVA的兄弟并不会遇到这样的困惑,因为一套JDBC可以打遍天下。虽然市场占有率的头把交椅JAVA已经做了很多年,但随着各种开发语言的大行其道,现代企业的信息化系统中不太可能只使用单一的开发语言。因此闯荡江湖还是需要几把趁手的兵器!...
2022-08-16 12:01:16
484
原创 libpqxx (PostgreSQL C++ API)——安装使用
相对于ODBC和libpq接口libpqxx做了更高度的封装,但libpq使用的编译器版本和支持C++标准比较激进。从开发效率上应该比ODBC和libpq有较大提升,但性能方面有待于进一步的测试。
2022-08-16 11:59:28
6757
原创 postgresql 15源码浅析(5)—— pg_control
pg_control保存了4类信息,分别是postgres集簇的初始化信息、系统信息、checkpoint信息、recovery信息。多种服务端工具会对pg_control进行查看或者修改。本文从代码的角度梳理了对pg_control读写相关的代码,希望能对大家了解postgres控制文件有所帮助。...
2022-08-16 11:57:41
897
原创 postgresql 15源码浅析(4)—— Hello PostgreSQL 15
这期主要是想填个坑,在上期中留下了一个pg_reload_conf()处理流程,找到代码看了一下,发现这块只有寥寥几行,该函数就是向postmaster进程发了一个SIGHUP信号,后续流程就是上期中的信号“1”处理流程,但pg_reload_conf()是一个内建函数,那么内建函数的调用过程涉及sql的接收、解析、执行等等,这个包含了sql引擎的一部分流程,是比较核心的内容,现阶段我还没这个能力去把这部分讲清楚,所以先从简单的开始,先介绍如何写一个内建函数,通过一个内建函数例子来学习和梳理内建函数的实现过
2022-06-04 21:09:53
610
原创 postgresql 15源码浅析(3)—— 信号“1“的使命
这篇实际上是要说说配置文件的加载问题,有些标题党了。准确说是如何在线加载配置,用户通过向postgres进程发送信号SIGHUP触发服务端完成配置的刷新。这部分看下来代码还是有点多,挑选几段我认为比较重要的片段和大家一起学习一下。
2022-05-29 21:17:41
419
原创 postgres 15源码浅析(2)—— psql新功能\dconfig
摘要翻了一下PostgreSQL 15的release文档,发现psql也有了10余项的升级,一起来撸一下其中一项新的功能的代码——\dconfig.环境及代码环境我这里使用的是本机win11 的WSL ubuntu。代码代码用的是最新的master分支,应该和15beta差不多吧。psql代码结构psql的代码结构很简单,基本就是启动之后在MainLoop函数中等待接收处理命令行的字符输入(细节以后可以慢慢撸,今天主要看看\dconfig这个命令是如何处理),接收到命令后做简单
2022-05-25 18:54:58
337
原创 openGauss脚本源码浅析(1)—— simpleInstall
摘要在编译完成openGauss或者已download了openGauss的bin后,想要做简易安装,官方给的使用方法是使用simpleInstall。本文主要介绍simpleInstall的脚本的功能,来了解一下简易安装内部实现原理。openGauss简易安装postgres初始化数据库了解openGauss安装之前简单说一下postgres的安装过程,postgres没有提供安装脚本,但是初始化数据库集簇的命令很简单:initdb -D $PGDATA 会在指定的PGDATA目录下创建
2022-05-23 13:38:18
542
原创 postgresql 15源码浅析(1)—— postgres中的1号数据库
在创建数据库集簇后,该集簇中默认会包含三个系统数据库template1、template0和postgres,其中template0和postgres都是在初始化过程中从template1复制出来的。这个理论大家想必不是那么陌生,但是template1又是从哪里来的呢?带着这个问题,下文将从代码的角度探究postgres中1号数据库的由来。
2022-05-22 20:37:54
911
原创 使用objcopy和gdb迁移符号文件
使用objcopy和gdb迁移符号文件摘要我们日常工作中往往会遇到使用商业软件过程中出现一些异常crash掉或core dump之类的问题,此时可能需要在客户方调试问题,但往往客户方使用的release版本没有相关的debug信息,这时可能需要开发方提供对应版本的符号文件以便进行调试,下面介绍如何将对应版本的符号文件导出给客户方,以及客户方如何导入符号文件进行调试(前提是开发方需要确认代码安全级别,客户方需要具备一定的技术能力)。step 1 确认版本是双方沟通版本的过程,如果程序友好的话,获取
2022-05-19 09:23:43
413
TiDB工具——学习笔记
2022-02-26
PingCAP《TiDB中文手册》(2021.04.14)
2022-02-26
HCIA-openGauss V1.0 培训教材
2022-02-26
OGCA考试认证课程介绍
2022-02-26
Opengauss事务管理系统分析
2022-02-13
The Rust Programming Language.pdf
2020-04-29
The Cargo Book.pdf
2020-04-29
PostgreSQL11.2-CN-v1.1.epub
2020-04-29
ctp密码修改工具——带源码,适合vn.py首次登陆修改密码使用
2020-01-25
yii 中文 教程
2015-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人