Saltar al contenido principal

Anunciamos la compatibilidad en vista previa con TiDB

· 4 min de lectura
[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Ya anunciamos anteriormente el nuevo motor de migraciones de Ent: Atlas.
Gracias a Atlas, es más fácil que nunca añadir soporte para nuevas bases de datos en Ent.
Hoy me complace anunciar que ya está disponible la compatibilidad en vista previa con TiDB, usando la última versión de Ent con Atlas activado.

Ent permite acceder a datos en múltiples tipos de bases de datos, tanto orientadas a grafos como relacionales.
Habitualmente, los usuarios emplean bases de datos relacionales estándar de código abierto como MySQL, MariaDB y PostgreSQL.
Cuando los equipos que desarrollan aplicaciones basadas en Ent crecen y necesitan manejar tráfico a mayor escala, estas bases de datos de nodo único suelen convertirse en un cuello de botella para escalar.
Por este motivo, muchos miembros de la comunidad de Ent han solicitado soporte para bases de datos NewSQL como TiDB.

TiDB

TiDB es una base de datos NewSQL de código abierto. Ofrece características que las bases de datos tradicionales no tienen, como:

  1. Escalado horizontal: Durante años, los arquitectos de software tuvieron que elegir entre las garantías de las bases relacionales y la escalabilidad horizontal de las bases NoSQL (como MongoDB o Cassandra). TiDB permite escalado horizontal manteniendo alta compatibilidad con funciones de MySQL.

  2. HTAP (Procesamiento Híbrido Transaccional/Analítico): Tradicionalmente, las bases de datos se dividían en analíticas (OLAP) y transaccionales (OLTP). TiDB rompe esta dicotomía permitiendo ambas cargas de trabajo en la misma base.

  3. Monitorización preconfigurada con Prometheus+Grafana: TiDB está construido con paradigmas cloud-native desde sus cimientos y soporta nativamente la pila de observabilidad estándar de CNCF.

Para más información, consulta la Introducción oficial a TiDB.

Hola Mundo con TiDB

Para una aplicación rápida "Hola Mundo" con Ent+TiDB, sigue estos pasos:

  1. Levanta un servidor TiDB local con Docker:
 docker run -p 4000:4000 pingcap/tidb

Ahora deberías tener una instancia de TiDB funcionando en el puerto 4000.

  1. Clona el repositorio de ejemplo hello world:
 git clone https://github.com/hedwigz/tidb-hello-world.git

En este repositorio hemos definido un esquema simple User:

ent/schema/user.go
 func (User) Fields() []ent.Field {
return []ent.Field{
field.Time("created_at").
Default(time.Now),
field.String("name"),
field.Int("age"),
}
}

Luego conectamos Ent con TiDB:

main.go
 client, err := ent.Open("mysql", "root@tcp(localhost:4000)/test?parseTime=true")
if err != nil {
log.Fatalf("failed opening connection to tidb: %v", err)
}
defer client.Close()
// Run the auto migration tool, with Atlas.
if err := client.Schema.Create(context.Background(), schema.WithAtlas(true)); err != nil {
log.Fatalf("failed printing schema changes: %v", err)
}
```

Observa que en la línea `1` nos conectamos usando el dialecto `mysql`, posible porque TiDB es [compatible con MySQL](https://docs.pingcap.com/tidb/stable/mysql-compatibility) y no requiere drivers especiales.
Existen diferencias entre TiDB y MySQL, especialmente en migraciones de esquemas como inspección del information_schema y planificación. Por esto, `Atlas` detecta automáticamente si está conectado a `TiDB` y adapta las migraciones.
Además, en la línea `7` usamos `schema.WithAtlas(true)`, que activa `Atlas` como motor de migraciones de Ent.

Finalmente, creamos un usuario y guardamos el registro en TiDB para luego consultarlo e imprimirlo.

```go title="main.go"
client.User.Create().
SetAge(30).
SetName("hedwigz").
SaveX(context.Background())
user := client.User.Query().FirstX(context.Background())
fmt.Printf("the user: %s is %d years old\n", user.Name, user.Age)
  1. Ejecuta el programa de ejemplo:
 $ go run main.go
the user: hedwigz is 30 years old

¡Woohoo! En este rápido tutorial hemos logrado:

  • Levantar una instancia local de TiDB.

  • Conectar Ent con TiDB.

  • Migrar nuestro esquema de Ent con Atlas.

  • Insertar y consultar datos en TiDB usando Ent.

Soporte en vista previa

La integración de Atlas con TiDB está bien probada con la versión v5.4.0 de TiDB (la latest en el momento de redactar) y ampliaremos este soporte en el futuro. Si usas otras versiones de TiDB o necesitas ayuda, no dudes en abrir un issue o unirte a nuestro canal de Discord.

[Para más noticias y actualizaciones de Ent:]