# Schnellstart

Diese Anleitung zeigt Ihnen, wie Sie in wenigen einfachen Schritten einen Cluster starten, Daten importieren und SQL-Abfragen ausführen können. Weitere Informationen zu anderen Entwicklertools wie dem Python-Client finden Sie im Abschnitt Entwicklertools.

# Wie starte ich Ihren ersten Cluster?

Starten Sie einen ersten Cluster

Bevor Sie Datenoperationen durchführen können, müssen Sie einen Cluster starten. Auf der Seite Cluster können Sie einen Cluster erstellen und die Rechen- und Speicherressourcen konfigurieren, um Ihren Anforderungen gerecht zu werden.

Befolgen Sie diese Schritte, um einen neuen Cluster zu starten:

  • Gehen Sie zur Seite Cluster und klicken Sie auf die Schaltfläche +Neuer Cluster, um einen neuen Cluster zu starten.
  • Geben Sie Ihrem Cluster einen Namen.
  • Klicken Sie auf Starten, um den Cluster auszuführen.

TIP

Die Entwicklungsstufe von MyScale ist auf die Standardkonfiguration beschränkt und unterstützt keine mehrfachen Replikate. Wechseln Sie zum Standardtarif, um eine leistungsstärkere Konfiguration zu erhalten. Weitere Informationen finden Sie im Abschnitt Ändern Ihres Abrechnungsplans.

# Umgebung einrichten

Sie haben die Möglichkeit, eine Verbindung zu einer MyScale-Datenbank mit einem der folgenden Entwicklertools herzustellen:

Lassen Sie uns jedoch Python verwenden, um loszulegen.

# Mit Python

Bevor Sie mit Python beginnen, müssen Sie den ClickHouse-Client (opens new window) installieren, wie im folgenden Shell-Skript beschrieben:

pip install clickhouse-connect

Nach erfolgreicher Installation des ClickHouse-Clients ist der nächste Schritt, eine Verbindung zu Ihrem MyScale-Cluster innerhalb einer Python-App herzustellen, indem Sie die folgenden Details angeben:

  • Cluster-Host
  • Benutzername
  • Passwort

Um diese Details zu finden, navigieren Sie zur MyScale-Clusterseite, klicken Sie auf den Dropdown-Link Aktion und wählen Sie Verbindungsdetails.

Aktionen

Wie im folgenden Bild zu sehen ist, wird ein Dialogfeld Verbindungsdetails angezeigt, das den erforderlichen Code enthält, um auf MyScale zuzugreifen. Klicken Sie auf das Kopiersymbol, um den entsprechenden Code zu kopieren, und fügen Sie ihn in Ihre Python-App ein.

Python

TIP

Weitere Informationen zum Herstellen einer Verbindung zu Ihrem MyScale-Cluster finden Sie unter Verbindungsdetails.

# Mit der MyScale-Konsole

Um die MyScale-Konsole zum Importieren von Daten in Ihre Datenbank und zum Ausführen von Abfragen zu verwenden, navigieren Sie zur Seite SQL-Arbeitsbereich. Ihr Cluster wird automatisch ausgewählt, wie unten gezeigt:

Geben Sie die Seite SQL-Arbeitsbereich ein

# Wie importiere ich Daten in die Datenbank?

Befolgen Sie diese Schritte, um Daten in MyScale zu importieren:

# Erstellen Sie eine Tabelle

Das Erstellen einer Datenbanktabelle in MyScale vor dem Importieren von Daten ist obligatorisch.

TIP

Weitere Informationen finden Sie in der Dokumentation zum Erstellen einer Datenbank und zum Erstellen einer Tabelle im Abschnitt SQL-Referenz.

Mit den folgenden Codebeispielen schreiben wir einen SQL-Befehl (sowohl in Python als auch in SQL), um eine neue Tabelle mit dem Namen default.myscale_categorical_search zu erstellen.

  • Python
  • SQL
# Erstellen Sie eine Tabelle mit 128-dimensionalen Vektoren.
client.command("""
CREATE TABLE default.myscale_categorical_search
(
    id    UInt32,
    data  Array(Float32),
    CONSTRAINT check_length CHECK length(data) = 128,
    date  Date,
    label Enum8('person' = 1, 'building' = 2, 'animal' = 3)
)
ORDER BY id""")

# Fügen Sie Daten in die Tabelle ein

TIP

MyScale unterstützt den Import von Daten aus Amazon S3 und anderen Cloud-Diensten mithilfe von S3-kompatiblen APIs. Weitere Informationen zum Importieren von Daten aus Amazon S3 finden Sie in der s3-Tabellenfunktion.

Wie in den folgenden Codeausschnitten beschrieben, verwenden wir SQL, um Daten in die Tabelle default.myscale_categorical_search zu importieren.

Unterstützte Dateiformate sind:

TIP

Weitere Informationen zu den Formaten für Ein- und Ausgabedaten finden Sie in der ausführlichen Beschreibung aller unterstützten Formate unter Formate für Ein- und Ausgabedaten (opens new window).

  • Python
  • SQL
client.command("""
INSERT INTO default.myscale_categorical_search
    SELECT * FROM s3(
        'https://d3lhz231q7ogjd.cloudfront.net/sample-datasets/quick-start/categorical-search.csv',
        'CSVWithNames',
        'id UInt32, data Array(Float32), date Date, label Enum8(''person'' = 1, ''building'' = 2, ''animal'' = 3)'
    )""")

# Erstellen Sie einen Vektorindex

Neben der Erstellung herkömmlicher Indizes für strukturierte Daten können Sie in MyScale auch einen Vektorindex für Vektor-Embeddings erstellen. Befolgen Sie diese Schritt-für-Schritt-Anleitung, um zu sehen, wie das geht:

# Erstellen Sie einen MSTG-Vektorindex

Wie die folgenden Codeausschnitte zeigen, besteht der erste Schritt darin, einen MSTG-Vektorindex zu erstellen, einen Vektorindex, der unseren proprietären Algorithmus MSTG verwendet.

  • Python
  • SQL
client.command("""
ALTER TABLE default.myscale_categorical_search
    ADD VECTOR INDEX categorical_vector_idx data
    TYPE MSTG
""")

TIP

Die Erstellungszeit des Index hängt von der Größe Ihres Datenimports ab.

# Überprüfen des Build-Status des Vektor-Index

Die folgenden Code-Snippets beschreiben, wie Sie SQL verwenden können, um den Build-Status des Vektor-Index zu überprüfen.

  • Python
  • SQL
# Abfragen der Systemtabelle 'vector_indices', um den Status der Indexerstellung zu überprüfen.
get_index_status="SELECT status FROM system.vector_indices WHERE table='myscale_categorical_search'"
# Den Status der Indexerstellung ausgeben. Der Status ist 'Built', wenn der Index erfolgreich erstellt wurde.
print(f"Der Index-Build-Status lautet {client.command(get_index_status)}")

Die Ausgabe wird in den folgenden Beispielen angezeigt:

  • Python
  • SQL
Der Index-Build-Status lautet Built

TIP

Weitere Informationen zu Vektorindizes finden Sie unter Vector Search.

# Ausführen von SQL-Abfragen

Nachdem Sie Daten in eine MyScale-Tabelle importiert und einen Vektor-Index erstellt haben, können Sie die Daten mithilfe der folgenden Suchtypen abfragen:

TIP

Der größte Vorteil beim Erstellen eines MSTG-Vektor-Index ist seine blitzschnelle Suchgeschwindigkeit.

Normalerweise werden Texte oder Bilder wie "ein blaues Auto" oder Bilder eines blauen Autos abgefragt. MyScale behandelt jedoch alle Abfragen als Vektoren und gibt eine Antwort auf die Abfrage basierend auf der Ähnlichkeit ("Entfernung") zwischen der Abfrage und den vorhandenen Daten in der Tabelle zurück.

Verwenden Sie die folgenden Code-Snippets, um Daten mithilfe eines Vektors als Abfrage abzurufen:

  • Python
  • SQL
 # Wählen Sie eine zufällige Zeile aus der Tabelle als Ziel aus
random_row = client.query("SELECT * FROM default.myscale_categorical_search ORDER BY rand() LIMIT 1")
assert random_row.row_count == 1
target_row_id = random_row.first_item["id"]
target_row_label = random_row.first_item["label"]
target_row_date = random_row.first_item["date"]
target_row_data = random_row.first_item["data"]
print("Derzeit ausgewähltes Element: id={}, label={}, date={}".format(target_row_id, target_row_label, target_row_date))
# Das Ergebnis der Abfrage abrufen.
result = client.query(f"""
SELECT id, date, label, 
    distance(data, {target_row_data}) as dist FROM default.myscale_categorical_search ORDER BY dist LIMIT 10
""")
# Iterieren Sie durch die Zeilen des Abfrageergebnisses und geben Sie die 'id', 'date',
# 'label' und die Entfernung für jede Zeile aus.
print("Top 10 Kandidaten:")
for row in result.named_results():
    print(row["id"], row["date"], row["label"], row["dist"])

Die Ergebnismenge mit den zehn ähnlichsten Ergebnissen lautet wie folgt:

id date label dist
0 2030-09-26 person 0
2 1975-10-07 animal 60,088
395,686 1975-05-04 animal 70,682
203,483 1982-11-28 building 72,585
597,767 2020-09-10 building 72,743
794,777 2015-04-03 person 74,797
591,738 2008-07-15 person 75,256
209,719 1978-06-13 building 76,462
608,767 1970-12-19 building 79,107
591,816 1995-03-20 building 79,390

TIP

Diese Ergebnisse sind in Vektoreinbettungen, die Sie verwenden können, um die ursprünglichen Daten anhand der id der Ergebnisse abzurufen.

Nicht nur können wir Daten mithilfe einer Vektorsuche (unter Verwendung von Vektoreinbettungen) abfragen, sondern wir können auch SQL-Abfragen mithilfe einer Kombination aus strukturierten und Vektordaten ausführen, wie die folgenden Code-Snippets beschreiben:

  • Python
  • SQL
 # Das Ergebnis der Abfrage abrufen.
result = client.query(f"""
SELECT id, date, label, 
    distance(data, {target_row_data}) as dist
    FROM default.myscale_categorical_search WHERE toYear(date) >= 2000 AND label = 'animal'
    ORDER BY dist LIMIT 10
""")
# Iterieren Sie durch die Zeilen des Abfrageergebnisses und geben Sie die 'id', 'date',
# 'label' und die Entfernung für jede Zeile aus.
for row in result.named_results():
    print(row["id"], row["date"], row["label"], row["dist"])

Die Ergebnismenge mit den zehn ähnlichsten Ergebnissen lautet wie folgt:

id date label dist
601,326 2001-05-09 animal 83,481
406,181 2004-12-18 animal 93,655
13,369 2003-01-31 animal 95,158
209,834 2031-01-24 animal 97,258
10,216 2011-08-02 animal 103,297
605,180 2009-04-20 animal 103,839
21,768 2021-01-27 animal 105,764
1,988 2000-03-02 animal 107,305
598,464 2003-01-06 animal 109,670
200,525 2024-11-06 animal 110,029