diff --git a/Pasted image 20250312111136.png b/Pasted image 20250312111136.png new file mode 100644 index 0000000..bb74675 Binary files /dev/null and b/Pasted image 20250312111136.png differ diff --git a/Pasted image 20250312113648.png b/Pasted image 20250312113648.png new file mode 100644 index 0000000..e35be63 Binary files /dev/null and b/Pasted image 20250312113648.png differ diff --git a/work常用/中间件/seatunnel/Postgresql-CDC.md b/work常用/中间件/seatunnel/Postgresql-CDC.md index 1bda0f7..180bd42 100644 --- a/work常用/中间件/seatunnel/Postgresql-CDC.md +++ b/work常用/中间件/seatunnel/Postgresql-CDC.md @@ -109,16 +109,43 @@ sink { 1. 必须指定slot.name名称,并且重启任务时需要注意slot名称是否存在 ![[Pasted image 20250310183058.png]] 2. 重启任务时如果数据库提示 ‘replication slot xxxx is active’ -查询表查看 active 字段 +查询表查看 active 字段,需要等待一段时间,pg会将active改为false状态 ```sql select * from pg_replication_slots ``` ![[Pasted image 20250310183255.png]] - -执行一下语句关闭slot(关闭不是删除) +还可以选择删除复制槽,但是需要先将目标表数据清除(相当于重新消费) +执行一下语句删除slot ```sql - +SELECT * FROM pg_drop_replication_slot('slot_name'); ``` +### 五、原理 + +参考文章:[剖析postgresql逻辑复制原理 - 知乎](https://zhuanlan.zhihu.com/p/163204827) +[POSTGRESQL 逻辑复制槽,what when how ,check and monitor 这一篇-腾讯云开发者社区-腾讯云](https://cloud.tencent.com/developer/article/1972378) +[PostgreSQL复制槽与WAL文件保护:深入解析与实战测试_flzhang_132的技术博客_51CTO博客](https://blog.51cto.com/u_14316134/12869031) + + +PG 有2种数据复制方式:流复制(物理复制)、逻辑复制。流复制和逻辑复制是对wal日志的不同使用。PG-CDC 是基于逻辑复制实现。 +#### 一、流复制 +流复制承载了pg主备之间数据同步的功能,它的实现方式是将[wal日志](https://zhida.zhihu.com/search?content_id=124401561&content_type=Article&match_order=1&q=wal%E6%97%A5%E5%BF%97&zhida_source=entity)中记录的内容按照确切的块地址逐字节的拷贝到备库,因此主备之间数据分布是一致的,这意味着在主备机器上,同一条记录的ctid是相同的。 + +![[Pasted image 20250312111136.png]] + +#### 二、逻辑复制 +逻辑复制同步数据的原理是,在wal日志产生的数据库上,由逻辑解析模块对wal日志进行初步的解析,它的解析结果为[ReorderBufferChange](https://zhida.zhihu.com/search?content_id=124401561&content_type=Article&match_order=1&q=ReorderBufferChange&zhida_source=entity)(可以简单理解为HeapTupleData),再由[pgoutput plugin](https://zhida.zhihu.com/search?content_id=124401561&content_type=Article&match_order=1&q=pgoutput+plugin&zhida_source=entity)对中间结果进行过滤(过滤出insert、delete、update操作)和消息化拼接后,然后将其发送到订阅端,订阅端根据接收到的HeapTupleData重新对其执行insert、delete、update的操作。(**这里要注意,流复制是将数据从walrecord拷贝到数据页,逻辑复制是将数据重新执行一次insert、update或delete**)。从原理可以看出逻辑复制的效率比流复制低。 +![[Pasted image 20250312113648.png]] +##### 2.1 逻辑复制槽 slot +复制槽的作用: ++ 保护WAL文件:确保主库在所有的备库收到WAL之前不会移除。 ++ 持久化状态信息:复制槽的状态信息是持久化的,即使从库断开或主库重启这些信息也不会丢失 ++ 协调主备数据一致性:复制槽通过restart_lsn 来标记备库还需要的WAL位置 +在逻辑复制中,复制槽代表着数据变更流。跟物理复制槽一样,逻辑复制槽也可以保证复制异常中断后,相关的wal日志不被删除,以保证复制重连后仍然可以继续解析wal日志(官方解释:复制槽提供了一种办法确保主库不会“删除”还未发送到备库的WAL日志,也不会删除备库需要的多版本,即使备库掉线)。 +一个数据库可以有多个复制槽,一个复制槽只有一个outputplugin,一个复制槽代表一条复制链路。复制槽本质上是用来管理复制链路的。不同于流复制可以没有复制槽,逻辑复制是必须有复制槽的。 -### 五、原理 \ No newline at end of file +##### 2.2 outputplugin +test_decoding:这是一个outputplugin样例,相当于output plugin原始形态。官方文档说这是一个template,但是它仍然可以解析。这个output plugin是pg自带的,但需要在contrib中编译。 +pgoutput:发布订阅模式的默认outputplugin。在发布订阅中,walsender进程使用该outputplugin逻辑解码wal日志。 +decoder_raw:解析成sql文本格式。这个不是pg自带的。 +wal2json:这个outputplugin会将wal日志信息转化为json格式 diff --git a/日常学习/大模型/提示词生成.md b/日常学习/大模型/提示词生成.md new file mode 100644 index 0000000..ad008e3 --- /dev/null +++ b/日常学习/大模型/提示词生成.md @@ -0,0 +1,53 @@ +[火山方舟管理控制台](https://console.volcengine.com/ark/region:ark+cn-beijing/autope/startup) +参考DEEPSEEK 官方提示词库[Prompt Library | DeepSeek API Docs](https://api-docs.deepseek.com/zh-cn/prompt-library) +### 一、常用提示词 + +用户输入:查看成都天府k00航班2004年1月1日入境预报航班人员明细 +目的:提取出机场名称、航班号、日期和出入境类型 +deepseek提示词: +```text + +你的任务是从中文语句中准确提取以下四个要素:机场名称、航班号、日期和出入境类型。请严格按照以下规则执行: + +<输入语句> +{{SENTENCE}} + + +1. 提取要素说明: +- 机场名称:完整的机场名称(可能包含中英文),如"成都天府"或"浦东国际机场" +- 航班号:由字母和数字组成的航班标识符,如"KQ088"或"CA1234" +- 日期:完整日期,必须转换为YYYY年MM月DD日格式(如原文是"2004年1月1日"则保持原样) +- 出入境类型:只能是"入境"或"出境"(根据"入/出境"或"进/出港"等关键词判断) + +2. 提取规则: +- 如果语句中缺少某个要素,该要素输出"无" +- 日期必须包含完整年月日,不接受模糊日期 +- 航班号必须包含至少1个字母和1个数字的组合 +- 机场名称需保留完整称谓(如"北京首都国际机场"不可简化为"北京机场") + +3. 输出格式: +在<提取结果>标签内按以下顺序排列: +<机场名称>[内容] +<航班号>[内容] +<日期>[内容] +<出入境类型>[内容] + +4. 验证流程: +- 检查日期格式是否符合YYYY年MM月DD日 +- 验证航班号是否至少包含1个字母和1个数字 +- 确认出入境类型只能是"入境"或"出境" + +示例: +输入:查看成都天府k00航班2004年1月1日入境预报航班人员明细 +正确输出: +<提取结果> +<机场名称>成都天府 +<航班号>KQ00 +<日期>2004年01月01日 +<出入境类型>入境 + + +现在请处理当前输入语句,确保完全遵守上述规则。 + + +```