Cloud Spanner en DBeaver

Google Cloud Spanner es un servicio de base de datos relacional, escalable y totalmente administrado para datos de aplicaciones regionales y globales. Es el primer servicio de base de datos escalable, de nivel empresarial, distribuido globalmente y fuertemente consistente creado para la nube específicamente para combinar los beneficios de la estructura de base de datos relacional con la escala horizontal no relacional.

Una de las ventajas de trabajar con una base de datos relacional es el gran conjunto de herramientas estándar disponibles. Cloud Spanner incluye un controlador JDBC que se agregó como una extensión a DBeaver . Esto significa que puede consultar y actualizar datos en una base de datos de Cloud Spanner con DBeaver sin la necesidad de instalar controladores manualmente. El controlador JDBC también incluye una serie de declaraciones SQL adicionales muy útiles que puede usar para trabajar de manera eficiente con Cloud Spanner.

En este artículo, se proporciona una lista de sugerencias y prácticas recomendadas al trabajar con Cloud Spanner a través de una interfaz SQL genérica como DBeaver. La mayoría de las sugerencias de este artículo también se pueden utilizar en otras aplicaciones que usan el controlador JDBC para conectarse a Cloud Spanner.

Crear una conexión en DBeaver

DBeaver 7.1.3 y versiones posteriores incluyen el controlador JDBC de Cloud Spanner. Siga estos pasos para crear una conexión:

  1. Haga clic en Nueva conexión de base de datos
  2. Seleccione el controlador de Google Spanner (no el controlador de Google Spanner (Comunidad))
  3. Ingrese el ID del proyecto, el ID de la instancia, el ID de la base de datos y seleccione un archivo de clave de credenciales válido.

Procesamiento por lotes de declaraciones DDL

Cloud Spanner admite declaraciones DDL estándar para crear y modificar tablas e índices. Se recomienda encarecidamente agrupar varias declaraciones DDL cuando necesite ejecutar varias declaraciones seguidas. Este suele ser el caso cuando crea o modifica una base de datos de prueba. La velocidad de ejecución total de un lote de declaraciones DDL es mucho menor que cuando cada declaración se ejecuta individualmente. Utilice las sentencias START BATCH DDL y RUN BATCH para ejecutar un lote de DDL.

Procesamiento por lotes de declaraciones DML

Cloud Spanner permite agrupar varias declaraciones DML en una sola llamada a procedimiento remoto. El uso de esta función reduce el tiempo total de ejecución de un conjunto de declaraciones. Esta función es muy similar a la función de lotes DDL que se muestra arriba.

Ejecución de declaraciones DML particionadas

Cloud Spanner permite un máximo de 20,000 mutaciones en una sola transacción de lectura / escritura. A veces es necesario ejecutar transacciones más grandes. Para ello, Cloud Spanner admite los estados DML particionados. Las declaraciones DML particionadas también son compatibles con el controlador JDBC. El controlador JDBC debe estar en modo de confirmación automática para ejecutar DML particionado.

Transacciones de solo lectura

Cloud Spanner admite transacciones de solo lectura que ofrecen lecturas consistentes sin realizar bloqueos. El modo de obsolescencia predeterminado cuando se ejecuta una transacción de solo lectura es fuerte. Eso significa que todos los datos que se confirmaron cuando se inició la transacción de solo lectura serán visibles para la transacción. Puede elegir un modo de obsolescencia diferente si desea leer datos obsoletos.

Conexión al emulador

Cloud Spanner también ofrece un emulador local que se puede usar con fines de prueba y desarrollo. La conexión al emulador mediante JDBC (o DBeaver) se ha hecho lo más fácil posible en la versión 2.0.0 del controlador Spanner JDBC y posterior mediante la adición de la propiedad autoConfigEmulatorconnection. Establecer esta propiedad en indicará al controlador JDBC que haga lo siguiente:

  1. Utilice el puerto y el host del emulador predeterminados (localhost: 9010), a menos que se haya especificado un host y un puerto específicos en la cadena de conexión. La conexión también desactivará automáticamente SSL, ya que el emulador no lo admite.
  2. La instancia y la base de datos a las que se hace referencia en la cadena de conexión se crearán automáticamente en el emulador si aún no existen.

Lo anterior significa que la cadena de conexión jdbc: cloudspanner: / projects / test-project / instances / test-instance /bases / test-database? AutoConfigEmulator = true automáticamente:

  1. Conectarse a localhost: 9010
  2. Desactivar SSL
  3. Cree una instancia de prueba y una base de datos de prueba si alguno de estos no existe

Pasos para conectarse al emulador en DBeaver

Siga estos pasos para conectarse al emulador de Cloud Spanner en DBeaver:

  1. Inicie el emulador de Google Cloud Spanner con la configuración predeterminada con la CLI de gcloud o la imagen de Docker.
  2. Asegúrese de tener la versión 2.0.0 o posterior del controlador JDBC de Google Cloud Spanner instalado en DBeaver. Para ello, haga clic en el elemento de menú Base de datos | Driver Manager y luego haga doble clic en el nombre del controlador de Google Spanner (o Google Cloud Spanner, el nombre depende de la versión de DBeaver). Haga clic en el botón Descargar / Actualizar y actualice el controlador a la última versión.
  3. Haga clic en Nueva conexión de base de datos en DBeaver y seleccione el controlador Google (Cloud) Spanner.
  4. Introduzca un valor para Proyecto, Instancia y Base de datos (por ejemplo, proyecto de prueba, instancia de prueba, base de datos de prueba). Deje vacío el campo Ruta de la clave privada.
  5. Haga clic en la pestaña Propiedades del controlador y cambie el valor de la propiedad de conexión autoConfigEmulator a verdadero.
  6. Haga clic en Finalizar. DBeaver ahora se conectará al emulador que inició en el paso 1, y si la instancia y la base de datos aún no existían, estas se habrán creado automáticamente en el emulador.
Establezca autoConfigEmulator en verdadero

Tenga en cuenta que cuando usa autoConfigEmulator, no necesita establecer ninguna de las siguientes propiedades:

  1. No es necesario establecer el nombre de host o el número de puerto en la cadena de conexión (siempre que el emulador esté usando el host predeterminado y el número de puerto localhost: 9010)
  2. No es necesario establecer la variable de entorno SPANNER_EMULATOR_HOST.
  3. No es necesario establecer la propiedad de conexión usePlainText.
  4. No es necesario configurar ninguna credencial.

Cloud Spanner en DBeaver se publicó originalmente en Google Cloud - Community on Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.