Dans le
Pour terminer ce didacticiel, vous devrez configurer certains logiciels. Voici une liste de ce dont vous aurez besoin :
Installation : Si vous repartez à zéro, le
Une fois que vous avez installé Docker Desktop ou la combinaison de Docker et Docker Compose, vous pouvez vérifier leur présence en exécutant la commande suivante dans votre terminal :
docker-compose --version
Vous aurez également besoin d'une licence SingleStore, que vous pouvez obtenir
Gardez note de votre clé de licence et de votre mot de passe root. Un mot de passe root aléatoire sera attribué à votre compte, mais vous pourrez modifier votre mot de passe root à l'aide de l'interface utilisateur SingleStore.
Ce tutoriel dépend de
Le fichier le plus important de ce dépôt est le docker-compose.yaml
qui décrit un environnement Docker avec une base de données SingleStore ( singlestore
), une instance MinIO ( minio
) et un conteneur mc
qui dépend du service MinIO.
Le conteneur mc contient un script entrypoint
qui attend d'abord que MinIO soit accessible, ajoute MinIO en tant qu'hôte, crée le compartiment classic-books
, télécharge un fichier books.txt
contenant les données du livre, définit la stratégie du compartiment sur publique, puis se ferme.
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:
À l’aide d’un éditeur de documents, remplacez les espaces réservés par votre clé de licence et votre mot de passe root.
Dans une fenêtre de terminal, accédez à l'endroit où vous avez cloné le dépôt et exécutez la commande suivante pour démarrer tous les conteneurs :
docker-compose up
Ouvrez une fenêtre de navigateur, accédez à
Aller versminioadmin:minioadmin
. Vous verrez que le conteneur mc a créé un bucket appelé classic-books
et qu'il y a un objet dans le bucket.
Dans SingleStore, accédez à l'éditeur SQL et exécutez ce qui suit
-- 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;
Ce script SQL initie une séquence d'actions pour gérer les données liées aux livres classiques. Cela commence par établir une nouvelle base de données nommée books
. Dans cette base de données, une table appelée classic_books
est créée, conçue pour contenir des détails tels que le titre, l'auteur et la date de publication.
Suite à cela, un pipeline nommé minio
est configuré pour extraire les données d'un compartiment S3 étiqueté classic-books
et les charger dans la table classic_books
. Les paramètres de configuration de ce pipeline, notamment la région, l'URL du point de terminaison et les informations d'authentification, sont définis.
Par la suite, le pipeline « minio » est activé pour commencer le processus de récupération et de remplissage des données. Une fois les données chargées avec succès dans la table, une requête SELECT récupère et affiche tous les enregistrements stockés dans classic_books
.
Une fois l'extraction et la visualisation des données terminées, le pipeline minio
est arrêté et supprimé, la table classic_books
est supprimée de la base de données books
et la base de données books
elle-même est supprimée, garantissant ainsi une table rase et concluant les opérations de gestion des données. Ce script devrait vous permettre de commencer à jouer avec les données dans MinIO dans SingleStore.
Ce didacticiel met rapidement en place une pile de données robuste qui permet d'expérimenter le stockage, le traitement et l'interrogation de données dans le stockage d'objets. L'intégration de SingleStore, une base de données cloud native connue pour sa rapidité et sa polyvalence, avec MinIO constitue une brique importante dans la pile datalake moderne.
Alors que la tendance du secteur s'oriente vers la désagrégation du stockage et du calcul, cette configuration permet aux développeurs d'explorer des stratégies innovantes de gestion des données. Que vous souhaitiez créer des applications gourmandes en données, mettre en œuvre des analyses avancées ou expérimenter des charges de travail d'IA, ce didacticiel sert de rampe de lancement.
Nous vous invitons à vous appuyer sur cette pile de données, à expérimenter différents ensembles de données et configurations et à libérer tout le potentiel de vos applications basées sur les données. Pour toute question ou idée, n'hésitez pas à nous contacter à [email protected] ou à rejoindre notre