El intercambio de datos es el proceso de tomar datos estructurados bajo un esquema de origen y transformarlos en un esquema de destino , de modo que los datos de destino sean una representación precisa de los datos de origen. [1] El intercambio de datos permite compartir datos entre diferentes programas informáticos.
Es similar al concepto relacionado de integración de datos , excepto que los datos en realidad se reestructuran (con posible pérdida de contenido) en el intercambio de datos. Puede que no haya forma de transformar una instancia dadas todas las restricciones. A la inversa, puede haber numerosas formas de transformar la instancia (posiblemente infinitas), en cuyo caso se debe identificar y justificar la "mejor" elección de soluciones.
En algunos dominios, pueden existir unas pocas docenas de esquemas de origen y destino diferentes (formatos de datos propietarios). A menudo se desarrolla un "intercambio" o "formato de intercambio" para un solo dominio, y luego se escriben las rutinas necesarias (asignaciones) para (indirectamente) transformar/traducir todos y cada uno de los esquemas de origen a todos y cada uno de los esquemas de destino utilizando el formato de intercambio como un paso intermedio. [2] Eso requiere mucho menos trabajo que escribir y depurar los cientos de rutinas diferentes que se requerirían para traducir directamente todos y cada uno de los esquemas de origen a todos y cada uno de los esquemas de destino.
Ejemplos de estos formatos de intercambio transformadores incluyen:
Hay dos tipos de intercambio de datos: intercambio de datos de transmisión versus intercambio de datos de igual a igual (unidifusión). [9]
En una red de transmisión, los datos se transmiten simultáneamente a todos los participantes. Al igual que en una conferencia telefónica, todos los participantes reciben exactamente la misma información del orador al mismo tiempo. [10]
En un modelo de intercambio de datos entre pares (unidifusión), los datos se envían únicamente al receptor de destino definido por una dirección específica. Al igual que una llamada telefónica o un correo electrónico, la información sólo fluye entre dos participantes de la red. [11]
Un lenguaje/formato de intercambio (o intercambio) de datos es un lenguaje que es independiente del dominio y puede usarse para datos de cualquier tipo de disciplina. [12] Han "evolucionado desde estar orientados al marcado y la visualización para soportar aún más la codificación de metadatos que describen los atributos estructurales de la información". [13]
La práctica ha demostrado que ciertos tipos de lenguajes formales son más adecuados para esta tarea que otros, ya que su especificación está impulsada por un proceso formal en lugar de necesidades particulares de implementación de software. Por ejemplo, XML es un lenguaje de marcado que fue diseñado para permitir la creación de dialectos (la definición de sublenguajes específicos de un dominio). [14] Sin embargo, no contiene diccionarios ni tipos de hechos específicos de un dominio. Para un intercambio de datos confiable es beneficiosa la disponibilidad de diccionarios-taxonomías estándar y bibliotecas de herramientas como analizadores , validadores de esquemas y herramientas de transformación. [ cita necesaria ]
La siguiente es una lista parcial de lenguajes genéricos populares utilizados para el intercambio de datos en múltiples dominios.
Nomenclatura
Notas:
La popularidad de XML para el intercambio de datos en la World Wide Web se debe a varias razones. En primer lugar, está estrechamente relacionado con los estándares preexistentes Lenguaje de marcado generalizado estándar (SGML) y Lenguaje de marcado de hipertexto (HTML) y, como tal, un analizador escrito para admitir estos dos lenguajes se puede extender fácilmente para admitir también XML. Por ejemplo, XHTML se ha definido como un formato XML formal, pero que la mayoría (si no todos) los analizadores HTML lo entienden correctamente. [14]
YAML es un lenguaje diseñado para ser legible por humanos (y, como tal, fácil de editar con cualquier editor de texto estándar). Su noción suele ser similar a la sintaxis reStructuredText o Wiki, que también intenta ser legible tanto por humanos como por computadoras. YAML 1.2 también incluye una noción abreviada que es compatible con JSON y, como tal, cualquier documento JSON también es YAML válido; Sin embargo, esto no es válido al revés. [dieciséis]
REBOL es un lenguaje diseñado para ser legible por humanos y fácil de editar utilizando cualquier editor de texto estándar. Para lograrlo, utiliza una sintaxis simple de forma libre con puntuación mínima y un rico conjunto de tipos de datos. Los tipos de datos REBOL como URL, correos electrónicos, valores de fecha y hora, tuplas, cadenas, etiquetas, etc. respetan los estándares comunes. REBOL está diseñado para no necesitar ningún metalenguaje adicional, ya que está diseñado de forma metacircular. La metacircularidad del lenguaje es la razón por la cual, por ejemplo, el dialecto Parse usado (no exclusivamente) para definiciones y transformaciones de dialectos REBOL es también en sí mismo un dialecto de REBOL. [17] REBOL se utilizó como fuente de inspiración para JSON. [18]
El inglés gellish es un subconjunto formalizado del inglés natural, que incluye una gramática simple y un gran diccionario-taxonomía de inglés extensible que define la terminología general y específica del dominio (términos para conceptos), mientras que los conceptos están organizados en una jerarquía de subtipo-supertipo (una taxonomía), que apoya la herencia de conocimientos y requisitos. El Diccionario-Taxonomía también incluye tipos de hechos estandarizados (también llamados tipos de relación). Los términos y tipos de relaciones juntos se pueden utilizar para crear e interpretar expresiones de hechos, conocimientos, requisitos y otra información. Gellish se puede utilizar en combinación con SQL , RDF/XML , OWL y varios otros metalenguajes. El estándar Gellish es una combinación de ISO 10303-221 (AP221) e ISO 15926. [19]
Las rutinas de transformación constituirán un lenguaje y una sintaxis que deben ser independientes de la disciplina y la máquina.