构建下一代数据解决方案:SingleStore、MinIO 和现代 Datalake 堆栈

news2024/10/7 9:21:05

SingleStore 是专为数据密集型工作负载而设计的云原生数据库。它是一个分布式关系 SQL 数据库管理系统,支持 ANSI SQL,并因其在数据引入、事务处理和查询处理方面的速度而受到认可。SingleStore 可以存储关系、JSON、图形和时间序列数据,以满足 HTAP 等混合工作负载以及 OLTP 和 OLAP 用例的需求。它将 SQL 查询编译为机器代码,并可以通过 Kubernetes Operator 部署在各种环境中,包括本地安装、公共/私有云和容器。

现代数据湖架构

在现代 Datalake 架构中,SingleStore 完全适合处理层。此层是用于转换的处理引擎、为其他工具提供数据、数据探索和其他用例的位置。处理层工具(如 SingleStore)可以很好地与其他工具配合使用:通常多个处理层工具来自同一个数据湖。通常,这种设计是在工具专用化的情况下实现的。例如,具有混合矢量和全文搜索功能的超快速内存数据处理平台(如 SingleStore)针对 AI 工作负载进行了优化,尤其是针对生成式 AI 用例。

先决条件

要完成本教程,您需要设置一些软件。以下是您需要的内容的细分:

  • **Docker 引擎:**这个强大的工具允许您在称为容器的标准化软件单元中打包和运行应用程序。

  • **Docker Compose:**它充当业务流程协调程序,简化多容器应用程序的管理。它有助于轻松定义和运行复杂的应用程序。

**安装:**如果您要重新开始,Docker 桌面安装程序提供了一个方便的一站式解决方案,用于在特定平台(Windows、macOS 或 Linux)上安装 Docker 和 Docker Compose。这通常被证明比单独下载和安装它们更容易。

安装 Docker Desktop 或 Docker 和 Docker Compose 的组合后,可以通过在终端中运行以下命令来验证它们的存在:


docker-compose --version

您还需要一个 SingleStore 许可证,您可以在此处获取。

记下您的许可证密钥和 root 密码。系统将为您的帐户分配一个随机的 root 密码,但您可以使用 SingleStore UI 更改您的 root 密码。

开始

本教程依赖于此存储库。将存储库克隆到所选位置。

此存储库中最重要的文件是 docker-compose.yaml 描述具有 SingleStore 数据库 ( singlestore )、MinIO 实例 ( minio ) 和依赖于 MinIO 服务的 mc 容器的 Docker 环境。

mc 容器包含一个 entrypoint 脚本,该脚本首先等待 MinIO 可访问,将 MinIO 添加为主机,创建 classic-books 存储桶,上传包含书籍数据 books.txt 的文件,将存储桶策略设置为 public,然后退出。


version: '3.7'

services:

  singlestore:
    image: 'singlestore/cluster-in-a-box'
    ports:
      - "3306:3306"
      - "8080:8080"
    environment:
      LICENSE_KEY: ""
      ROOT_PASSWORD: ""
      START_AFTER_INIT: 'Y'

  minio:
    image: minio/minio:latest
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - data1-1:/data1
      - data1-2:/data2
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    command: ["server", "/data1", "/data2", "--console-address", ":9001"]

  mc:
    image: minio/mc:latest
    depends_on:
      - minio
    entrypoint: >
      /bin/sh -c "
      until (/usr/bin/mc config host add --quiet --api s3v4 local http://minio:9000 minioadmin minioadmin) do echo '...waiting...' && sleep 1; done;
      echo 'Title,Author,Year' > books.txt;
      echo 'The Catcher in the Rye,J.D. Salinger,1945' >> books.txt;
      echo 'Pride and Prejudice,Jane Austen,1813' >> books.txt;
      echo 'Of Mice and Men,John Steinbeck,1937' >> books.txt;
      echo 'Frankenstein,Mary Shelley,1818' >> books.txt;
      /usr/bin/mc cp books.txt local/classic-books/books.txt;
      /usr/bin/mc policy set public local/classic-books;
      exit 0;
      "

volumes:
  data1-1:
  data1-2:
  

使用文档编辑器,将占位符替换为您的许可证密钥和 root 密码。

在终端窗口中,导航到克隆存储库的位置,然后运行以下命令以启动所有容器:


docker-compose up

打开浏览器窗口,导航到 http://localhost:8080/,然后使用用户名“root”和您的root密码登录。

检查 MinIO

导航到 http://127.0.0.1:9001 以启动 MinIO WebUI。使用用户名和密码登录 minioadmin:minioadmin 。您将看到 mc 容器创建了一个调用 classic-books 的存储桶,并且存储桶中有一个对象。

使用 SQL 进行探索

在 SingleStore 中,导航到 SQL 编辑器并运行以下命令:


-- Create a new database named 'books'
CREATE DATABASE books;


-- Switch to the 'books' database


USE books;


-- Create a table named 'classic_books' to store information about classic books
CREATE TABLE classic_books
(
   title VARCHAR(255),
   author VARCHAR(255),
   date VARCHAR(255)
);


-- Define a pipeline named 'minio' to load data from an S3 bucket called 'classic-books'
-- The pipeline loads data into the 'classic_books' table


CREATE PIPELINE IF NOT EXISTS minio
AS LOAD DATA S3 'classic-books'
CONFIG '{"region": "us-east-1", "endpoint_url":"http://minio:9000/"}'
CREDENTIALS '{"aws_access_key_id": "minioadmin", "aws_secret_access_key": "minioadmin"}'
INTO TABLE classic_books
FIELDS TERMINATED BY ',';


-- Start the 'minio' pipeline to initiate data loading
START PIPELINE minio;


-- Retrieve and display all records from the 'classic_books' table
SELECT * FROM classic_books;


-- Drop the 'minio' pipeline to stop data loading
DROP PIPELINE minio;


-- Drop the 'classic_books' table to remove it from the database
DROP TABLE classic_books;


-- Drop the 'books' database to remove it entirely
DROP DATABASE books;


此 SQL 脚本启动一系列操作来处理与经典书籍相关的数据。它首先建立一个名为 books 的新数据库。在此数据库中,将创建一个名为的 classic_books 表,该表旨在保存标题、作者和出版日期等详细信息。

在此之后,将设置一个名为 minio 的管道,用于从标记 classic-books 的 S3 存储桶中提取数据并将其加载到表中 classic_books 。定义了此管道的配置参数,包括区域、终端节点 URL 和身份验证凭据。

随后,“minio”管道被激活,开始数据检索和填充过程。成功将数据加载到表中后,SELECT 查询将检索并显示存储在 classic_books 中的所有记录。

在完成数据提取和查看后, minio 管道将停止并删除, classic_books 表将从 books 数据库中删除,数据库 books 本身将被删除,从而确保干净的石板并结束数据管理操作。此脚本应帮助您开始在 SingleStore 的 MinIO 中处理数据。

在此堆栈上构建

本教程快速设置了一个强大的数据堆栈,允许在对象存储中存储、处理和查询数据进行试验。SingleStore(一个以其速度和多功能性而闻名的云原生数据库)与 MinIO 的集成构成了现代数据湖堆栈中的重要一块砖。

随着行业趋势倾向于存储和计算的分解,这种设置使开发人员能够探索创新的数据管理策略。无论你是对构建数据密集型应用程序、实施高级分析还是试验 AI 工作负载感兴趣,本教程都可以作为启动板。

我们邀请您在此数据堆栈的基础上进行构建,尝试不同的数据集和配置,并释放数据驱动应用程序的全部潜力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试八股之简述JVM内存结构

简述JVM内存结构 Java虚拟机(JVM)内存结构主要分为线程私有区域和线程共享区域两大部分,具体组成部分如下: 线程私有区域 程序计数器(Program Counter Register): 记录当前线程执行的字节码行…

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》 《文稿拾零》超厚的一本书(570),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有…

CP AUTOSAR标准之FlashTest(AUTOSAR_CP_SWS_FlashTest)(更新中……)

1 简介和功能概述 该规范指定了AUTOSAR基础软件模块Flash测试驱动程序的功能、API和配置。   此闪存测试模块提供测试恒定内存的算法。恒定内存可以是数据/程序闪存、程序SRAM、锁定缓存,可以嵌入微控制器中,也可以通过内存映射连接到微控制器。为简化起见,SW模块称为闪存…

秋招突击——第六弹——Java的SSN框架快速入门——MyBatisPlus

文章目录 引言正文入门案例整和MybatisPlus的相关内容 概述标准数据层开发分页查询DQL编程控制条件查询——NULL值处理 查询投影查询条件设定等于操作范围查询模糊查询分组查询 字段映射和表名映射 DML编程控制——增删改查相关操作添加操作id生成策略控制 删除操作多数据删除逻…

面试:关于word2vec的相关知识点Hierarchical Softmax和NegativeSampling

1、为什么需要Hierarchical Softmax和Negative Sampling 从输入层到隐含层需要一个维度为NK的权重矩阵,从隐含层到输出层又需要一个维度为KN的权重矩阵,学习权重可以用反向传播算法实现,每次迭代时将权重沿梯度更优的方向进行一小步更新。但…

Qt画实时曲线图

Qt引入QcustomPlot 首先下载QcustomPlot源代码,https://github.com/qcustomplot/qcustomplot 下载zip文件 运行所下载的项目生成库文件libqcustomplotd2.a文件和qcustomplotd2.dll文件。 在项目中添加printsupport。 并将qcustomplot.h文件和qcustomplot.cpp文…

RMDA通信1:通信过程和优势,以太网socket为何用户空间拷贝到内核空间

视频分享: 1.1 RDMA基本原理和优势,以太网socket通信为什么要用户空间拷贝到内核空间_哔哩哔哩_bilibili 一、以太网socket通信 1.1 以太网socket通信过程 1、发送端发起一次通信操作,数据由用户空间拷贝到内核空间。拷贝由CPU完成&#x…

ubuntu22.04笔记: 更换为阿里源

没有按照LTS 版本 会遇到下面问题: 参考:https://zhuanlan.zhihu.com/p/691625646 Ubuntu 22.04代号为:jammy Ubuntu 20.04代号为:focal Ubuntu 19.04代号为:disco Ubuntu 18.04代号为:bionic Ubuntu …

【算法专题--链表】两两交换链表中的节点 -- 高频面试题(图文详解,小白一看就懂!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 -- 采用哨兵位头节点 🥝 什么是哨兵位头节点? 🍍 解题思路 🍍 案例图解 四、总结与提炼 五、共勉 一、前言 两两交换链表中的节点 这道题,可以说…

libssh-cve_2018_10933-vulfocus

1.原理 ibssh是一个用于访问SSH服务的C语言开发包,它能够执行远程命令、文件传输,同时为远程的程序提供安全的传输通道。server-side state machine是其中的一个服务器端状态机。 在libssh的服务器端状态机中发现了一个逻辑漏洞。攻击者可以MSG_USERA…

从零开始搭建一个酷炫的个人博客

效果图 一、搭建网站 git和hexo准备 注册GitHub本地安装Git绑定GitHub并提交文件安装npm和hexo,并绑定github上的仓库注意:上述教程都是Windows系统,Mac系统会更简单! 域名准备 购买域名,买的是腾讯云域名&#xf…

重庆交通大学24计算机考研数据速览,专硕第二年招生,复试线321分!

重庆交通大学(Chongqing Jiaotong University,CQJTU),是由重庆市人民政府和中华人民共和国交通运输部共建的一所交通特色、以工为主的多科性大学,入选“中西部高校基础能力建设工程”、“卓越工程师教育培养计划”、国…

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发(上)》中,我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后,接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 …

Visual Studio开发环境搭建

原文:https://blog.c12th.cn/archives/25.html Visual Studio开发环境搭建 测试:笔记本原装操作系统:Windows 10 家庭中文版 资源分享链接:提取码:qbt2 注意事项:注意查看本地硬盘是否够用,建议…

C语言中的字符输入/输出和验证输入

在C语言中,字符输入/输出功能允许程序与用户进行交互,读取用户的输入信息并展示输出结果。同时,验证输入的作用在于确保用户输入的数据符合预期,以提高程序的稳定性和可靠性,防止无效输入引发的错误或异常行为&#xf…

利用ChatGPT辅助撰写课题申报书中的研究框架与内容设计全攻略指南

欢迎关注EssayBot,为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥沟通:yida985 撰写课题申报书是启动科研项目的第一个步骤,而研究框架与内容设计又是这一过程中的关键要素&#xff0…

浙大宁波理工学院2024年成人高等继续教育招生简章

浙大宁波理工学院,这所承载着深厚学术底蕴和卓越教育理念的学府,正热烈开启2024年成人高等继续教育的招生之门。这里,是知识的殿堂,是智慧的摇篮,更是您实现个人梦想、追求更高境界的起点。 ​浙大宁波理工学院始终坚…

Git代码管理的常用操作

在VS022中,Git的管理要先建立本地或远程仓库,然后commit到本地,最后push到远程代码库。 或者不建立本地的情况,直接拉取已有的远程代码。 Git是一个分布式版本控制系统,用于跟踪和管理文件的变化。它可以记录文件的修…

抛弃Mybatis,拥抱新的ORM 框架!【送源码】

背景 转java后的几年时间里面一直在寻找一个类似.net的orm,不需要很特别的功能,仅希望90%的场景都可以通过强类型语法来编写符合直觉的sql,来操作数据库编写业务。 但是一直没有找到,Mybatis-Plus的单表让我在最初的时间段内看到…

基于51单片机抽奖系统

基于51单片机抽奖系统 (仿真+程序) 功能介绍 具体功能: 1.利用5片74HC495对单片机的IO进行串并转换,进而控制5个1位数码管; 2.采用一个独立按键用于抽奖系统的启停控制; 3.8位拨码开关是用…