Consultas federadas de Cloud SQL

En esta página, se describe cómo consultar datos en Cloud SQL desde BigQuery mediante consultas federadas.

Descripción general

La federación de Cloud SQL en BigQuery permite que BigQuery consulte datos que se encuentran en Cloud SQL en tiempo real sin copiarlos ni moverlos. La Federación de consultas admite instancias de MySQL (segunda generación) y PostgreSQL en Cloud SQL.

Después de la configuración inicial única, puedes escribir una consulta con la función SQL EXTERNAL_QUERY ().

Antes de comenzar

Habilita el servicio de conexión de BigQuery

  1. Abre la página API de conexión de BigQuery en la biblioteca de API.
  2. En el menú desplegable, selecciona el proyecto que contenga la fuente de datos externa.
  3. Haz clic en el botón HABILITAR.

    API de conexión de BigQuery

Cuenta de servicio

La cuenta de servicio se crea automáticamente cuando habilitas la API de conexión de BigQuery. Cuando habilitas la API de conexión de BigQuery en un proyecto que tiene tu fuente de datos de Cloud SQL, se aplican las siguientes funciones:

Función Descripción
cloudsql.client Conectarse a una instancia de Cloud SQL
logging.logWriter Escribir en el registro en la nube
metrics.metricWriter Escribir en la supervisión en la nube

Para obtener más información sobre las cuentas de servicio, consulta Agentes de servicio.

IP pública

La federación de Cloud SQL en BigQuery solo admite instancias de Cloud SQL con conectividad de IP pública. Configura la conectividad de IP pública para tu instancia de Cloud SQL.

Configura conexiones de base de datos de Cloud SQL

Una vez que la API de conexión de BigQuery esté habilitada, crea una conexión a la base de datos de Cloud SQL.

Console

  1. Para crear un recurso de conexión, ve a la página de BigQuery en Cloud Console.

    Ir a la página de BigQuery

  2. En el menú Agregar datos (Add data), selecciona Fuentes de datos externa (External data source).

    Crea un recurso de conexión.

  3. En el panel Fuente de datos externa, ingresa la siguiente información:

    • En Tipo de conexión, selecciona el tipo de fuente, por ejemplo, MySQL o Postgres.
    • En ID de conexión, ingresa un identificador para el recurso de conexión. Se permiten letras, números y guiones bajos.
    • En Ubicación de la conexión, selecciona una ubicación (o región) de BigQuery que sea compatible con la región de la fuente de datos externa.
    • En Nombre descriptivo (Friendly name), ingresa un nombre fácil de usar para la conexión, como My connection resource (opcional). El nombre descriptivo puede ser cualquier valor que te ayude a identificar el recurso de conexión si necesitas modificarlo más adelante.
    • En Descripción (Description), ingresa una descripción para este recurso de conexión (opcional).
    • Si eliges MySQL o Postgres de Cloud SQL para el tipo de conexión, haz lo siguiente:ID de la instancia de Cloud SQL, ingresa el nombre completo de la instancia de Cloud SQL, por lo general, en el formatoproject-id:location-id:instance-id. Puedes encontrar el ID de la instancia en la página de detalles de la instancia de Cloud SQL que deseas consultar.
    • En Nombre de la base de datos (Database name), ingresa el nombre de la base de datos.
    • En Nombre de usuario (Username), ingresa el nombre de usuario para la base de datos.
    • En Contraseña (Password), ingresa la contraseña para la base de datos.

      • Marca Mostrar contraseña (Show password) para revelar la contraseña (opcional).

      Recurso de conexión nuevo

  4. Haz clic en Crear conexión (Create connection).

bq

Ingresa el comando bq mk y proporciona la marca de conexión --connection. También se requieren las siguientes marcas:

  • --connection_type
  • --properties
  • --connection_credential
  • --project_id
  • --location

Las siguientes marcas son opcionales:

  • --display_name El nombre descriptivo de la conexión.
  • --description Es una descripción de la conexión.

El ID de conexión es un parámetro opcional que se puede agregar como el último argumento del comando que se usa para el almacenamiento de forma interna. Si no se proporciona un ID de conexión, se genera un ID único de forma automática. El ID de conexión puede contener letras, números y guiones bajos.

    bq mk --connection --display_name='friendly name' --connection_type=TYPE \
      --properties=PROPERTIES --connection_credential=CREDENTIALS \
      --project_id=PROJECT_ID --location=LOCATION \
      CONNECTION_ID

Reemplaza lo siguiente:

  • TYPE: Es el tipo de la fuente de datos externa.
  • PROPERTIES: Son los parámetros para la conexión creada en formato JSON. Por ejemplo: --properties='{"param":"param_value"}'. Para crear un recurso de conexión, debes proporcionar los parámetros instanceID, database y type.
  • CREDENTIALS: Son los parámetros username y password.
  • PROJECT_ID: Es el ID de tu proyecto.
  • LOCATION: Es la región en la que se encuentra tu instancia de Cloud SQL.
  • CONNECTION_ID: Es el identificador de conexión.

Por ejemplo, con el siguiente comando, se crea un recurso de conexión nuevo llamado my_new_connection (nombre descriptivo: “Mi conexión nueva”) en un proyecto con el ID federation-test.

bq mk --connection --display_name='friendly name' --connection_type='CLOUD_SQL' \
  --properties='{"instanceId":"federation-test:us-central1:mytestsql","database":"mydatabase","type":"MYSQL"}' \
  --connection_credential='{"username":"myusername", "password":"mypassword"}' \
  --project_id=federation-test --location=us my_connection_id

API

Dentro de la API de conexión de BigQuery, puedes invocar CreateConnection dentro de ConnectionService para crear una instancia de conexión. Consulta la página de la biblioteca cliente para obtener más detalles.

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

import com.google.cloud.bigquery.connection.v1.CloudSqlCredential;
import com.google.cloud.bigquery.connection.v1.CloudSqlProperties;
import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.CreateConnectionRequest;
import com.google.cloud.bigquery.connection.v1.LocationName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to create a connection with cloud MySql database
public class CreateConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    String database = "MY_DATABASE";
    String instance = "MY_INSTANCE";
    String instanceLocation = "MY_INSTANCE_LOCATION";
    String username = "MY_USERNAME";
    String password = "MY_PASSWORD";
    String instanceId = String.format("%s:%s:%s", projectId, instanceLocation, instance);
    CloudSqlCredential cloudSqlCredential =
        CloudSqlCredential.newBuilder().setUsername(username).setPassword(password).build();
    CloudSqlProperties cloudSqlProperties =
        CloudSqlProperties.newBuilder()
            .setType(CloudSqlProperties.DatabaseType.MYSQL)
            .setDatabase(database)
            .setInstanceId(instanceId)
            .setCredential(cloudSqlCredential)
            .build();
    Connection connection = Connection.newBuilder().setCloudSql(cloudSqlProperties).build();
    createConnection(projectId, location, connectionId, connection);
  }

  public static void createConnection(
      String projectId, String location, String connectionId, Connection connection)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      LocationName parent = LocationName.of(projectId, location);
      CreateConnectionRequest request =
          CreateConnectionRequest.newBuilder()
              .setParent(parent.toString())
              .setConnection(connection)
              .setConnectionId(connectionId)
              .build();
      Connection response = client.createConnection(request);
      System.out.println("Connection created successfully :" + response.getName());
    }
  }
}

Para obtener información para ver, enumerar, compartir, actualizar y borrar recursos de conexión, consulta Trabaja con conexiones.

Ejemplo

Supongamos que almacenas una tabla de clientes en BigQuery y una tabla de ventas en Cloud SQL y deseas unir las dos tablas en una sola consulta. En el siguiente ejemplo, se realiza una consulta federada a una base de datos de Cloud SQL llamada orders y se unen los resultados con una tabla de BigQuery llamada mydataset.customers.

SELECT c.customer_id, c.name, rq.first_order_date
FROM mydataset.customers AS c
LEFT OUTER JOIN EXTERNAL_QUERY(
  'us.connection_id',
  '''SELECT customer_id, MIN(order_date) AS first_order_date
  FROM orders
  GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;

La consulta de ejemplo incluye 3 partes:

  1. La ejecución de la consulta externa SELECT customer_id, MIN(order_date) AS first_order_date FROM orders GROUP BY customer_id en la base de datos operativa PostgreSQL para obtener la primera fecha del pedido de cada cliente a través de la función EXTERNAL_QUERY()
  2. La unión de la tabla de resultados de la consulta externa con la tabla de clientes en BigQuery según customer_id
  3. La selección de la información del cliente y la fecha del primer pedido

Regiones admitidas

En la siguiente tabla, se muestra qué regiones son compatibles con BigQuery y Cloud SQL.

Ubicaciones regionales

Descripción de la región Región de Cloud SQL Región de BigQuery compatible Multirregión de BigQuery compatible
América
Iowa us-central No compatible: esta región de la instancia de Cloud SQL es V1.
Las consultas federadas solo admiten instancias V2 de Cloud SQL.
Iowa us-central1 us-central1 US
Las Vegas us-west4 us-west4 US
Los Ángeles us-west2 us-west2 US
Montreal northamerica-northeast1 northamerica-northeast1 US
Virginia del Norte us-east4 us-east4 US
Oregón us-west1 us-west1 US
Salt Lake City us-west3 us-west3 US
São Paulo southamerica-east1 southamerica-east1
Carolina del Sur us-east1 us-east1 US
Toronto northamerica-northeast2 northamerica-northeast2 US
Europa
Bélgica europe-west1 europe-west1 EU
Finlandia europe-north1 europe-north1 EU
Fráncfort europe-west3 europe-west3 EU
Londres europe-west2 europe-west2 EU
Netherlands europe-west4 europe-west4 EU
Varsovia europe-central2 europe-central2 EU
Zúrich europe-west6 europe-west6 EU
Asia-Pacífico
Delhi asia-south2 asia-south2
Hong Kong asia-east2 asia-east2
Yakarta asia-southeast2 asia-southeast2
Melbourne australia-southeast2 australia-southeast2
Bombay asia-south1 asia-south1
Osaka asia-northeast2 asia-northeast2
Seúl asia-northeast3 asia-northeast3
Singapur asia-southeast1 asia-southeast1
Sídney australia-southeast1 australia-southeast1
Taiwán asia-east1 asia-east1
Tokio asia-northeast1 asia-northeast1

Ubicaciones multirregionales

Las ubicaciones multirregionales no están disponibles para las instancias de Cloud SQL. Las multirregiones de Cloud SQL no se pueden usar para consultas federadas.

Los datos que están ubicados en la multirregión EU no se almacenan en los centros de datos de europe-west2 (Londres) ni de europe-west6 (Zúrich).

Limitaciones

Las consultas federadas de Cloud SQL están sujetas a las siguientes limitaciones:

  • Rendimiento. Es probable que las consultas federadas no sean tan rápidas como las consultas solo al almacenamiento de BigQuery. BigQuery debe esperar a que la base de datos de origen ejecute la consulta externa y mueva de forma temporal los datos de la fuente de datos externa a BigQuery. Además, es posible que la base de datos de origen no esté optimizada para consultas estadísticas complejas.

  • Las consultas federadas son de solo lectura. La consulta externa que se ejecutará en la base de datos de origen debe ser de solo lectura. Por lo tanto, las declaraciones DML o DDL no son compatibles.

  • Tipos de datos no compatibles Si tu consulta externa contiene un tipo de datos que BigQuery no admite, la consulta fallará de inmediato. Puedes convertir el tipo de datos no admitido en un tipo de datos compatible diferente.

  • Instancias limitadas de Cloud SQL Las consultas federadas solo son compatibles con la instancia V2 de Cloud SQL con IP pública (en lugar de IP privada).

Cuotas y límites

Además de las cuotas y límites generales de las consultas federadas, las bases de datos de Cloud SQL tienen las siguientes limitaciones.

  • Consultas federadas entre regiones: Si la ubicación de procesamiento de consultas de BigQuery y la ubicación de la fuente de datos externa son diferentes, corresponde a una región. Puedes ejecutar hasta 1 TB en consultas entre regiones por proyecto al día. El siguiente es un ejemplo de una consulta entre regiones.
    • La instancia de Cloud SQL está en us-west1, mientras que la conexión de BigQuery se basa en la multirregión US. La ubicación de procesamiento de consultas de BigQuery es US.
  • Cuota: Los usuarios deben controlar la cuota de consultas en la fuente de datos externa, Cloud SQL. No hay un parámetro de configuración de cuota adicional para las consultas federadas. Para lograr el aislamiento de la carga de trabajo, se recomienda consultar solo una réplica de lectura de la base de datos.
  • Se aplican cuotas y limitaciones de Cloud SQL MySQL y PostgreSQL.

Referencia

Visualiza un esquema de tabla de Cloud SQL

Puedes usar la función EXTERNAL_QUERY() para consultar tablas information_schema a fin de acceder a los metadatos de la base de datos, como listas de todas las tablas en la base de datos o el esquema de la tabla. Las siguientes consultas de ejemplo de information_schema funcionan en MySQL y PostgreSQL. Puedes obtener más información sobre las tablas information_schema de MySQL y las tablas information_schema de PostgreSQL.

-- List all tables in a database.
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from information_schema.tables;");
-- List all columns in a table.
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from information_schema.columns where table_name='x';");

Detalles del recurso de conexión

Nombre de la propiedad Valor Descripción
name string Es el nombre del recurso de conexión con el formato project_id.location_id.connection_id
location string Es la ubicación de la conexión, que es la misma que la ubicación de la instancia de Cloud SQL, con las siguientes excepciones: us-central1 de Cloud SQL se mapea a de EE.UU. de BigQuery, y europe-west1 de Cloud SQL se mapea a la UE de BigQuery.
friendlyName string Es un nombre visible fácil de usar para la conexión.
description string Es la descripción de la conexión.
cloudSql.type string Puede ser “POSTGRES” o “MYSQL”.
cloudSql.instanceId string Es el nombre de la instancia de Cloud SQL, por lo general, con el siguiente formato:

Project-id:location-id:instance-id

Puedes encontrar el ID de la instancia en la página de detalles Instancias de Cloud SQL.
cloudSql.database string Es la base de datos de Cloud SQL a la que deseas conectarte.

Detalles del recurso de credencial de conexión

Nombre de la propiedad Valor Descripción
username string Nombre de usuario de la base de datos
password string Contraseña de la base de datos

Asignaciones de tipos de datos

Cuando ejecutas una consulta federada de Cloud SQL, los datos de Cloud SQL (en los tipos de datos de MySQL o PostgreSQL) se convierten en tipos de SQL estándar de BigQuery. Los siguientes mapas de tipos de datos son de MySQL a BigQuery y de PostgreSQL a BigQuery.

Debes saber la siguiente información sobre el mapa:

  • La mayoría de los tipos de datos de MySQL pueden coincidir con el mismo tipo de datos de BigQuery, con algunas excepciones, como decimal, timestamp y time.
  • PostgreSQL admite muchos tipos de datos no estándar que no son compatibles con BigQuery, por ejemplo, money, path, uuid y boxer, entre otros.
  • Los tipos de datos numéricos en MySQL y PostgreSQL se asignarán al valor de NUMERIC de BigQuery de forma predeterminada. El rango de valores NUMERIC de BigQuery es más pequeño que el de MySQL y PostgreSQL. También se puede asignar a BIGNUMERIC, FLOAT64 oSTRING con “default_type_for_decimal_columns” en opciones de EXTERNAL_QUERY.

Manejo de errores

Si tu consulta externa contiene un tipo de datos que BigQuery no admite, la consulta fallará de inmediato. Puedes convertir el tipo de datos no admitido en un tipo de datos de MySQL o PostgreSQL diferente que sea compatible.

Puedes convertir el tipo de datos no admitido en un tipo de datos MySQL o PostgreSQL compatible diferente.

  • Tipo de datos MySQL no admitido

    • Mensaje de error: Invalid table-valued function external_query Found unsupported MySQL type in BigQuery at [1:15]
    • Tipo no admitido: GEOMETRY, BIT
    • Resolución: Convierte el tipo de datos no compatible en STRING.
    • Por ejemplo: SELECT ST_AsText(ST_GeomFromText('POINT(1 1)'));; este comando convierte el tipo de datos no compatible GEOMETRY en STRING.
  • El tipo de datos de PostgreSQL no es compatible

    • Mensaje de error: Invalid table-valued function external_query Postgres type (OID = 790) is not supported now at [1:15]
    • Tipo no admitido: money, time with time zone, inet, path, pg_lsn, point, polygon, tsquery, tsvector, txid_snapshot, uuid, box, cidr, circle, interval, jsonb, line, lseg, macaddr, macaddr8
    • Resolución: Convierte el tipo de datos no admitido en STRING.
    • Por ejemplo: SELECT CAST('12.34'::float8::numeric::money AS varchar(30));; este comando convierte el tipo de datos no admitido money en STRING.

Asignación de tipos de MySQL a BigQuery

Tipo de MySQL Descripción en MySQL Tipo de BigQuery Diferencias entre los tipos
Número entero
INT 4 bytes, 2^32 - 1 INT64
TINYINT 1 byte, 2^8 - 1 INT64
SMALLINT 2 bytes, 2^16 - 1 INT64
MEDIUMINT 3 bytes, 2^24 - 1 INT64
BIGINT 8 bytes, 2^64 - 1 INT64
UNSIGNED BIGINT 8 bytes, 2^64 - 1 NUMERIC
Numérico exacto
DECIMAL (M,D) Es un decimal representado por (M,D) en el que M es la cantidad total de dígitos y D es la cantidad de decimales.
M <= 65
NUMERIC, BIGNUMERIC, FLOAT64, or STRING

DECIMAL (M,D) se asignará a NUMERIC de forma predeterminada o se puede asignar a BIGNUMERIC, FLOAT64, o a STRING con default_type_for_decimal_columns.
Numérico aproximado
FLOAT (M,D) 4 bytes, M <= 23 FLOAT64
DOUBLE (M,D) 8 bytes, M <= 53 FLOAT64
Fecha y hora
TIMESTAMP De '1970-01-01 00:00:01' UTC a '2038-01-19 03:14:07' UTC TIMESTAMP TIMESTAMP en MySQL se recupera como zona horaria UTC sin importar desde dónde llames a BigQuery.
DATETIME De “1000-01-01 00:00:00” a “9999-12-31 23:59:59”. DATETIME
DATE De “1000-01-01” a “9999-12-31” DATE
TIME Hora en formato “HH:MM:SS”
De “-838:59:59” a “838:59:59”
TIME
El intervalo de TIME en BigQuery es menor, de “00:00:00” a “23:59:59”.
YEAR INT64
Caracteres y strings
ENUM Es un objeto de string con un valor elegido de una lista de valores permitidos. STRING
CHAR (M) Es una string de longitud fija de entre 1 y 255 caracteres. STRING
VARCHAR (M) Es una string de longitud variable entre 1 y 255 caracteres. STRING
TEXT Es un campo con una longitud máxima de 65,535 caracteres. STRING
TINYTEXT Es una columna TEXT con una longitud máxima de 255 caracteres. STRING
MEDIUMTEXT Es una columna TEXT con una longitud máxima de 16,777,215 caracteres. STRING
LONGTEXT Es una columna TEXT con una longitud máxima de 4,294,967,295 caracteres. STRING
Binario
BLOB Es un objeto binario grande con una longitud máxima de 65,535 caracteres. BYTES
MEDIUM_BLOB Es un BLOB con una longitud máxima de 16,777,215 caracteres. BYTES
LONG_BLOB Es un BLOB con una longitud máxima de 4,294,967,295 caracteres. BYTES
TINY_BLOB Un BLOB con una longitud máxima de 255 caracteres BYTES
BINARY Una string binaria de longitud fija de entre 1 y 255 caracteres BYTES
VARBINARY Una string binaria de longitud variable entre 1 y 255 caracteres BYTES
Otro
SET Cuando declares la columna SET, define con anterioridad algunos valores. Luego, usa INSERT para agregar cualquier conjunto de valores predefinidos a esta columna. STRING
GEOMETRY GEOGRAPHY AÚN COMPATIBLE
BIT INT64 AÚN COMPATIBLE

Asignación de tipos de PostgreSQL a BigQuery

Nombre Descripción Tipo de BigQuery Diferencias entre los tipos
Número entero
smallint 2 bytes, de -32,768 a +32,767. INT64
smallserial Consulta smallint. INT64
integer 4 bytes, de -2,147,483,648 a +2,147,483,647. INT64
serial Consulta integer. INT64
bigint 8 bytes, de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807. INT64
bigserial Consulta bigint. INT64
Numérico exacto
numeric [ (p, s) ] Precisión hasta 1,000. NUMERIC, BIGNUMERIC, FLOAT64, or STRING numeric [ (p, s) ] se asignará a NUMERIC de forma predeterminada o se puede asignar a BIGNUMERIC, FLOAT64 o STRING con default_type_for_decimal_columns.
Decimal [ (p, s) ] Consulta numeric. NUMERIC Consulta numeric.
money 8 bytes, 2 dígitos de escala, de -92,233,720,368,547,758.08 a +92,233,720,368,547,758.07. INCOMPATIBLE
Numérico aproximado
real 4 bytes, número de punto flotante de precisión simple. FLOAT64
double precision 8 bytes, número de punto flotante de precisión doble. FLOAT64
Fecha y hora
date Es la fecha de calendario (año, mes, día). DATE
time [ (p) ] [ without time zone ] Es la hora del día (sin zona horaria). TIME
time [ (p) ] with time zone Es la hora del día con la zona horaria incluida. INCOMPATIBLE
timestamp [ (p) ] [ without time zone ] Es la fecha y la hora (sin zona horaria). DATETIME
timestamp [ (p) ] with time zone Es la fecha y la hora con la zona horaria incluida. TIMESTAMP TIMESTAMP en PostgreSQL se recupera como zona horaria UTC sin importar desde dónde llames a BigQuery.
interval Es un intervalo de tiempo. INCOMPATIBLE
Caracteres y strings
character [ (n) ] Es una string de caracteres de longitud fija. STRING
character varying [ (n) ] Es una string de caracteres de longitud variable. STRING
text Es una string de caracteres de longitud variable. STRING
Binario
bytea Son datos binarios (“arreglo de bytes”). BYTES
bit [ (n) ] Es una string de bits de longitud fija. BYTES
bit varying [ (n) ] Es una string de bits de longitud variable. BYTES
Otro
boolean Es un valor booleano lógico (verdadero o falso). BOOL
inet Es la dirección de host IPv4 o IPv6. INCOMPATIBLE
path Es la ruta geométrica en un plano. INCOMPATIBLE
pg_lsn Es el número de secuencia de registro de PostgreSQL. INCOMPATIBLE
point Es un punto geométrico en un plano. INCOMPATIBLE
polygon Es una ruta geométrica cerrada en un plano. INCOMPATIBLE
tsquery Es una consulta de búsqueda de texto. INCOMPATIBLE
tsvector Es un documento de búsqueda de texto. INCOMPATIBLE
txid_snapshot Es una instantánea del ID de transacción a nivel de usuario. INCOMPATIBLE
uuid Es un identificador único universal. INCOMPATIBLE
xml Son datos XML. STRING
box Es un cuadro rectangular en un plano. INCOMPATIBLE
cidr Es la dirección de red IPv4 o IPv6. INCOMPATIBLE
circle Es un círculo en un plano. INCOMPATIBLE
interval [ fields ] [ (p) ] Es un intervalo de tiempo. INCOMPATIBLE
json Son datos JSON textuales. STRING
jsonb Son datos JSON binarios descompuestos. INCOMPATIBLE
line Es una línea infinita en un plano. INCOMPATIBLE
lseg Es un segmento de línea en un plano. INCOMPATIBLE
macaddr Es una dirección MAC (Control de acceso a medios) INCOMPATIBLE
macaddr8 Es una dirección MAC (Control de acceso a medios) en formato EUI-64. INCOMPATIBLE