paint-brush
开发下一代数据解决方案:SingleStore、MinIO 和现代 Datalake 堆栈经过@minio
3,938 讀數
3,938 讀數

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

经过 MinIO6m2024/06/05
Read on Terminal Reader

太長; 讀書

singlestore.io 是一款专为数据密集型工作负载而设计的云原生数据库。它将 SQL 查询编译为机器代码,并可通过 Kubernetes 操作符部署在各种环境中,包括本地安装、公有/私有云和容器。
featured image - 开发下一代数据解决方案:SingleStore、MinIO 和现代 Datalake 堆栈
MinIO HackerNoon profile picture
0-item
1-item


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

现代数据湖架构

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

先决条件

要完成本教程,您需要安装一些软件。以下是您需要的软件的分类:


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

  • Docker 组成充当编排器,简化多容器应用程序的管理。它有助于轻松定义和运行复杂的应用程序。


安装:如果你是新手, Docker 桌面安装程序提供了便捷的一站式解决方案,可在特定平台(Windows、macOS 或 Linux)上安装 Docker 和 Docker Compose。事实证明,这比单独下载和安装它们更容易。


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


 docker-compose --version


您还需要一个 SingleStore 许可证,您可以获取这里



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

入门

本教程依赖于这个存储库. 将 repo 克隆到您选择的位置。


此 repo 中最重要的文件是docker-compose.yaml ,它描述了一个 Docker 环境,其中包含一个 SingleStore 数据库( singlestore ),一个 MinIO 实例( minio )和一个依赖于 MinIO 服务的mc容器。


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


 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,JD 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 密码。


在终端窗口中,导航到您克隆 repo 的位置并运行以下命令来启动所有容器:


 docker-compose up


打开浏览器窗口导航至http://本地主机: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管道,从books数据库中删除classic_books表,并删除books数据库本身,确保一切正常并完成数据管理操作。此脚本应该可以帮助您开始在 SingleStore 中处理 MinIO 中的数据。


在此堆栈上构建

本教程快速设置了一个强大的数据堆栈,可用于试验在对象存储中存储、处理和查询数据。SingleStore 是一个以速度和多功能性而闻名的云原生数据库,与 MinIO 的集成构成了现代数据湖堆栈的重要组成部分。


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


我们邀请您在此数据堆栈的基础上进行构建,尝试不同的数据集和配置,并充分发挥数据驱动应用程序的潜力。如有任何问题或想法,请随时通过 [email protected] 与我们联系或加入我们的Slack 频道