# Guía de inicio rápido

Esta guía te mostrará cómo lanzar un clúster, importar datos y ejecutar consultas SQL en unos simples pasos. Puedes encontrar más información sobre otras herramientas para desarrolladores, como el Cliente de Python, en la sección de Herramientas para Desarrolladores.

# Cómo Lanzar Tu Primer Clúster

Lanzar un primer clúster

Antes de realizar cualquier operación de datos, necesitas lanzar un clúster. La página de Clústers te permite crear un clúster y configurar los recursos de cómputo y almacenamiento según tus necesidades.

Sigue estos pasos para lanzar un nuevo clúster:

  • Ve a la página de Clústers y haz clic en el botón +Nuevo Clúster para lanzar un nuevo clúster.
  • Nombra tu clúster.
  • Haz clic en Lanzar para ejecutar el clúster.

TIP

La capa de desarrollo de MyScale está limitada a la configuración predeterminada y no admite réplicas múltiples. Consulta la sección Cambiar tu Plan de Facturación y actualiza al plan estándar para obtener una configuración más potente.

# Configuración del Entorno

Tienes la opción de conectarte a una base de datos de MyScale utilizando una de las siguientes herramientas para desarrolladores:

Sin embargo, vamos a utilizar Python para comenzar.

# Usando Python

Antes de comenzar con Python, necesitas instalar el cliente de ClickHouse (opens new window), como se describe en el siguiente script de shell:

pip install clickhouse-connect

Una vez que el cliente de ClickHouse se haya instalado correctamente, el siguiente paso es conectarse a tu clúster de MyScale desde una aplicación de Python proporcionando los siguientes detalles:

  • Host del clúster
  • Nombre de usuario
  • Contraseña

Para encontrar estos detalles, ve a la página de Clústers de MyScale, haz clic en el enlace desplegable Acción y selecciona Detalles de Conexión.

Acciones

Como se muestra en la siguiente imagen, se mostrará un cuadro de diálogo Detalles de Conexión con el código necesario para acceder a MyScale. Haz clic en el icono de copiar para copiar el código correspondiente y pégalo en tu aplicación de Python.

Python

TIP

Consulta Detalles de Conexión para obtener más información sobre cómo conectarte a tu clúster de MyScale.

# Usando la Consola de MyScale

Para utilizar la consola de MyScale para importar datos en tu base de datos y ejecutar consultas, ve a la página de Espacio de Trabajo SQL. Tu clúster se seleccionará automáticamente, como se muestra a continuación:

Ingresa a la página de Espacio de Trabajo SQL

# Cómo Importar Datos en la Base de Datos

Sigue estos pasos para importar datos en MyScale:

# Crear una Tabla

Crear una tabla de base de datos en MyScale antes de importar cualquier dato es obligatorio.

TIP

Para obtener más información, ve al documento que describe cómo Crear una Base de Datos y cómo Crear una Tabla en la sección de Referencia SQL.

Utilizando los siguientes ejemplos de código, escribamos una declaración SQL (tanto en Python como en SQL) para crear una nueva tabla llamada default.myscale_categorical_search.

  • Python
  • SQL
# Crear una tabla con vectores de 128 dimensiones.
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""")

# Insertar Datos en la Tabla

TIP

MyScale admite la importación de datos desde Amazon S3 y otros servicios en la nube utilizando API compatibles con S3. Consulta la función de tabla s3 para obtener más información sobre cómo importar datos desde Amazon S3.

Como se describe en los siguientes fragmentos de código, usemos SQL para importar datos en la tabla default.myscale_categorical_search.

Los formatos de archivo admitidos incluyen:

TIP

Consulta Formatos para Datos de Entrada y Salida (opens new window) para obtener una descripción detallada de todos los formatos admitidos.

  • 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)'
    )""")

# Construir un Índice Vectorial

Además de crear índices tradicionales en datos estructurados, también puedes crear un Índice Vectorial en MyScale para incrustaciones vectoriales. Sigue esta guía paso a paso para ver cómo:

# Crear un Índice Vectorial MSTG

Como muestran los siguientes fragmentos de código, el primer paso es crear un índice vectorial MSTG, un índice vectorial que utiliza nuestro algoritmo propietario, MSTG.

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

TIP

El tiempo de construcción del índice depende del tamaño de la importación de datos.

# Verificar el estado de construcción del índice vectorial

Los siguientes fragmentos de código describen cómo usar SQL para verificar el estado de construcción del índice vectorial.

  • Python
  • SQL
# Consultar la tabla del sistema 'vector_indices' para verificar el estado de la creación del índice.
get_index_status="SELECT status FROM system.vector_indices WHERE table='myscale_categorical_search'"
# Imprimir el estado de la creación del índice. El estado será 'Built' si el índice se creó correctamente.
print(f"El estado de construcción del índice es {client.command(get_index_status)}")

La salida se muestra en los siguientes ejemplos:

  • Python
  • SQL
El estado de construcción del índice es Built

TIP

Consulte la Búsqueda vectorial para obtener más información sobre los índices vectoriales.

# Ejecución de consultas SQL

Una vez que haya importado datos en una tabla MyScale y haya construido un índice vectorial, puede consultar los datos utilizando los siguientes tipos de búsqueda:

TIP

El beneficio más significativo de construir un índice vectorial MSTG es su velocidad de búsqueda extremadamente rápida.

# Búsqueda vectorial

Convencionalmente, se consultan textos o imágenes, como "un coche azul" o imágenes de un coche azul. Sin embargo, MyScale trata todas las consultas como vectores y devuelve una respuesta a la consulta basada en la similitud ("distancia") entre la consulta y los datos existentes en la tabla.

Utilice los siguientes fragmentos de código para recuperar datos utilizando un vector como consulta:

  • Python
  • SQL
 # seleccionar una fila aleatoria de la tabla como objetivo
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("elemento seleccionado actualmente id={}, etiqueta={}, fecha={}".format(target_row_id, target_row_label, target_row_date))
# Obtener el resultado de la consulta.
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
""")
# Iterar a través de las filas del resultado de la consulta e imprimir el 'id', 'date',
# 'label' y distancia para cada fila.
print("Top 10 candidatos:")
for row in result.named_results():
    print(row["id"], row["date"], row["label"], row["dist"])

El conjunto de resultados que contiene los diez resultados más similares es el siguiente:

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

Estos resultados son incrustaciones vectoriales, que puede utilizar para recuperar los datos originales haciendo referencia al id de los resultados.

# Búsqueda filtrada

No solo podemos consultar datos utilizando una búsqueda vectorial (usando incrustaciones vectoriales), sino que también podemos ejecutar consultas SQL utilizando una combinación de datos estructurados y vectoriales, como se describe en los siguientes fragmentos de código:

  • Python
  • SQL
 # Obtener el resultado de la consulta.
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
""")
# Iterar a través de las filas del resultado de la consulta e imprimir el 'id', 'date',
# 'label' y distancia para cada fila.
for row in result.named_results():
    print(row["id"], row["date"], row["label"], row["dist"])

El conjunto de resultados que contiene los diez resultados más similares es el siguiente:

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