Dolt: Un GIT para la creación, gestión y mantenimento de Bases de Datos

Dolt es una base de datos SQL que puedes clonar, bifurcar, fusionar, empujar o extraer como si de un repositorio de git se tratase

.

Puedes conectarte a Dolt como a cualquier base de datos MySQL, siempre que necesites ejecutar o actualizar los datos usando comandos SQL o bien, si requieres realizar consultas dentro de la propia base de datos.

Puedes utilizar la interfaz de línea de comandos para importar archivos CSV, confirmar tus cambios, enviarlos a través de control remoto o fusionar cambios con compañeros de trabajo.

Todos los comandos que conoces para Git funcionan exactamente igual para Dolt. Los archivos de versiones de Git, se convierten en tablas de versiones de Dolt.

¡Dol, es exactamente como si Git y MySQL hubiesen tenido un bebé! ?

Además, los creadores del proyecto de Dolt, también han creado DoltHub, un lugar en el que compartir las bases de datos de Dolt.

Por lo que, ¡Vas a poder hospedar tus datos de forma pública y gratuita!

Los comandos válidos para dolt son los siguientes.

Comandos de DOLT

  • init: Crea un repositorio de datos de Dolt vacío.
  • status: Muestra el estado del árbol de trabajo.
  • add: Agrega cambios de tabla a la lista de cambios de tabla por etapas.
  • reset: Elimina los cambios de la tabla de la lista de cambios de la tabla por etapas.
  • commit: Registra los cambios en el repositorio.
  • sql: Ejecuta una consulta SQL en las tablas del repositorio
  • sql-server: Inicia un servidor compatible con MySQL.
  • log: Muestra los registros de confirmación.
  • diff: Diferencia de una tabla.
  • blame: Muestra qué revisión y autor modificó por última vez cada fila de una tabla.
  • merge: Fusiona una rama.
  • branch: Crear, enumerar, edite, eliminar ramas.
  • tag: Crear, enumerar, eliminar etiquetas.
  • checkout – Verifica una rama o sobrescriba una tabla de HEAD.
  • remote: administre un conjunto de repositorios rastreados.
  • push: Empuje hacia un control remoto dolt.
  • pull: Obtener de un repositorio de datos remoto dolt y fusionar.
  • fetch: actualiza la base de datos desde un repositorio de datos remoto.
  • clone: Clona desde un repositorio de datos remoto.
  • creds: Comandos para administrar credenciales.
  • login: Iniciar sesión en un host remoto de dolt.
  • version: Muestra la versión actual de la Cli de Dolt.
  • config: Muestra la configuración de Dolt.
  • ls: Enumera las tablas en el conjunto de trabajo.
  • schema: Comandos para mostrar e importar esquemas de tabla.
  • table: Comandos para copiar, renombrar, eliminar y exportar tablas.
  • conflics: Comandos para ver y resolver conflictos de extracciones.
  • migrate: Ejecuta una migración de repositorio para actualizar al formato más reciente.
  • read-tables: Recupera la (s) tabla (s) de una confirmación específica en un nuevo repositorio de Dolt.
  • gc: Limpia los datos no referenciados del repositorio.

¿Cómo instalar DOT?

Para instalar en sistemas basado en Linux o Mac, ejecute este comando en su terminal:

sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'

Esto descargará la última dolt versión y la colocará /usr/local/bin/ , que probablemente esté en su archivo $PATH .

¿Cómo instalar desde Homebrew?

Dolt está en Homebrew, actualizado en cada lanzamiento.

brew install dolt

¿Cómo instalar en Windows?

Descargar la última Microsoft Installer (el archivo .msi ) en los comunicados y ejecutarlo. ¡Próximamente lanzamientos del administrador de paquetes!

Para obtener información sobre la ejecución en Windows, consulta aquí .

El código fuente

Asegúrate de tener Go instalado, y con go . Clona el repositorio y cd en el directorio de go . Entonces corre:

go install ./cmd/dolt

Configuración de DOLT

Verifica que la instalación se haya realizado correctamente ejecutando el comando dolt en la terminal.

$ dolt
Valid commands for dolt are
[...]

Configura dolt con tu nombre de usuario y correo electrónico, los mismos datos que vas a necesitar para crear “commits”. Los comandos funcionan exactamente igual que en git.

$ dolt config --global --add user.email [email protected]
$ dolt config --global --add user.name "tu nombre"

Empezando con DOLT

Creamos nuestro primer repositorio, por ejemplo, almacenando datos de población del estado.

$ mkdir state-pops
$ cd state-pops

Ejecuta dolt init para configurar un nuevo repositorio en dolt tal y como lo harías en git. Luego, ejecuta algunas consultas SQL para insertar los datos.

$ dolt init
Successfully initialized dolt data repository.
$ dolt sql -q "create table state_populations ( state varchar(14), population int, primary key (state) )"
$ dolt sql -q "show tables"
+-------------------+
| tables            |
+-------------------+
| state_populations |
+-------------------+
$ dolt sql -q "insert into state_populations (state, population) values
('Delaware', 59096),
('Maryland', 319728),
('Tennessee', 35691),
('Virginia', 691937),
('Connecticut', 237946),
('Massachusetts', 378787),
('South Carolina', 249073),
('New Hampshire', 141885),
('Vermont', 85425),
('Georgia', 82548),
('Pennsylvania', 434373),
('Kentucky', 73677),
('New York', 340120),
('New Jersey', 184139),
('North Carolina', 393751),
('Maine', 96540),
('Rhode Island', 68825)"
Query OK, 17 rows affected

Puedes usar dolt sql para saltar a un shell SQL o ejecutar consultas únicas con la opción -q .

$ dolt sql -q "select * from state_populations where state = 'New York'"
+----------+------------+
| state    | population |
+----------+------------+
| New York | 340120     |
+----------+------------+

Agregar las nuevas tablas con add y lanzar agregados con commit , cada comando coincide exactamente con los comandos de git pero con tablas en lugar de archivos.

$ dolt add .
$ dolt commit -m "initial data"
$ dolt status
On branch master
nothing to commit, working tree clean

Actualiza las tablas con los demás comandos de SQL, pero está vez utilizando el shell:

$ dolt sql
# Welcome to the DoltSQL shell.
# Statements must be terminated with ';'.
# "exit" or "quit" (or Ctrl-D) to exit.
state_pops> update state_populations set population = 0 where state like 'New%';
Query OK, 3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
state_pops> exit
Bye

Puedes ver los cambios con dolt diff :

$ dolt diff
diff --dolt a/state_populations b/state_populations
--- a/state_populations @ qqr3vd0ea6264oddfk4nmte66cajlhfl
+++ b/state_populations @ 17cinjh5jpimilefd57b4ifeetjcbvn2
+-----+---------------+------------+
|     | state         | population |
+-----+---------------+------------+
|  <  | New Hampshire | 141885     |
|  >  | New Hampshire | 0          |
|  <  | New Jersey    | 184139     |
|  >  | New Jersey    | 0          |
|  <  | New York      | 340120     |
|  >  | New York      | 0          |
+-----+---------------+------------

Confirma los cambios una vez más con dolt add y dolt commit .

$ dolt add state_populations
$ dolt commit -m "More like Old Jersey"

Puedes ver el historial del repositorio con dolt log .

% dolt log
commit babgn65p1r5n36ao4gfdj99811qauo8j
Author: Zach Musgrave <[email protected]>
Date:   Wed Nov 11 13:42:27 -0800 2020
More like Old Jersey
commit 9hgk7jb7hlkvvkbornpldcopqh2gn6jo
Author: Zach Musgrave <[email protected]>
Date:   Wed Nov 11 13:40:53 -0800 2020
initial data
commit 8o8ldh58pjovn8uvqvdq2olf7dm63dj9
Author: Zach Musgrave <[email protected]>
Date:   Wed Nov 11 13:36:24 -0800 2020
Initialize data repository

Importando datos con DOLT

Si tienes datos en archivos planos como CSV o JSON, puedes importarlos usando el comando dolt table import . Usa dolt table import -u para agregar datos a una tabla ya existente o dolt table import -c si deseas crear una nueva.

$ head -n3 data.csv
state,population
Delaware,59096
Maryland,319728
$ dolt table import -c -pk=state state_populations data.csv

Bifurcar y fusionar con DOLT

Al igual que con git, es una buena idea realizar los cambios en tu propia rama y luego fusionarlos con la rama master . El comando dolt checkout funciona exactamente igual que git checkout .

$ dolt checkout -b <branch>

El comando merge también funciona igual.

$ dolt merge <branch>

Trabajar con controles remotos

Dolt admite controles remotos como git, los controles remotos se configuran automáticamente cuando clonas los datos.

$ dolt clone dolthub/corona-virus
...
$ cd corona-virus
$ dolt remote -v
origin https://doltremoteapi.dolthub.com/dolthub/corona-virus

Para enviar a un control remoto, necesitarás las credenciales necesarias. Ejecutando dolt login podrás abrir un navegador para iniciar sesión y almacenar en caché tus credenciales locales.

Puede iniciar sesión en DoltHub con tu cuenta de Google, tu cuenta de Github o con un nombre de usuario y contraseña.

$ dolt login

Si tiene un repositorio que creó localmente y ahora desea enviarlo a un control remoto, agregue un control remoto exactamente como lo haría con git.

$ dolt remote add origin myname/myRepo
$ dolt remote -v
origin https://doltremoteapi.dolthub.com/myname/myRepo

Y luego empújalo.

$ dolt push origin master

Otros mandos a distancia

dolt

también admite controles remotos basados en directorio, aws y gcs:

  • archivo: use un directorio en su máquina
dolt remote add <remote> file:///Users/xyz/abs/path/
  • aws: use un depósito S3
dolt remote add <remote> aws://dynamo-table:s3-bucket/database
  • gs: usar un depósito de GCS
dolt remote add <remote> gs://gcs-bucket/database

Conjuntos de datos interesantes para clonar

DoltHub

tiene muchos conjuntos de datos interesantes para explorar y clonar. Estos son algunos de nuestros favoritos.

  • Coronavirus: https://www.dolthub.com/repositories/dolthub/corona-virus
  • WordNet: https://www.dolthub.com/repositories/dolthub/word-net
  • ImageNet: https://www.dolthub.com/repositories/dolthub/image-net
  • Imágenes abiertas de Google: https://www.dolthub.com/repositories/dolthub/open-images
  • Clasificación del iris: https://www.dolthub.com/repositories/dolthub/classified-iris-measurements
  • Días festivos: https://www.dolthub.com/repositories/oscarbatori/holidays
  • Dirección IP al país: https://www.dolthub.com/repositories/dolthub/ip-to-country

Más documentación

¡Hay mucho más en Dolt de lo que cabe en un archivo README! Para obtener la documentación completa, consulte los documentos en DoltHub . Algunos de los temas que no cubrimos aquí:

Relacionados