> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Embeddable es un kit de herramientas para desarrolladores que permite crear experiencias de analítica rápidas, interactivas y totalmente personalizadas directamente en tu aplicación.

# Conectar Embeddable con ClickHouse

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            Community Maintained
        </div>;
};

En [Embeddable](https://embeddable.com/) defines [Modelos de datos](https://docs.embeddable.com/data-modeling/introduction) y [Componentes](https://docs.embeddable.com/development/introduction) mediante código (almacenado en tu propio repositorio de código) y utilizas nuestro **SDK** para ponerlos a disposición de tu equipo en el potente **constructor no-code** de Embeddable.

El resultado final es que puedes ofrecer analíticas rápidas e interactivas orientadas al cliente directamente en tu producto; diseñadas por tu equipo de producto; desarrolladas por tu equipo de ingeniería; y mantenidas por tus equipos de atención al cliente y de datos. Exactamente como debe ser.

La seguridad integrada a nivel de fila garantiza que cada usuario solo vea exactamente los datos que tiene permiso para ver. Además, dos niveles de caché totalmente configurables te permiten ofrecer analíticas rápidas y en tiempo real a gran escala.

<div id="1-gather-your-connection-details">
  ## 1. Reúne los datos de conexión
</div>

Para conectarse a ClickHouse con HTTP(S), necesita esta información:

| Parámetro(s)              | Descripción                                                                                                                       |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `HOST` and `PORT`         | Normalmente, el puerto es 8443 cuando se usa TLS o 8123 cuando no se usa TLS.                                                     |
| `DATABASE NAME`           | De forma predeterminada, existe una base de datos llamada `default`; use el nombre de la base de datos a la que desea conectarse. |
| `USERNAME` and `PASSWORD` | De forma predeterminada, el nombre de usuario es `default`. Use el nombre de usuario adecuado para su caso de uso.                |

Los detalles de su servicio de ClickHouse Cloud están disponibles en la consola de ClickHouse Cloud.
Seleccione un servicio y haga clic en **Connect**:

<Image img="/images/_snippets/cloud-connect-button.png" size="md" alt="Botón Connect del servicio de ClickHouse Cloud" border />

Elija **HTTPS**. Los detalles de conexión se muestran en un comando `curl` de ejemplo.

<Image img="/images/_snippets/connection-details-https.png" size="md" alt="Detalles de conexión HTTPS de ClickHouse Cloud" border />

Si usa ClickHouse autogestionado, los detalles de conexión los establece su administrador de ClickHouse.

<div id="2-create-a-clickhouse-connection-type">
  ## 2. Crear un tipo de conexión de ClickHouse
</div>

Añada una conexión a la base de datos mediante la Embeddable API. Esta conexión se utiliza para conectarse a su servicio de ClickHouse. Puede añadir una conexión mediante la siguiente llamada a la API:

```javascript title="Query" theme={null}
// por razones de seguridad, esto *nunca* debe llamarse desde el lado del cliente
fetch('https://api.embeddable.com/api/v1/connections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${apiKey}` /* mantén tu API key segura */,
  },
  body: JSON.stringify({
    name: 'my-clickhouse-db',
    type: 'clickhouse',
    credentials: {
      host: 'my.clickhouse.host',
      user: 'clickhouse_user',
      port: 8443,
      password: '*****',
    },
  }),
});
```

```text title="Response" theme={null}
Status 201 { errorMessage: null }
```

Lo anterior representa una acción `CREATE`, pero están disponibles todas las operaciones `CRUD`.

La `apiKey` se puede encontrar haciendo clic en "**Publish**" en uno de tus dashboards de Embeddable.

El `name` es un nombre único para identificar esta conexión.

* De forma predeterminada, tus modelos de datos buscarán una conexión llamada "default", pero puedes proporcionar a tus modelos distintos nombres de `data_source` para permitir que diferentes modelos de datos se conecten a distintas conexiones (solo tienes que especificar el nombre de data\_source en el modelo)

El `type` le indica a Embeddable qué driver debe usar

* Aquí querrás usar `clickhouse`, pero puedes conectar varias fuentes de datos diferentes a un mismo espacio de trabajo de Embeddable, por lo que también podrías usar otras como: `postgres`, `bigquery`, `mongodb`, etc.

Las `credentials` son un objeto de JavaScript que contiene las credenciales necesarias que espera el driver

* Estas se cifran de forma segura y solo se usan para recuperar exactamente los datos que has descrito en tus modelos de datos.
  Embeddable te recomienda encarecidamente que crees un usuario de base de datos de solo lectura para cada conexión (Embeddable solo leerá de tu base de datos, no escribirá en ella).

Para permitir la conexión a diferentes bases de datos para prod, qa, test, etc. (o para usar diferentes bases de datos para distintos clientes), puedes asignar cada conexión a un entorno (consulta la [API de Environments](https://docs.embeddable.com/data/environments)).
