Articulo de referencia

VMDS

VMDS es la abreviatura de la tecnología de base de datos relacional llamada Version Managed Data Store proporcionada por GE Energy como parte de su plataforma tecnológica Smallw...

VMDS es la abreviatura de la tecnología de base de datos relacional llamada Version Managed Data Store proporcionada por GE Energy como parte de su plataforma tecnológica Smallworld y fue diseñada desde el principio para almacenar y analizar las redes espaciales y topológicas altamente complejas que suelen utilizar las empresas de servicios públicos como las de distribución de energía y telecomunicaciones. [ 1 ]

VMDS se introdujo originalmente en 1990 y se ha ido mejorando y actualizando a lo largo de los años. Su versión actual es la 6.0.

VMDS ha sido diseñado como una base de datos espacial . Esto le confiere a VMDS una serie de características distintivas en comparación con las bases de datos relacionales convencionales que solo contienen atributos.

Procesamiento de servidores distribuidos

VMDS se compone de dos partes: un servidor de bloques de datos simple y altamente escalable llamado SWMFS (Smallworld Master File Server) y una API de cliente inteligente escrita en C y Magik . Los datos espaciales y de atributos se almacenan en bloques de datos que residen en archivos especiales llamados archivos de almacenamiento de datos en el servidor. Cuando la aplicación cliente solicita datos, posee la inteligencia suficiente para determinar el conjunto óptimo de bloques de datos necesarios. Esta solicitud se realiza a SWMFS, que devuelve los datos al cliente a través de la red para su procesamiento.

Este enfoque resulta especialmente eficiente y escalable al trabajar con datos espaciales y topológicos, que suelen generarse en grandes volúmenes y requieren mayor procesamiento que los datos de atributos simples (por ejemplo, durante una operación de actualización de mapa). Gracias a ello, VMDS es idóneo para implementaciones empresariales que pueden involucrar cientos o incluso miles de clientes concurrentes.

Soporte para transacciones largas

Las bases de datos relacionales admiten transacciones cortas en las que los cambios en los datos son relativamente pequeños y de corta duración (el período máximo entre el inicio y el final de una transacción suele ser de unos pocos segundos o menos).

VMDS admite transacciones largas en las que el volumen de datos involucrado puede ser considerable y la duración de la transacción puede ser significativa (días, semanas o incluso meses). Este tipo de transacciones son comunes en aplicaciones de red avanzadas utilizadas, por ejemplo, por las empresas de distribución de energía eléctrica.

Debido a la duración de una transacción extensa en este contexto, la cantidad de cambios puede ser significativa (no solo dentro del ámbito de la transacción, sino también en el contexto de la base de datos en su conjunto). Por lo tanto, es probable que un mismo registro se modifique más de una vez. Para gestionar esta situación, VMDS cuenta con soporte integrado para la gestión automática de dichos conflictos y permite que las aplicaciones revisen los cambios y acepten únicamente las ediciones correctas.

Capacidades espaciales y topológicas

Además de las características convencionales de las bases de datos relacionales, como la consulta de atributos, los campos de unión, los disparadores y los campos calculados, VMDS cuenta con numerosas capacidades espaciales y topológicas. Esto permite almacenar y analizar datos espaciales como puntos, textos, polilíneas, polígonos y datos ráster.

Las funciones espaciales incluyen: encontrar todos los elementos dentro de un polígono, calcular los polígonos de Voronoi de un conjunto de sitios y realizar un análisis de clúster en un conjunto de puntos.

Los datos espaciales vectoriales, como puntos, polilíneas y polígonos, pueden recibir atributos topológicos que permiten modelar redes complejas. Se proporcionan motores de análisis de redes para responder preguntas como encontrar la ruta más corta entre dos nodos o cómo optimizar una ruta de entrega (el problema del viajante ). Un motor de topología puede configurarse con un conjunto de reglas que definen cómo interactúan las entidades topológicas entre sí al agregar nuevos datos o editar los existentes.

abstracción de datos

En VMDS, todos los datos se presentan a la aplicación como objetos. Esto difiere de muchas bases de datos relacionales que presentan los datos como filas de una tabla o como resultado de una consulta, por ejemplo, mediante JDBC . VMDS proporciona una herramienta de modelado de datos y una infraestructura subyacente como parte de la plataforma tecnológica Smallworld , que permite a los administradores asociar una tabla de la base de datos con un ejemplar (o clase) de Magik. Los métodos get y set de Magik para el ejemplar de Magik se pueden generar automáticamente, exponiendo así el campo (o columna) de una tabla. Cada fila de VMDS se manifiesta a la aplicación como una instancia de un objeto Magik y se conoce como RWO (o objeto del mundo real). En la terminología de Smallworld, las tablas se denominan colecciones.

# all_rwos contiene todos los rwos de la base de datos y es heterogéneo. all_rwos << mi_aplicación.rwo_set() # valve_collection contiene la colección de válvulas válvulas << all_rwos.select(:collection, {:valve}) número_de_válvulas << tamaño_de_válvulas

Las consultas se construyen utilizando objetos predicado:

# encontrar válvulas 'abiertas'. válvulas_abiertas << válvulas.select(predicado.eq(:estado_operativo, "abiertas")) número_de_válvulas_abiertas << tamaño_de_válvulas_abiertas
_para válvula _sobre open_valves.elements() _bucle escribir(válvula.id) _fin del bucle

Joins are implemented as methods on the parent RWO. For example, a manager might have several employees who report to him:

 # get the employee collection. employees << my_application.database.collection(:gis, :employees)
 # find a manager called 'Steve' and get the first matching element steve << employees.select(predicate.eq(:name, "Steve").and(predicate.eq(:role, "manager")).an_element()
 # display the names of his direct reports. name is a field (or column) # on the employee collection (or table) _for employee _over steve.direct_reports.elements() _loop write(employee.name) _endloop

Performing a transaction:

 # each key in the hash table corresponds to the name of the field (or column) in # the collection (or table) valve_data << hash_table.new_with( :asset_id, 57648576, :material, "Iron")
 # get the valve collection directly valve_collection << my_application.database.collection(:gis, :valve)
 # create an insert transaction to insert a new valve record into the collection a # comment can be provide that describes the transaction transaction << record_transaction.new_insert(valve_collection, valve_data, "Inserted a new valve") transaction.run()

See also

References

  1. Castro, Cyndi (2022-06-21). "NBSGeo". HydroShare Resources. Retrieved 2025-10-08.
Retrieved from "https://en.wikipedia.org/w/index.php?title=VMDS&oldid=1315841651"