使用 CDC MinIO 汇入端为 CockroachDB 保持持久数据

CockroachDB 数据库迅速崭露头角,作为一个坚韧且可扩展的分布式 SQL 数据库。它从其昆虫名字的坚持不懈中汲取灵感,即使面对硬件故障,CockroachDB 也能保证高可用性。其分布式架构横跨多个节点,类似于其昆虫原型的适应性。
凭借强一致性和 ACID 事务支持,CockroachDB 成为需要数据准确性和可靠性的应用程序的可靠选择,在动态环境中蓬勃发展,轻松管理分布式数据的复杂性。
本博客介绍了将 MinIO 用作 CockroachDB 的变更汇入端。这样做的话,您不仅能从 CockroachDB 的优势中受益,还能利用 MinIO 的耐用性、可扩展性和性能。将此作为建立企业级 CDC 策略的指南。它受到了这个很棒的仓库的启发。

什么是 CDC?

CDC 是一种智能的数据库管理技术,它追踪并捕捉像 CockroachDB 这样的关系数据库中的变化。它像一个监控器,实时检测 INSERTS、UPDATES 和 DELETES 等 CRUD 操作。
CDC 的优势在于它能够仅识别修改过的数据,这使得它在网络带宽和成本方面比传统的复制方法更有效。这种效率对于数据集成、实时分析和在分布式系统中保持一致性等任务至关重要。CDC 确实是实时连接数据织物的前提,也是保持数据库同步和在动态数据环境中保持可靠性的基本工具。
这种实时的数据更新流为训练和优化需要大量最新数据才能成功的机器学习模型提供了坚实的基础。

CockroachDB 中的变更汇入端

CockroachDB 中的变更汇入端就像高效的数据管道,将数据库中发生的 CRUD 操作导向外部目的地。在这个实例中,MinIO 充当了这样一个目的地。当配置为汇入端时,MinIO 成为连续变更流的存储库,为 CDC 操作提供了一个耐用且可扩展的存储解决方案。
这种方法的优点之一是,您可以使用 MinIO 桶中的 CDC 数据来在云之间复制您的数据策略。例如,如果您的 CockroachDB 托管在 AWS 上,但您需要将数据放在本地以便模型运行,您可以使用这种方法做到这一点。这可以是一种有效实施多云数据策略的方法。

先决条件

要遵循此指南,请确保已安装 Docker Compose。您可以分别安装 Docker Engine 和 Docker Compose,或者使用 Docker Desktop 一同安装。最简单的方法是选择 Docker Desktop。
通过运行以下命令检查 Docker Compose 是否已安装:

docker-compose --version

您将需要 CockroachDB 的自托管企业许可证。对于 CockroachDB 的本地部署,请注意,ARM for MacOS 上的 CockroachDB 是实验性的,尚未准备好用于生产。

开始

若要开始,请从此位置克隆或下载项目文件夹。

打开终端窗口,导航到项目文件夹并运行以下命令:

docker-compose up -d

此命令指示 Docker Compose 从“docker-compose.yml”文件中读取配置,创建并启动其中定义的服务,并在后台运行它们,从而允许您将终端用于其他任务,而无需绑定到容器的控制台输出。

运行该命令后,您应该能够看到容器已启动并正在运行。


您可以在以下位置 http:// 127.0.0.1 :8080 访问 Cockroach UI。验证您的节点是否处于活动状态。

您可以在以下位置 http://127.0.0.1:9001 访问 MinIO UI。使用用户名和密码组合登录 minioadmin:minioadmin

登录后,您应该能够验证 中的 mc 命令 docker-compose.yml 是否已执行,并且已自动创建名为 cockroach 的存储桶。

SQL 命令

容器启动并运行后,即可运行 SQL 命令。在下载教程文件并启动容器的同一文件夹中的终端窗口中运行以下命令。此命令在 crdb-1 容器内执行交互式 SQL shell,连接到在该容器中运行的 CockroachDB 实例,并允许您输入 SQL 查询。

docker exec -it crdb-1 ./cockroach sql --insecure

如果正确执行了 shell,则应看到以下内容。

#
# Welcome to the CockroachDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
# Server version: CockroachDB CCL v19.2.2 (x86_64-unknown-linux-gnu, built 2019/12/11 01:33:43, go1.12.12) (same version as client)
# Cluster ID: 0a668a2d-056d-4203-a996-217ca6169f80
#
# Enter \? for a brief introduction.
#

如先决条件中所述,您需要一个 Enterprise CockroachDB 帐户来设置 CDC。使用相同的终端窗口输入下一个命令。

SET CLUSTER SETTING cluster.organization = '<organization name>';

SET CLUSTER SETTING enterprise.license = '<secret>';

SET CLUSTER SETTING kv.rangefeed.enabled = true;

破碎的CDC

您现在可以构建数据库和表。下面的 SQL 创建一个名为 ml_data 的新数据库,将当前数据库上下文切换到 ml_data ,创建一个名为 model_performance 用于存储机器学习模型信息的表,并在此表中插入两行数据,表示特定模型的性能指标。在同一终端中执行这些命令。

CREATE DATABASE ml_data;

SET DATABASE = ml_data;

CREATE TABLE model_performance (
     model_id INT PRIMARY KEY,
     model_name STRING,
     accuracy FLOAT,
     training_time INT);

INSERT INTO model_performance VALUES
   (1, 'NeuralNetworkV1', 0.85, 120),
   (2, 'RandomForestV2', 0.92, 150);

接下来,运行以下命令为 CockroachDB 中的 model_performance 表创建更改源,并将其配置为将更新流式传输到 MinIO。

CREATE CHANGEFEED FOR TABLE model_performance INTO 'experimental-s3://cockroach?AWS_ACCESS_KEY_ID=minioadmin&AWS_SECRET_ACCESS_KEY=minioadmin&AWS_ENDPOINT=http://minio:9000&AWS_REGION=us-east-1' with updated, resolved='10s';

导航到 Cockroach UI at http:// 127.0.0.1 :8080 以验证是否已成功创建更改源并已建立高水位时间戳。


对数据进行更改,查看更改源的运行情况。

UPDATE model_performance SET model_name = 'ResNet50' WHERE model_id = 1;

运行以下命令以确保已执行该命令。

SELECT * FROM model_performance ;
  model_id |   model_name   | accuracy | training_time  
+----------+----------------+----------+---------------+
         1 | ResNet50       |     0.88 |           130  
         2 | RandomForestV2 |     0.92 |           150

在生产环境中,您的事务将填充 MinIO,而无需执行此步骤。

导航回 MinIO UI at’ http://127.0.0.1:9001 ,查看更改源的运行情况。

生产线的尽头

在本教程中,你已经完成了使用 MinIO 创建 changefeed 接收器的过程,以便为企业许可的 CockroachDB 启用 CDC 策略。

此 CDC 策略为最关键数据的弹性和持续同步的数据结构奠定了基础。当您绝对需要为数据探索、分析或 AI 应用程序提供完美的数据副本时,CockroachDB 和 MinIO 的组合是您的制胜策略。

改进此处概述的内容,您将继续支持更好的决策,促进 AI/ML 工作,并维护动态数据环境的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Aliba-Seata【下】-从入门到学废【8】

目录 1.数据库创建 1.seata_account库下建表 2.seata_order库下建表 3.seata_storage库下建表 4.在每个库下创建回滚日志 2.创建订单模块 2.1建工程 2.2加pom 2.3改yml 2.4file.conf 2.5registry.conf 2.6domain 2.7Dao 2.8Service 2.9controller 2.10confi…

阅读go语言工具源码系列之gopacket(谷歌出品)----第一集 DLL的go封装

gopacket项目是google出品的golang第三方库&#xff0c;项目源码地址google/gopacket: Provides packet processing capabilities for Go (github.com) gopacket核心是对经典的抓包工具libpcap(linux平台)和npcap(windows平台)的go封装&#xff0c;提供了更方便的go语言操作接…

36、WEB攻防——通用漏洞XSS跨站MXSSUXSSFlashXSSPDFXSS

文章目录 MXSSUXSSFlashXSSPDF XSS 跨站的艺术-XSS入门与介绍 UTF-7 XSS、MHTML XSS、CSS XSS、VBScript XSS已经过时&#xff0c;基本上不会出现。 MXSS 简单来说&#xff0c;就是你往前端页面插入payload&#xff0c;但是前端有些防御策略会将payload编码&#xff0c;导致…

防火墙综合实验

实验需求&#xff1a; 1、生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器。 2、办公区全天可以访问服务器区&#xff0c;其中&#xff0c;10.0.2.20可以访问FTP服务器和HTTP服务器&#xff0c;10.0.2.10仅可以ping通10.0.3.10。 3、办公区在访问服务器…

【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式

【VBA解决方案】全自动将Word中的文本公式转换为标准公式 写在最前面VBA代码全自动方法将md文档导出为word代码如何运行VBA代码注意事项 一些如何实现的回忆记录步骤解析手动将文本转换为Word公式代码逻辑步骤设想代码解析代码解释总结 其他背景介绍应用场景VBA脚本介绍如何使用…

信息安全认证首选CISP-PTE

&#x1f525;在信息安全领域&#xff0c;CISP-PTE认证正逐渐成为行业的新星。作为中国信息安全测评中心推出的专业认证&#xff0c;CISP-PTE为信息安全从业者提供了国内Z高标准的资质培训。 &#x1f3af;为什么选择CISP-PTE&#xff1f; 1️⃣业界认可&#xff1a;CISP-PTE是…

JAVA_EE_api_中英文对照版

点击即可下载&#xff1a; JAVA_EE_api_中英文对照版

STM32标准库——(3)GPIO输入

1.按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动&#xff1a;由于按键内部使用的是机械式弹簧片来进行通断的&#xff0c;所以在按下和松手的瞬间会伴随有一连串的抖动 1.1 硬件电路图 上面两个是外加上拉电阻&#xff08;常用…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求&#xff1a;不使用内置函数len&#xff08;&#xff09;&#xff0c;完成字符串长度的计算 #统计字…

MyBatis 批量插入数据优化

前言 最近在项目上遇到了批量插入的场景问题&#xff0c;由于每次需要插入超过 10w 的数据量并且字段也蛮多的导致如果使用循环单次插入的方式插入数据插入的效率不高。相信读者们在实际开发中也遇到过这样类似的场景&#xff0c;那么批量插入如何实现呢&#xff1f; 其实我也…

分寝室

L1-7 分寝室 分数 20 作者 陈越 单位 浙江大学 学校新建了宿舍楼&#xff0c;共有 n 间寝室。等待分配的学生中&#xff0c;有女生 n0​ 位、男生 n1​ 位。所有待分配…

Vue使用svg图片-svg-sprite-loader插件

需求&#xff1a;设计给的一个按钮图标是svg的&#xff0c;不是element自带的图标使用插件svg-sprite-loader svg-sprite-loader 什么是svg-sprite-loader&#xff1f; 将多个 svg 打包成 svg-sprite。svg 雪碧图。类似于 CSS 中的 Sprite 技术。图标图形整合在 一起&#xf…

爆火《幻兽帕鲁》被指用AI缝合宝可梦,开发者自曝传奇经历:是人类的奇迹

梦晨 克雷西 发自 凹非寺 量子位 | 公众号 QbitAI 4天卖出600万份&#xff0c;爆火游戏《幻兽帕鲁》最高180万人同时在线&#xff0c;直接登顶。 这个成绩&#xff0c;甚至在整个Steam游戏平台历史上也能排到第二&#xff0c;连平台自家王牌CS2都被挤下去了。 同时&#xff0…

NGINX如何实现rtmp推流服务

最近直播大火&#xff0c;直播推流软件遍地开花&#xff0c;那么用NGINX如何进行推流呢&#xff1f;下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流&#xff0c;我们主要从一下几点介绍&#xff1a; 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

[MQ]常用的mq产品图形管理web界面或客户端

一、MQ介绍 1.1 定义 MQ全称为Message Queue&#xff0c;消息队列是应用程序和应用程序之间的通信方法。 如果非要用一个定义来概括只能是抽象出来一些概念&#xff0c;概括为跨服务之间传递信息的软件。 1.2 MQ产品 较为成熟的MQ产品&#xff1a;IBMMQ&#xff08;IBM We…

公司内网虚拟机中穿透服务器Coturn的搭建

1. 写在前面 coturn服务器的搭建文章已经非常多&#xff0c;但是对于对linux不熟悉的人来说排查错误的文章不多&#xff0c;此篇文章把我这次搭建过程以及如何排查问题做一个梳理我这里是在oracle vm虚拟机中搭建安装的ubuntu&#xff0c;通过H3C路由器映射到外网以下介绍我只…

SpringBoot的默认组件扫描

本篇博客主要探究&#xff1a;为什么SpringBoot项目中我们没有配置组件扫描的包&#xff0c;为什么它会默认扫描启动类所在的包&#xff1f; 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口&#xff1a; 我们可以观察到&#xff0c;HelloController这个类处在…

Linux中LVM实验

LVM实验&#xff1a; 1、分区 -L是大小的意思-n名称的意思 从vg0&#xff08;卷组&#xff09;分出来 2、格式化LV逻辑卷 LVM扩容 如果icdir空间不够了&#xff0c; 扩展空间lvextend -L 5G /dev/vg0/lv1 /dev/vg0/lv1(pp,vg,lv) 刷新文件系统xfs_growfs /lvdir VG扩容 …

阿里云快速搭建《幻兽帕鲁》服务器自建指南

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

【华为云-云驻共创】数据高速公路—数仓集群通信技术详解

【摘要】本文讲解GaussDB&#xff08;DWS&#xff09;集群通信技术如何在大规模集群中承载高并发业务&#xff0c;如何实现高性能分布式通信系统。主要讲述客户端、CN、DN三类进程间的通信原理和流程&#xff0c;分为CN通信框架和DN间通信框架。 数据仓库服务GaussDB&#xff0…