Debezium发布历史136

原文地址: https://debezium.io/blog/2023/01/06/change-data-capture-with-questdb-and-debezium/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Change Data Capture with QuestDB and Debezium
January 6, 2023 by Yitaek Hwang
questdb kafka debezium time series

本教程最初由 问题b ,在哪里, 黄伊泰 向我们展示了如何将数据通过数据采集和卡夫卡连接来将数据流到测试数据库中。

现代数据体系结构在很大程度上已经从 电子语言 (萃取-转化-负载) 埃尔特 (提取-负载-转换),原始数据在应用转换之前先被加载到数据池(例如。,集合,连接)供进一步分析。传统的ETL管道很难维护,而且随着业务需求的变化相对灵活。由于新的云技术带来了更便宜的存储和更好的可伸缩性,数据管道可以从预先构建的提取和批处理上传转移到更流化的体系结构。

更改数据采集 (ccc)很好地适应了这一范式的转变,即从一个来源到数据的变化可以流到其他目的地。顾名思义,疾病预防控制中心跟踪数据的变化(通常是数据库),并提供插件来处理这些变化。对于事件驱动的架构,疾病预防控制中心作为服务边界之间的一致数据传递机制特别有用(例如。, 收发箱模式 )。在一个复杂的微服务环境中,疾病预防控制中心帮助简化数据传递逻辑,将负担卸下给疾病预防控制中心系统。

为了说明这一点,让我们使用一个参考体系结构来将库存更新从后格SQL流到查询db。一个简单的java春季应用程序通过标号来调查股票价格,并将当前价格更新到后GREGSQL数据库。然后更新被德贝齐姆检测到并输入到卡夫卡主题。最后,卡夫卡连接QISSTB连接器监听该主题,并将流更改为QSTSTB进行分析。

设计概述

这样结构化数据管道使应用程序变得简单。Java春季应用程序只需要获取最新的股票数据并提交到后GREGSQL。由于后格SQL是一个优秀的olp(事务性)数据库,因此应用程序可以依赖于酸依从性,以确保下游服务只看到提交的数据。应用程序开发人员不需要担心复杂的重试逻辑或不同步数据集。从数据库的角度来看,可以对后GERGSQL进行优化,以做它最擅长的事–事务查询。卡夫卡可以被用来可靠地将数据提供给其他端点,并且可以使用QSTSTDB来存储历史数据来运行分析查询和可视化。

所以不用再多说了,让我们来举个例子:

先决条件
垃圾

码头发动机:20.10+

成立
要在本地运行该示例,首先克隆 卡夫卡连接器回购 :

$ git clone https://github.com/questdb/kafka-questdb-connector.git
然后,导航到股票样本来构建和运行码头工人组成文件:

$ cd kafka-questdb-connector/kafka-questdb-connector-samples/stocks/
$ docker compose build
$ docker compose up
或更早的版本,compose 子命令可能不可用。你可以尝试执行docker-compose 代替docker compose .如果docker-compose 在你的销售中是不可用的,你可以 安装它 从手中。

这将为测试数据库中的Java弹簧应用程序/卡夫卡连接器构建码头文件,并向下拉下后格拉基(预先配置了德贝齐姆)、卡夫卡/动物园管理员、Qustdb和格拉法纳容器。卡夫卡和卡夫卡连接需要一点初始化。通过检查连接容器等待日志停止.

Start the Debezium connector
在这一点上,Java应用程序正在不断更新"后格SQL"中的股票表,但连接尚未设置。创建德贝兹接头(即。通过执行下列措施:

curl -X POST -H “Content-Type: application/json” -d '{“name”:“debezium_source”,“config”:{“tasks.max”:1,“database.hostname”:“postgres”,“database.port”:5432,“database.user”:“postgres”,“database.password”:“postgres”,“connector.class”:“io.debezium.connector.postgresql.PostgresConnector”,“database.dbname”:“postgres”,“database.server.name”:“dbserver1”}} ’ localhost:8083/connectors

Start the QuestDB Kafka Connect sink
通过创建kafka -> QuestDB

curl -X POST -H “Content-Type: application/json” -d ‘{“name”:“questdb-connect”,“config”:{“topics”:“dbserver1.public.stock”,“table”:“stock”, “connector.class”:“io.questdb.kafka.QuestDBSinkConnector”,“tasks.max”:“1”,“key.converter”:“org.apache.kafka.connect.storage.StringConverter”,“value.converter”:“org.apache.kafka.connect.json.JsonConverter”,“host”:“questdb”, “transforms”:“unwrap”, “transforms.unwrap.type”:“io.debezium.transforms.ExtractNewRecordState”, “include.key”: “false”, “symbols”: “symbol”, “timestamp.field.name”: “last_update”}}’ localhost:8083/connectors
最后结果
现在,写到后GERGSQL表的所有更新也将反映在查询数据库中。去验证,导航到 http://localhost:19000 从库存表中选择:

SELECT * FROM stock;
您还可以运行聚合进行更复杂的分析:

SELECT
timestamp,
symbol,
avg(price),
min(price),
max(price)
FROM stock
WHERE symbol = ‘IBM’
SAMPLE BY 1m ALIGN TO CALENDAR;
最后,您可以与格拉法纳仪表板交互,以便在 http://localhost:3000/d/stocks/stocks?orgId=1&refresh=5s&viewPanel=2 .

可视化是一个蜡烛图表,由Debezns捕捉到的变化组成;每一根蜡烛在给定的时间间隔中显示开、关、高、低价格。时间间隔可以通过选择左上角"时间间隔"选项来改变:

在这里插入图片描述
Grafana candle chart

深潜
现在我们已经启动并运行了示例应用程序,让我们深入研究一下 股票 例子。

我们将查看以下文件:

├── kafka-questdb-connector/kafka-questdb-connector-samples/stocks/
│ ├── Dockerfile-App
| | – The Dockerfile to package our Java App
| ├── Dockerfile-Connect
| | – The Dockerfile to combine the Debezium container
| | – image the with QuestDB Kafka connector
│ ├── src/main/resources/schema.sql
| | – The SQL which creates the stock table in PostgreSQL
| | – and populates it with initial data
│ ├── src/main/java/com/questdb/kafka/connector/samples/StocksApplication.java
| | – The Java Spring App which updates the stock table in PostgreSQL
| | – in regular intervals

生产者(爪哇应用程序)
制作人是一个简单的Java弹簧启动应用程序。它有两个组成部分:

… 架构。 文件。此文件用于在后GREGSQL中创建库存表并填充其初始数据。它被弹簧启动应用程序接收到并在启动时执行。

[source,sql]

如果没有存货,则创建表格(
序列主键,
symbol varchar(10) unique,
价格浮动8,
更新时间戳
);
插入库存(符号、价格、上一次更新)值(‘aapl’,500.0,现在())冲突时无所作为;
插入库存(符号,价格,最新)值(“IBM”,50.0,现在()在冲突中无所作为;
插入库存(符号、价格、上一次更新)值,在冲突时不做任何事;
插入库存(符号、价格、上一次更新)值(“谷歌”,100.0,现在())冲突时无所作为;
插入库存(符号、价格、上一次更新)值(‘fb’,200.0,现在())冲突时无所作为;
插入库存(符号、价格、上一次更新)值(‘amzn’,100.0,现在())冲突时无所作为;
插入库存(符号、价格、上一次更新)值(‘tsla’,500.0,现在())冲突时无所作为;
插入库存(符号、价格、上一次更新)值(“nflx”,500.0,现在())冲突时无所作为;
插入库存(符号、价格、上一次更新)值(‘ttr’,50.0,现在())冲突时无所作为;
插入库存(符号、价格、最新)值(“突然”,10.0,现在())冲突时无所作为;

"关于冲突无所作为"条款被用来避免重复条目的出现。
重新启动应用时的表。
Java代码 以随机值更新价格和时间戳。更新并不是完全随机的,应用程序使用一个非常简单的算法生成更新,非常类似于股票价格的波动。在现实的场景中,应用程序将从某些外部来源获得价格。

生产者被包装成最小的文件, 码头文件 ,并连接到后格来格:

从马文出发:3.8-JDK-11小建筑
收到。/1.xml/选择系统/库存/
收到。/特别资源中心。/选择方案/库存/战略资源中心
工作量/选择方案/库存
运行MVN清洁安装-Dskip测试
来自阿祖尔/祖卢-开放jdk:最新11
复制–来自=建造者/被占领巴勒斯坦领土/库存/目标/卡夫卡–样本-库存–*。罐/罐
CMD [“java”, “-jar”, “/stocks.jar”]
卡夫卡连接器、德贝兹和卡夫卡连接器
在我们深入研究卡夫卡连接、德贝兹和卡夫卡连接器的配置之前,让我们看看它们之间的关系。

卡夫卡连接是构建连接器以在卡夫卡和其他系统之间移动数据的框架。它支持2类连接器:

源连接器-从源系统读取数据并将其写入卡夫卡

插入连接器-读取卡夫卡的数据并将其写入接收系统

Debezum是卡夫卡连接的源连接器,可以监视和捕获数据库中的行级更改。它是什么意思?每当在数据库中插入、更新或删除一行时,Debezum将捕获更改并将其作为事件写入卡夫卡。

在技术层面上,德贝兹是在卡夫卡连接框架内运行的卡夫卡连接器。这反映在 德贝兹容器图像 ,该包卡夫卡连接与德贝兹连接器预先安装。

卡夫卡连接器也是卡夫卡连接器。它是一个接收器连接器,可以读取卡夫卡的数据并将其写入QISSTDB。我们添加了QESTDB卡夫卡连接器到德贝兹容器图像,我们得到了一个卡夫卡连接图像,两者都有德贝兹和QSTDB卡夫卡连接器安装!

这是我们用来制作图像的码头文件:

( 码头文件连接 )

来自乌本图:最新的建筑师
工作场所/选择项目
运行程序-获得更新和应用-获得安装-Y旋涡解压缩JQ
RUN curl -s https://api.github.com/repos/questdb/kafka-questdb-connector/releases/latest | jq -r ‘.assets[]|select(.content_type == “application/zip”)|.browser_download_url’|wget -qi -
运行解压缩卡夫卡-奎斯特-连接*-绑定。

从德贝兹/连接点:1.9.6.最后
COPY --from=builder /opt/kafka-questdb-connector/*.jar /kafka/connect/questdb-connector/
码头文件下载了最新发布的QESTDB卡夫卡连接器,解压缩将其复制到Debezum容器图像。生成的图像同时安装了德贝兹和奎斯特卜卡夫卡连接器:

在这里插入图片描述

加装卡夫卡连接器层

整个卡夫卡连接器与源连接器和接收器连接器完成:
在这里插入图片描述

源和汇连接器如何与卡夫卡集群和数据库一起工作

德贝兹接头
我们已经知道,Debezum是一个卡夫卡连接连接器,可以监视和捕获数据库中的行级更改。我们也有一个码头图像,有德贝兹和奎斯特卡夫卡连接器安装。然而,此时两个连接器都不运行。我们需要配置并启动它们。这是通过向卡夫卡连接RESTAPI发送一个邮件请求的CAR命令来完成的。

curl -X POST -H “Content-Type: application/json” -d '{“name”:“debezium_source”,“config”:{“tasks.max”:1,“database.hostname”:“postgres”,“database.port”:5432,“database.user”:“postgres”,“database.password”:“postgres”,“connector.class”:“io.debezium.connector.postgresql.PostgresConnector”,“database.dbname”:“postgres”,“database.server.name”:“dbserver1”}} ’ localhost:8083/connectors
请求体包含德贝兹连接器的配置,让我们分解它:

{
“name”: “debezium_source”,
“config”: {
“tasks.max”: 1,
“database.hostname”: “postgres”,
“database.port”: 5432,
“database.user”: “postgres”,
“database.password”: “postgres”,
“connector.class”: “io.debezium.connector.postgresql.PostgresConnector”,
“database.dbname”: “postgres”,
“database.server.name”: “dbserver1”
}
}
它听后GREGSQL数据库中的更改,并使用上述配置向卡夫卡发布。主题名称默认为..

. 在我们的例子中,它是dbserver1.public.stock .为什么?因为数据库服务器名是dbserver1 ,架构是public 我们只有一张桌子stock .

所以在我们发出请求后,德贝佐姆将开始倾听stock 把它们放在桌上发表到dbserver1.public.stock 专题。

卡夫卡连接器
在这一点上,我们有一个后格勒克表stock 充满了随机股价和卡夫卡主题dbserver1.public.stock 包含了更改。下一个步骤是将Qustdb卡夫卡连接器配置为从dbserver1.public.stock 主题并将数据写到查询数据库。

让我们更深入地研究一下 启动卡夫卡连接槽 :

{
“name”: “questdb-connect”,
“config”: {
“topics”: “dbserver1.public.stock”,
“table”: “stock”,
“connector.class”: “io.questdb.kafka.QuestDBSinkConnector”,
“tasks.max”: “1”,
“key.converter”: “org.apache.kafka.connect.storage.StringConverter”,
“value.converter”: “org.apache.kafka.connect.json.JsonConverter”,
“host”: “questdb”,
“transforms”: “unwrap”,
“transforms.unwrap.type”: “io.debezium.transforms.ExtractNewRecordState”,
“include.key”: “false”,
“symbols”: “symbol”,
“timestamp.field.name”: “last_update”
}
}
这里需要注意的是:

table 和topics :"卡夫卡"连接器将创建带有名称的"卡夫卡"表stock 把数据写在dbserver1.public.stock 它的主题。

host :卡夫卡连接器将连接到运行在questdb 招待。这是查询容器的名称。

connector.class:卡夫卡连接器类名称。这告诉卡夫卡连接使用卡夫卡连接器。

value.converter :德贝兹连接器以JSON格式生成数据。这就是为什么我们需要配置查询数据库连接器来使用JSON转换器来读取数据:org.apache.kafka.connect.json.JsonConverter .

symbols *股票符号被翻译成 查询符号类型 ,用于低基数的字串值(例如。…

timestamp.field.name当前位置:由于QESTDB对时间戳和基于时间戳的分区有很大的支持,我们可以指定指定的时间戳列。

transforms :打开场用途io.debezium.transforms.ExtractNewRecordState 类型只提取新数据,而不提取Debezns发布的元数据。换句话说,这是一个过滤器payload.after 关于卡夫卡主题的德贝兹数据的一部分。看到 文件 更多的细节。

…ExtractNewRecordState 转换可能是配置中最不直观的部分。让我们更仔细地看看它:简而言之,对于后面的SQL表中的每一个变化,Debezum都会向卡夫卡主题发送一个JSON消息,比如:

{
“schema”: “This JSON key contains Debezium message schema. It’s not very relevant for this sample. Omitted for brevity.”,
“payload”: {
“before”: null,
“after”: {
“id”: 8,
“symbol”: “NFLX”,
“price”: 1544.3357414199545,
“last_update”: 1666172978269856
}
},
“source”: {
“version”: “1.9.6.Final”,
“connector”: “postgresql”,
“name”: “dbserver1”,
“ts_ms”: 1666172978272,
“snapshot”: “false”,
“db”: “postgres”,
“sequence”: “[“87397208”,“87397208”]”,
“schema”: “public”,
“table”: “stock”,
“txId”: 402087,
“lsn”: 87397208,
“xmin”: null
},
“op”: “u”,
“ts_ms”: 1666172978637,
“transaction”: null
}
如果你被这条信息的尺寸吓到了,不要害怕。大多数字段是元数据,它们与此示例无关。看 德贝兹文件 想知道更多细节。重要的是,我们不能将整个JSON消息推到查询数据库,而且我们也不希望查询数据库中的所有元数据。我们需要取出payload.after 邮件的一部分,然后将其推到查询。这正是ExtractNewRecordState 转换后会:它将大消息转换为一个较小的信息,只包含payload.after 一部分信息。因此,这条信息看起来就像这样:

{
“id”: 8,
“symbol”: “NFLX”,
“price”: 1544.3357414199545,
“last_update”: 1666172978269856
}
这是我们可以推敲的信息。卡夫卡连接器将读取此消息并将其写入到卡夫达表。如果QESTB卡夫卡表不存在,则该连接器也将创建该表。查询表将具有与JSON消息相同的模式–其中每个JSON字段将是查询表中的一列。

问题b和格拉法纳
一旦数据写入了查询表,我们就可以更容易地处理时间序列数据。由于QESTDB是兼容后GREQLY协议的,所以我们可以使用格拉法纳上的后GRESQL数据源来可视化数据。预先配置的仪表板使用以下查询:

SELECT
$__time(timestamp),
min(price) as low,
max(price) as high,
first(price) as open,
last(price) as close
FROM
stock
WHERE
KaTeX parse error: Expected group after '_' at position 1: _̲_timeFilter(tim…Symbol’
SAMPLE BY $Interval ALIGN TO CALENDAR;
我们已经创建了一个系统,它可以连续地追踪和存储多个股票的最新价格。然后这些价格作为事件通过德贝齐姆输入卡夫卡,这抓住了每一个价格变化。卡夫卡连接器读取卡夫卡的这些事件,并将每一个变化作为卡夫卡的一个新行存储,使我们能够保留一个完整的股票价格历史。这段历史可以通过使用工具(例如格拉法纳)进行分析和可视化,如蜡烛图所示。

下一步
这个示例项目是将数据从关系数据库流到优化的时间序列数据库的基本参考体系结构。对于使用后GERGSQL的现有项目,可以对Debezum进行配置,以启动将数据流到查询db,并利用时间序列查询和分区的优势。对于同时存储原始历史数据的数据库,采用Debezum可能需要一些架构更改。然而,这是有益的,因为这是一个在事务数据库和分析性时序数据库之间改进性能和建立服务边界的机会。

这个引用架构也可以扩展到配置卡夫卡连接到流到其他数据仓库进行长期存储。在检查数据后,测试数据也可以配置为为更长期的存储,甚至可以对数据进行向下采样。 分离分区以节省空间 .

把这个给我 抽样应用 尝试加入 休闲社区 如果你有任何问题的话。

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

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

相关文章

【NI-DAQmx入门】处理数据采集和测试系统中噪声的几种主要方法

在实际的测试系统中测量模拟信号并不总是像将信号源连接到测量设备那么简单。数据完整性取决于被控制和监视的电气设备发送和接收的干净的电信号。 电噪声可能会掩盖电信号并使其无法识别,从而损害原本具备功能的 DAQ 系统。数据采集​​是关键任务应用测试系统的一…

深入浅出了解谷歌「Gemini大模型」发展历程

Google在2023年12月官宣了Gemini模型,随后2024年2月9日才宣布Gemini 1.0 Ultra正式对公众服务,并且开始收费。现在2024年2月14日就宣布了Gemini 1.5 Pro,史诗级多模态最强MoE首破100万极限上下文纪录!!!Gem…

语音唤醒——

文章目录 配置主代码 参考文档:https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY:需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

如何修复Microsoft Edge不能以全屏模式打开​?这里提供几个故障排除方法

随着越来越多的Windows 10用户将Edge设置为默认浏览器,各种错误和小故障层出不穷。例如,许多用户抱怨他们无法在全屏模式下启动Edge。如果你正在寻找解决方案来解决这个恼人的问题,请按照下面的故障排除步骤进行操作。 修复Microsoft Edge不…

内容检索(2024.02.17)

随着创作数量的增加,博客文章所涉及的内容越来越庞杂,为了更为方便地阅读,后续更新发布的文章将陆续在此汇总并附上原文链接,感兴趣的小伙伴们可持续关注文章发布动态! 本期更新内容: 1. 信号完整性理论与…

JavaWeb:关于登录认证的简单拓展

前提介绍 本文基于文章-------JavaWeb:SpringBootWeb登录认证 --黑马笔记 -------再做简单拓展 如果没有关于登录认证知识的基础,可以先看上面所说的的文章,文章在专栏javaweb中,下面我为了大家观看,直接放了链接。…

代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90

文章目录 Day 2801. 复原 IP 地址(No. 93)1.1 题目1.2 笔记1.3 代码 02. 子集(No. 78)2.1 题目2.2 笔记2.3 代码 03. 子集 II(No. 90)3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址(No. 9…

《读者》2023-18:定力决定你能走多远

定力决定你能走多远 - 董宇辉 我苦练英语很长时间之后,有一次上口语课,老师让我回答问题。 我回答完,老师说,没想到你的口语还挺好的。 我突然感觉自己的付出被看见了,虽然它小到不值一提。 请你记住,很多小…

2024年华为OD机试真题-多段线数据压缩-Java-OD统一考试(C卷)

题目描述: 下图中,每个方块代表一个像素,每个像素用其行号和列号表示。 为简化处理,多段线的走向只能是水平、竖直、斜向45度。 上图中的多段线可以用下面的坐标串表示:(2, 8), (3, 7), (3, 6), (3, 5), (4, 4), (5, 3), (6, 2), (7, 3), (8, 4), (7, 5)。 但可以发现,这…

C++智能指针的冷知识!

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 大家好呀,我是PingdiGuo_guo,今天我们来学习一下智能指针。 文章目录 1.智能指针的概念 2.智能指针的思想 3.智能指针的作用 3.1 自动内存管理 3.2 共享所有权 3.3 避免悬挂指针…

PyTorch使用Tricks:学习率衰减 !!

文章目录 前言 1、指数衰减 2、固定步长衰减 3、多步长衰减 4、余弦退火衰减 5、自适应学习率衰减 6、自定义函数实现学习率调整:不同层不同的学习率 前言 在训练神经网络时,如果学习率过大,优化算法可能会在最优解附近震荡而无法收敛&#x…

PowerPoint安装IguanaTex插件

1 前提 电脑已经配置好Latex环境 2 安装过程 2.1 下载IguanaTex_v1_56插件 官网下载地址 下载的文件格式为:IguanaTex v1.56 (.ppam) .ppam 2.2 移动插件 将IguanaTex v1.56 .ppam移动到C:\Users\ 你的用户名\AppData\Roaming\Microsoft\AddIns目录下。 2.3 …

【初始消息队列】消息队列的各种类型

消息队列相关概念 什么是消息队列 MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--强化学习、机器人等

专属领域论文订阅 VX关注{晓理紫},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 为了答谢各位网友的支持,从今日起免费为…

SQL-Labs靶场“11-15”关通关教程

君衍. 一、十一关 基于POST单引号字符型注入1、源码分析2、联合查询注入3、报错注入 二、十二关 基于POST双引号字符型注入1、源码分析2、联合查询注入3、报错注入 三、十三关 基于POST单引号报错注入变形1、源码分析2、报错注入 四、十四关 基于POST双引号报错注入1、源码分析…

PWM驱动直流电机

一、知识补充; 低频时有蜂鸣器响声,加大PWM频率,超出人耳范围就可以听不到,20Hz~20kHz 加大频率-->减小预分频器,从720-->36现在频率就是20kHz这样不会影响占空比? 二、接线图 三、代码分析 main,c #include…

批量采集网站产品图并生成对应EXCEL

运营的小哥需要批量采集某网站的产品大图产品标题,粗略看了看是shopfy的网站,数据大概1000多点,需求嘛就是需要生成带图的cxcel文档,想想去折腾个程序太浪费时间了,何况不会python就另辟蹊径了。 用到了后羿采集器&am…

rust函数 stuct struct方法 关联函数

本文结合2个代码实例主要介绍了rust函数定义方法,struct结构体定义、struct方法及关联函数等相关基础知识。 代码1: main.rc #[derive(Debug)]//定义一个结构体 struct Ellipse {max_semi_axis: u32,min_semi_axis: u32, }fn main() {//椭圆&#xff0…

大数据01-导论

零、文章目录 大数据01-导论 1、数据与数据分析 **数据:是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。**数据可以是连续的值,比如声音、图像,称为模拟数据;也可…

电阻器的脉冲浪涌能力?

由于现有需求,许多现代电子电路和设备都会经历瞬态脉冲和浪涌。这反过来又导致需要“设计”瞬态浪涌保护,尤其是在电机控制器等电路中。当电机启动时,此时消耗的电流过大,可能导致电阻器故障。同样,如果电容器用于电机…