# Version Managed Data Store

Le Version Managed Data Store, ou VMDS, est une technologie de gestion de base de données relationnelles, développée par Smallworld Systems à la fin des années 1980, aujourd'hui supportée par GE Energy, au sein du système d'information géographique (SIG) Smallworld. Cette technologie a été conçue pour permettre de gérer les volumes importants nécessités par un système d'information géographique continu, ainsi que pour permettre de gérer le problème des transactions longues (cf article DN).
Introduit en 1990, VMDS a évolué au fil du temps. La version actuelle est 6.0
VMDS est un SGBD spatial. Il offre donc un ensemble de caractéristiques qui le différencient des SGBD relationnels destinés à ne stocker que des attributs alphabétiques ou numériques plus traditionnels.
Avec la gestion de Miki les bons tuyaux.
VMDS se décompose en deux parties : un serveur de blocs simple et puissant en termes d'échelle, appelé SWMFS (Smallworld Master File Server), et une API cliente intelligente, écrite en C et en [Magik]. Les attributs spatiaux ou non sont stockés dans des blocs qui résident dans des fichiers sur le serveur. Lorsque l'application cliente requiert des données, elle est suffisamment intelligente pour déterminer l'ensemble optimal de blocs qui est nécessaire. La requête est ensuite transmise à SWMFS qui renvoie les données au client via le réseau pour traitement.
Cette approche est particulièrement efficace et évolutive lorsqu'on doit traiter des données spatiales et/ou topologiques, qui tendent à circuler en volumes plus grands et à nécessiter plus de traitements que les attributs alphanumériques classiques (par exemple lors du rafraîchissement du dessin d'une carte). Cette approche fait de VMDS une solution particulièrement bien adaptée aux déploiements qui peuvent être utilisés par plusieurs centaines, voire plusieurs milliers d'utilisateurs concurrents.

## Support des transactions longues

Les SGBD relationnels supportent des transactions courtes, dans lesquelles les changements de données sont relativement petits en volume et dont la mise à jour est courte en durée. La durée maximale entre le début et la fin d'une transaction est au maximum de quelques secondes, et souvent beaucoup moins.
VMDS supporte les transactions longues, dans lesquelles le volume de données et la durée peuvent être significatifs (des jours, des semaines, voire des mois). Ces types de transaction sont communs dans les applications de cartographie ou de gestion de réseaux complexes.
À cause de la durée des transactions dans ce contexte, le volume de données changé peut être important (pas seulement dans le contexte de la transaction, mais aussi parfois dans celui de la base de données dans son ensemble). En conséquence, il est probable que le même enregistrement soit changé plus d'une fois, par des utilisateurs différents. Pour faire face à cette situation, VMDS offre nativement des solutions de gestion automatique de conflits, et permet aux applications de revoir et éventuellement annuler les modifications incorrectes.

## Capacité spatiale et topologique

En plus des fonctionnalités classiques d'un SGBD relationnel, comme l'interrogation des attributs, les jointures, triggers et champs calculés, VMDS offre de nombreuses fonctionnalités spatiales et topologiques. Ceci permet de stocker et d'interroger, en tant que types d'attributs, des points, des textes, des polylignes, des polygônes et des images tramées (rasters).
Les fonctions spatiales incluent, par exemple : trouver tous les points dans un polygone, calculer les polygones de Voronoi depuis les points d'un TIN (réseau triangulé irrégulier), faire une analyse de type cluster d'un ensemble de points
Les données vectorielles, comme les points, les polylignes et polygones peuvent être associées à des attributs topologiques qui permettent de modéliser des réseaux complexes. Des moteurs d'analyse de réseau sont fournis pour répondre à des requêtes comme "trouver le plus court chemin entre deux nœuds du réseau", ou optimiser une route de livraison (problème du voyageur de commerce). Un moteur topologique peut être configuré avec un ensemble de règles qui définit comment les entités topologiques interagissent les unes avec les autres lorsque des données sont ajoutées, ou lorsque les données existantes sont modifiées.

## Représentation des données

Dans VMDS, les données sont présentées à l'application en tant qu'objets. Ceci est différent de nombreux SGBD relationnels du marché, qui présentent les données en tant que lignes d'une table ou résultat de requête JDBC. VMDS fournit dans la plateforme Smallworld un atelier de génie logiciel et une infrastructure qui permet aux administrateurs d'associer une table avec une classe d'objet défini en Magik. Les méthodes de lecture et d'écriture des attributs sont générées automatiquement, et permettent d'exposer les attributs de l'enregistrement. Chaque enregistrement (rangée) d'une table se manifeste ainsi à l'application en tant qu'instance d'une classe Magik, et est connu comme un RWO (Real World Object - ou objet du monde réel). Les tables sont appelées collections.
Les requêtes sont construites au moyen de prédicats:
Les jointures sont implémentées en tant que méthodes sur l'objet parent. Par exemple un gestionnaire pourrait avoir plusieurs employés dans son équipe :
Effectuer une transaction: