惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
G
Google Developers Blog
B
Blog
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
The Cloudflare Blog
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
量子位
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
H
Help Net Security
Help Net Security
Help Net Security
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
N
News | PayPal Newsroom
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
腾讯CDC
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
GbyAI
GbyAI
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker

Wener Live & Life Blog

工具 - 工 与 具 《我把我的矜持都给了她》:第二章 - 故事的重新开始 解密 ClassFinal 加密的 Java Jar 包 我记录思考的方式简单总结 第一次尝试机器学习 为什么选择 Alpine Linux? 基于 SNI 实现无感全局代理 恢复群晖数据盘 迁移阿里云 CDN 到 Cloudflare CRM 实现经历 大师之路 2022上海封城日记 企业建站的基本前提考量 Love the World 组建你自己的 NAS 服务器 2021 总结 从新学习 系统盘恢复 PostgreSQL ORDER BY+LIMIT 时的索引选择
数据同步模式
2022-01-26 · via Wener Live & Life Blog

A 同步到 B

DBA -> A -> B -> DBB

Extract -> Load

Extract -Transform-> Load

场景

A,B,DBA,DBB 互通性

from\toDBAABDBB
DBA🟡
A🟢🟡
B🟠🟢
DBB🟠
  • 🟢 - 有可能 - A <-> B
  • 🟡 - 也许可能 - 提供公有云数据库作为同步目标
  • 🟠 - 不太可能
    • 如果是内部服务是可能的

模式

  • Push - 推 - A -> B
  • Pull - 拉 - A <- B
  • Reactive - A <-> B
  • 第三方 - A -> X -> B

方式

  • 全量
  • 增量
    • 基于增量游标
    • 基于 CDC 事件
  • Schema+Data

实现方案

  • DBA -> A -> B -> DBB
    • B 暴露 API,A 请求 B - Push/Hook
    • 例如: WebHook
  • DBA -> A <- B -> DBB
    • A 暴露 API,B 请求 A - Pull/Query
    • 例如: WebHook
  • DBA -> A -> DBB
    • 例如: 配置同步目标给 A, A 直接写入
  • DBA -> B -> DBB
    • 例如: RLS 暴露给 B 访问
  • DBA <-> DBB
    • 例如: DB Link, Replication
  • DBA -> A -> Queue -> B -> DBB
    • A,B 通过 Queue 交互 - A,B 都没有暴露接口
    • 被动
    • Queue 定位
      • 数据存储 - Kafka
      • 信息传输 - Redis, Nats - 例如 RPC over Redis Stream
  • DBA -> X -> DBB
  • DBA -> A -> X -> B -> DBB
    • 借助第三方服务 - 例如: AirByte, PgLoader
    • X 服务作为 中间服务 与 A,B 交互
      • 替代 Queue 角色
      • 主动
    • X 具有适配能力

Transform 考虑

  • 数据 Schema 适配
  • 数据类型适配
  • 过滤、转换、计算
  • 通常包含逻辑
    • 逻辑 ~= Script
      • Lua, Python, JS
    • gRPC - 外部调用
  • Transform 的复杂度决定了是 ETL 还是流处理
    • ETL - 简单适配、调整、元数据
    • 流处理 - 包含状态、依赖前后消息/Window、包含聚合
  • 例如: Flink, SparkSQL, Storm、KafkaSQL

数据编码 考虑

  • 文本编码 - CSV,JSON,JSONL - 基础,丢失类型信息
  • 二进制编码 - Avro, Parqute, Protobuf
  • CBOR - Concise Binary Object Representation
    • 对比 JSON 能更好的保留类型信息
  • Schema+Data - 数据更紧凑