En el
Para completar este tutorial, necesitarás configurar algún software. Aquí hay un desglose de lo que necesitará:
Instalación: si estás empezando de nuevo, el
Una vez que haya instalado Docker Desktop o la combinación de Docker y Docker Compose, puede verificar su presencia ejecutando el siguiente comando en su terminal:
docker-compose --version
También necesitará una licencia SingleStore, que puede obtener
Tome nota tanto de su clave de licencia como de su contraseña de root. Se asignará una contraseña de root aleatoria a su cuenta, pero podrá cambiarla mediante la interfaz de usuario de SingleStore.
Este tutorial depende de
El archivo más importante de este repositorio es docker-compose.yaml
que describe un entorno Docker con una base de datos SingleStore ( singlestore
), una instancia MinIO ( minio
) y un contenedor mc
que depende del servicio MinIO.
El contenedor mc contiene un script entrypoint
que primero espera hasta que se pueda acceder a MinIO, agrega MinIO como host, crea el depósito classic-books
, carga un archivo books.txt
que contiene datos del libro, establece la política del depósito en pública y luego sale.
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:
Usando un editor de documentos, reemplace los marcadores de posición con su clave de licencia y contraseña de root.
En una ventana de terminal, navegue hasta donde clonó el repositorio y ejecute el siguiente comando para iniciar todos los contenedores:
docker-compose up
Abra una ventana del navegador y navegue hasta
Navegar aminioadmin:minioadmin
. Verá que el contenedor mc ha creado un depósito llamado classic-books
y que hay un objeto en el depósito.
En SingleStore, navegue hasta el Editor SQL y ejecute lo siguiente
-- 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;
Este script SQL inicia una secuencia de acciones para manejar datos relacionados con libros clásicos. Comienza estableciendo una nueva base de datos denominada books
. Dentro de esta base de datos, se crea una tabla llamada classic_books
, diseñada para contener detalles como título, autor y fecha de publicación.
Después de esto, se configura una canalización denominada minio
para extraer datos de un depósito de S3 denominado classic-books
y cargarlos en la tabla classic_books
. Se definen los parámetros de configuración para esta canalización, incluida la región, la URL del punto final y las credenciales de autenticación.
Posteriormente, se activa el pipeline 'minio' para comenzar el proceso de recuperación y llenado de datos. Una vez que los datos se cargan correctamente en la tabla, una consulta SELECT recupera y muestra todos los registros almacenados en classic_books
.
Una vez finalizada la extracción y visualización de datos, la canalización minio
se detiene y elimina, la tabla classic_books
se elimina de la base de datos books
y la propia base de datos books
se elimina, lo que garantiza un borrón y cuenta nueva y concluye las operaciones de gestión de datos. Este script debería ayudarle a empezar a jugar con los datos de MinIO en SingleStore.
Este tutorial configura rápidamente una pila de datos sólida que permite experimentar con el almacenamiento, procesamiento y consulta de datos en el almacenamiento de objetos. La integración de SingleStore, una base de datos nativa de la nube conocida por su velocidad y versatilidad, con MinIO constituye un elemento importante en la pila de datalakes moderna.
A medida que la tendencia de la industria se inclina hacia la desagregación del almacenamiento y la computación, esta configuración permite a los desarrolladores explorar estrategias innovadoras de gestión de datos. Ya sea que esté interesado en crear aplicaciones con uso intensivo de datos, implementar análisis avanzados o experimentar con cargas de trabajo de IA, este tutorial le sirve como plataforma de lanzamiento.
Lo invitamos a aprovechar esta pila de datos, experimentar con diferentes conjuntos de datos y configuraciones y liberar todo el potencial de sus aplicaciones basadas en datos. Si tiene alguna pregunta o idea, no dude en comunicarse con nosotros en [email protected] o únase a nuestro