Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Conflictos de tipo de muestreo

Cambiado en la versión 2.6.

El modelo de esquema flexible de MongoDB permite que un campo determinado contenga datos de múltiples tipos, mientras que las bases de datos relacionales restringen las columnas a un solo tipo de dato. El Conector de BI muestrea datos de MongoDB para generar un modelo de esquema relacional, pero conversiones de tipo pueden ocurrir conflictos cuando el BI Connector muestrea diferentes tipos de datos de un campo en documentos de MongoDB.

Hay dos categorías principales de conflictos de conversión de tipos que pueden ocurrir en presencia de múltiples tipos de datos: conflictos entre tipos escalares y conflictos que involucran tipos compuestos, como documentos y matrices.

Nota

Cuando se produce un conflicto escalar-escalar, BI Connector utiliza la siguiente estructura en retícula para determinar el mayor límite superior de los dos tipos de datos diferentes:

Red de tipo escalar-escalar
haga clic para ampliar

Ejemplo

Si un campo determinado contiene tipos int, double y string, el límite superior mínimo es string.

Cuando ocurre un conflicto escalar-escalar, el Conector BI inserta una fila en la tabla information_schema.COLUMNS y enumera los diferentes tipos muestreados en la columna COLUMN_COMMENT.

Los conflictos compuestos son conflictos de conversión de tipos que involucran un documento o un arreglo. Las siguientes secciones describen cómo el BI Connector resuelve ambos tipos de conflictos compuestos.

Cuando se produce un conflicto con un documento, el Conector de BI muestra los campos del tipo de documento como columnas separadas mediante notación de puntos. Por ejemplo, la colección conflict contiene los siguientes documentos:

{ _id: 0, a: "foo" } // "a" is scalar (string)
{ _id: 1, a: { a: "bar", b: "baz" } } // "a" is composite (document)

El BI Connector detecta un conflicto entre escalar y compuesto y genera el siguiente esquema relacional:

Tabla: conflict

_id
un(a)
a.a
a.b

0

"foo"

NULL

NULL

1

NULL

"bar"

"baz"

Cuando ocurre un conflicto que involucra un documento, el Conector de BI inserta una fila en la tabla information_schema.COLUMNS y enumera los diferentes tipos muestreados en la columna COLUMN_COMMENT.

Cuando se produce un conflicto que involucra un arreglo, el conector BI crea una nueva tabla para el campo de conflicto con una columna para la clave externa, el índice del arreglo y el valor. El BI Connector descompone el arreglo en varias filas en una nueva tabla y rellena las columnas en consecuencia. Por ejemplo, la colección conflict contiene los siguientes documentos:

{ _id: 0, a: "foo" } // "a" is scalar (string)
{ _id: 1, a: ["bar", "baz"] } // "a" is composite (array)

El conector de BI convierte lo anterior en las dos tablas siguientes:

Tabla: conflict

_id

0

1

Tabla: conflict_a

_id
a_idx
un(a)

0

NULL

"foo"

1

0

"bar"

1

1

"baz"

Cuando ocurre un conflicto que involucra una matriz, el Conector de BI:

  • Inserta una fila en la tabla information_schema.COLUMNS y enumera los diferentes tipos muestreados en la columna COLUMN_COMMENT

  • Inserta una fila en la tabla information_schema.TABLES que contiene información sobre cómo el arreglo se asigna a la fila en la tabla information_schema.COLUMNS

Volver

Datos geoespaciales

En esta página