使用 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 工作,并维护动态数据环境的可靠性。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

【运行Python爬虫脚本示例】

主要内容&#xff1a;Python中的两个库的使用。 1、requests库&#xff1a;访问和获取网页内容&#xff0c; 2、beautifulsoup4库&#xff1a;解析网页内容。 一 python 爬取数据 1 使用requests库发送GET请求&#xff0c;并使用text属性获取网页内容。 然后可以对获取的网页…

Jmeter连接数据库报错Cannot load JDBC driver class‘com.mysql.jdbc.Driver’解决

问题产生: 我在用jmeter连接数据库查询我的接口是否添加数据成功时,结果树响应Cannot load JDBC driver class com.mysql.jdbc.Driver 产生原因: 1、连接数据库的用户密码等信息使用的变量我放在了下面,导致没有取到用户名密码IP等信息,导致连接失败 2、jmeter没有JDB…

Ps:将文件载入堆栈

Ps菜单&#xff1a;文件/脚本/将文件载入堆栈 Scripts/Load Files into Stack 将文件载入堆栈 Load Files into Stack脚本命令可用于将两个及以上的文件载入到同一个 Photoshop 新文档中。 载入的每个文件都将成为独立的图层&#xff0c;并使用其原始文件名作为图层名。 Photos…

《Vue3 基础知识》 Vue2+ElementUI 自动转 Vue3+ElementPlus(GoGoCode)

前言 GoGoCode 一个基于 AST 的 JavaScript/Typescript/HTML 代码转换工具。 AST abstract syntax code 抽象语法树。 实现 第一步&#xff1a;安装 GoGoCode 插件 全局安装最新的 gogocode-cli 即可 npm i gogocode-cli -g查看版本 gogocode-cli -V相关插件说明 插件描述…

01 Redis的特性+下载安装启动+客户端连接

1.1 NoSQL NoSQL&#xff08;“non-relational”&#xff0c; “Not Only SQL”&#xff09;&#xff0c;泛指非关系型的数据库。 键值存储数据库 &#xff1a; 就像 Map 一样的 key-value 对。如Redis文档数据库 &#xff1a; NoSQL 与关系型数据的结合&#xff0c;最像关系…

软件包管理:在CentOS 7中部署Tengine

目录 下载&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 部署&#xff1a; 实验操作 下载&#xff1a; 方法一&#xff1a; 1、打开浏览器搜索tengine并点击官网 2、选择需要安装的版本并复制链接链接 标题栏处可以更改为中文界面 下滑选择版本单击下载 在远程连…

【yaml 文件使用】pytest+request 框架中 yaml 配置文件使用

又来进步一点点~~ 背景&#xff1a;最近在学习pytestrequest框架写接口测试自动化&#xff0c;使用yaml文件配置更方便管理用例中的数据&#xff0c;这样更方便 yaml 介绍&#xff1a; 什么是 yaml 文件&#xff1a;YAML 是 “YAML Ain’t a Markup Language”&#xff08;Y…

idea用version标签配置版本号报错版本号missing

问题描述&#xff1a; 用<mybatis-plus.version>3.3.2</mybatis-plus.version>配置pom的版本号&#xff0c;报错 dependencies.dependency.version for com.baomidou:mybatis-plus-boot-starter:jar is missing. line 33, column 21详细报错如下&#xff1a; 详…

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布&#xff0c;广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据&#xff0c;也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。…

uniapp导入uView组件库

目录 准备工作 1. 新建一个项目 2. 导入uview组件库 3. 关于SCSS 配置步骤 1. 引入uView主JS库 2. 在引入uView的全局SCSS 3. 引入uView基础样式 4. 配置easycom组件模式 添加效果实验运行即可成功 准备工作 1. 新建一个项目 2. 导入uview组件库 在进行配置之前&#x…

Doris 与 Clickhouse 对比(一)

1. 常用引擎 ☕️ Doris 表数据模型 duplicate key &#x1f3ac; 场景&#xff1a;适用于数据无需提前聚合的分析业务。 ⚠️ 注意点&#xff1a;只指定排序列&#xff0c;相同的行并不会合并。 unique key &#x1f3ac; 场景&#xff1a;适用于有更新需求的业务。 ⚠…