基于 RisingWave 和 ScyllaDB 构建事件驱动应用

2024-03-29 13:36

本文主要是介绍基于 RisingWave 和 ScyllaDB 构建事件驱动应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概览

在构建事件驱动应用时,人们面临着两大挑战:1)低延迟处理大量数据;2)实现流数据的实时摄取和转换。

结合 RisingWave 的流处理功能和 ScyllaDB 的高性能 NoSQL 数据库,可为构建事件驱动应用和数据管道提供有效的解决方案。

RisingWave 是什么?

RisingWave 是一款专为流处理设计且与 PostgreSQL 兼容的数据库。它擅长摄取实时数据流、执行各种转换并实现对结果的即时查询。

ScyllaDB 是什么?

ScyllaDB 是一款高性能分布式 NoSQL 数据库,擅长处理大量数据并为应用程序提供低延迟访问。ScyllaDB 与 Apache Cassandra 数据模型和协议兼容,这意味着在许多情况下,它可以作为 Cassandra 的简单替代品。ScyllaDB 还提供与 Amazon DynamoDB 兼容的 API。

ScyllaDB 具有低延迟和高吞吐量的特性,适合为需要快速数据访问的实时应用提供服务,如在线游戏、实时分析或物联网(IoT)应用。

二者协同

RisingWave 擅长处理流数据,包括对流数据的摄取、连接和转换。而 ScyllaDB 则能以极低的延迟为实时应用提供大量数据。

这两个系统为构建事件驱动应用或管道提供了坚实的基础。RisingWave 可在事件发生时即时处理事件数据,其内置的 ScyllaDB 连接器可实时将处理后的数据导出到 ScyllaDB。这种集成能够确保数据随时可供实时应用或管道查询使用。

如何将 RisingWave 与 ScyllaDB 集成

我们将使用以下示例来演示如何使用 RisingWave 和 ScyllaDB 构建事件驱动应用。设想一下电子商务中的个性化推荐场景,通过连接点击流和产品目录流,我们可以实时分析用户的偏好并提供个性化推荐。

连接点击流和产品目录流

点击流示例如下:

{"user_id": "john_doe","item_id": "12345","timestamp": "2023-03-08T15:30:00Z"
}

产品目录流示例如下:

{"item_id": "12345","category": "electronics","price": 100,"timestamp": "2023-03-08T10:00:00Z"
}

步骤 1:从 RisingWave 摄取 Kafka 的实时数据

假设我们已将这两个流的数据分别打包到两个 Kafka Topic 中。

现在在 RisingWave 中创建两个 Source 来摄取这两个流:

# 为点击流创建一个 Source
CREATE SOURCE clickstream (user_id VARCHAR,item_id VARCHAR,timestamp TIMESTAMPTZ
)
WITH (type = 'kafka',kafka_topic = 'clickstream',kafka_brokers = 'localhost:9092'
);# 为产品目录流创建一个 SourceCREATE SOURCE product_catalog (item_id VARCHAR,category VARCHAR,price NUMERIC,timestamp TIMESTAMPTZ
)
WITH (type = 'kafka',kafka_topic = 'product_catalog',kafka_brokers = 'localhost:9092'
);

步骤 2:在 ScyllaDB 中创建表

由于我们要实时连接数据流并将数据导出到 ScyllaDB,因此需要在 ScyllaDB 中创建一个表来保存连接后的数据流。

CREATE TABLE joined_stream (user_id TEXT,item_id TEXT,timestamp TIMESTAMPTZ,category TEXT,price DECIMAL,PRIMARY KEY (user_id, item_id, timestamp)
);

步骤 3:执行流 Join 并导出到 ScyllaDB

在 RisingWave 中,您可以通过创建 Sink 将数据导出到下游系统。在 CREATE SINK 语句中还可以包含数据转换逻辑。创建 Sink 时与创建 Source 或者实时物化视图类似,本质上都是创建了持续数据处理的任务。在 RisingWave 中,如果要创建的是简单直接的实时数据处理管道,只需两条 SQL 语句即可做到:CREATE SOURCE 和 CREATE SINK

CREATE SINK joined_stream AS
SELECT c.user_id, c.item_id, c.timestamp, p.category, p.price
FROM clickstream c
JOIN product_catalog p ON c.item_id = p.item_id;
WITH (connector='cassandra',type='append-only',cassandra.url = '<node1>,<node2>,<node3>',cassandra.keyspace = '<keyspace>',cassandra.table = 'joined_stream'
);

有关详细的句法和参数信息,请参阅 从 RisingWave 导出数据到 Cassandra 或 ScyllaDB

到这一步,ScyllaDB 中的数据已可为应用或下游系统提供查询服务。

总结

只需三个步骤,我们就建立了无缝的连续数据处理管道,自动执行流 Join 并将连接后的数据导出到 ScyllaDB。ScyllaDB 的高性能使得实时应用能够以低延迟查询数据。这一集成的独特之处在于整个工作流程的设置非常简单。

以上是一个简单的用例示范,除此之外,使用 RisingWave,您可以轻松地过滤、连接和转换流数据,轻松表达复杂的转换逻辑。我们鼓励您进一步探索,如有任何疑问或需要支持,请联系我们。

事件驱动应用和数据管道的价值正在不断增长,能够轻松配置技术栈是一大优势。RisingWave 和 ScyllaDB 的集成可简化技术栈,使您能够专注于通过实时数据处理和分析实现价值。

资源

  • 有关 RisingWave 和 ScyllaDB 的可运行集成,请查看此演示
  • 使用 RisingWave 和 ScyllaDB 进行经济高效的流处理
  • ScyllaDB 文档
  • RisingWave 用例
  • RisingWave 文档
  • 有关 RisingWave 所支持集成的完整列表,请查看此页面

这篇关于基于 RisingWave 和 ScyllaDB 构建事件驱动应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858734

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。