Im
Um dieses Tutorial abzuschließen, müssen Sie einige Softwareprogramme installieren. Hier ist eine Übersicht über die benötigten Tools:
Installation: Wenn Sie neu beginnen,
Nachdem Sie Docker Desktop oder die Kombination aus Docker und Docker Compose installiert haben, können Sie deren Vorhandensein überprüfen, indem Sie den folgenden Befehl in Ihrem Terminal ausführen:
docker-compose --version
Sie benötigen außerdem eine SingleStore-Lizenz, die Sie erhalten können
Notieren Sie sich Ihren Lizenzschlüssel und Ihr Root-Passwort. Ihrem Konto wird ein zufälliges Root-Passwort zugewiesen, Sie können Ihr Root-Passwort jedoch über die SingleStore-Benutzeroberfläche ändern.
Dieses Tutorial hängt ab von
Die wichtigste Datei in diesem Repo ist docker-compose.yaml
, die eine Docker-Umgebung mit einer SingleStore-Datenbank ( singlestore
), einer MinIO-Instanz ( minio
) und einem mc
Container beschreibt, der vom MinIO-Dienst abhängt.
Der mc-Container enthält ein entrypoint
, das zunächst wartet, bis auf MinIO zugegriffen werden kann, MinIO als Host hinzufügt, den Bucket classic-books
erstellt, eine Datei books.txt
mit Buchdaten hochlädt, die Bucket-Richtlinie auf „öffentlich“ setzt und dann beendet wird.
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:
Ersetzen Sie die Platzhalter mithilfe eines Dokumenteditors durch Ihren Lizenzschlüssel und Ihr Root-Passwort.
Navigieren Sie in einem Terminalfenster zu dem Ort, an dem Sie das Repository geklont haben, und führen Sie den folgenden Befehl aus, um alle Container zu starten:
docker-compose up
Öffnen Sie ein Browserfenster und navigieren Sie zu
Navigieren Sie zuminioadmin:minioadmin
an. Sie werden sehen, dass der mc-Container einen Bucket mit dem Namen classic-books
erstellt hat und dass sich ein Objekt im Bucket befindet.
Navigieren Sie in SingleStore zum SQL Editor und führen Sie den folgenden
-- 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;
Dieses SQL-Skript leitet eine Abfolge von Aktionen zur Verarbeitung von Daten zu klassischen Büchern ein. Es beginnt mit der Erstellung einer neuen Datenbank mit dem Namen „ books
. Innerhalb dieser Datenbank wird eine Tabelle mit dem Namen classic_books
erstellt, die Details wie Titel, Autor und Veröffentlichungsdatum enthält.
Anschließend wird eine Pipeline namens minio
eingerichtet, um Daten aus einem S3-Bucket mit der Bezeichnung classic-books
zu extrahieren und in die Tabelle classic_books
zu laden. Konfigurationsparameter für diese Pipeline, einschließlich Region, Endpunkt-URL und Authentifizierungsdaten, werden definiert.
Anschließend wird die „minio“-Pipeline aktiviert, um den Prozess des Datenabrufs und der Datenauffüllung zu starten. Sobald die Daten erfolgreich in die Tabelle geladen wurden, ruft eine SELECT-Abfrage alle in classic_books
gespeicherten Datensätze ab und zeigt sie an.
Nach Abschluss der Datenextraktion und -anzeige wird die minio
Pipeline angehalten und entfernt, die Tabelle classic_books
wird aus der books
gelöscht und die books
selbst wird entfernt, um eine saubere Grundlage zu gewährleisten und die Datenverwaltungsvorgänge abzuschließen. Mit diesem Skript können Sie mit Daten in MinIO in SingleStore herumspielen.
Dieses Tutorial richtet schnell einen robusten Datenstapel ein, der das Experimentieren mit dem Speichern, Verarbeiten und Abfragen von Daten im Objektspeicher ermöglicht. Die Integration von SingleStore, einer Cloud-nativen Datenbank, die für ihre Geschwindigkeit und Vielseitigkeit bekannt ist, mit MinIO bildet einen wichtigen Baustein im modernen Datalake-Stapel.
Da der Branchentrend zur Trennung von Speicher und Rechenleistung tendiert, ermöglicht dieses Setup Entwicklern, innovative Datenverwaltungsstrategien zu erkunden. Egal, ob Sie datenintensive Anwendungen erstellen, erweiterte Analysen implementieren oder mit KI-Workloads experimentieren möchten, dieses Tutorial dient als Startrampe.
Wir laden Sie ein, auf diesem Datenstapel aufzubauen, mit verschiedenen Datensätzen und Konfigurationen zu experimentieren und das volle Potenzial Ihrer datengesteuerten Anwendungen auszuschöpfen. Bei Fragen oder Ideen können Sie sich gerne an uns unter [email protected] wenden oder unserem