Question

Je viens de commencer un nouvel emploi où je vais devoir faire un montant équitable du travail avec une base de données multi-valeur (UniVerse). Quelle est l'expérience peu de base de données que j'ai est dans des bases de données relationnelles (SqlServer) et je suis à la recherche d'une information non biaisée sur ce que les avantages et les inconvénients d'un MVD sont comparées aux bases de données relationnelles.

Tout le monde dans le bureau provient soit d'un fond de base de données relationnelle (et déteste UniVerse) ou a été ici depuis des années et aime.

Était-ce utile?

La solution

Tout d'abord, un avertissement. Je travaille avec UniData (la DB sœur de UniVerse) et parfois blog sur elle , donc je ne peux pas prétendre être complètement impartial; Je vais essayer, cependant.

Voici quelques points de considération pour vous:

  • Une grande différence entre un DB SQL et un DB est que valeurs multiples de la MVDB ne respecte pas 1FN. Cela a des avantages et des inconvénients à elle. Il peut être (et est généralement) abusé, mais il y a des moments où il peut être extrêmement fonctionnel. Le plus grand avantage est que cela signifie que vous n'êtes pas toujours besoin d'une table de jointure qui peut rendre certaines requêtes beaucoup plus rapidement.

  • Il stocke les méta-données d'une manière complètement nouvelle par rapport à DB SQL réguliers. Chaque fichier / table ne dispose pas d'un schéma de béton. Au lieu de cela, il a 1 ou plusieurs fichiers « dictionnaire » qui se compose des dossiers qui vous indiquent comment doivent être interprétés les données. Cela vous permet d'avoir non seulement de stocker plusieurs interprétations des données (brutes / majuscules / minuscules, champs combinés, etc.) mais vous permet également d'effectuer l'équivalent d'énumérations et rejoint. Il peut être extrêmement puissant si bien fait .

  • Malheureusement, bien que le concept a beaucoup de potentiel, le jeu d'outils de SGBD fait défaut. Le développement est entraîné, mais un ensemble extrêmement faible des entreprises cas qui semblent être entraîné par un « keep-les-lumières sur la » mentalité des systèmes logiciels existants et de vieillissement qui ont été construits sur elle. Bien qu'il dispose d'outils d'intégration (tels que des connecteurs .NET, l'interface ODBC pour les requêtes SQL, etc) ils ont des problèmes. Par exemple, les UniObjects l'interface .NET est dénuée de toute granulation dans la sécurité (essentiellement tout ou rien).

  • Il est non seulement un SGBD, mais est essentiellement une plate-forme d'application entière. Même si UniBasic est pas aussi puissant que dire un langage .NET, il vaut mieux que le pantalon large T-SQL et a un demi-tour rapide pour le pompage des règles commerciales.

Autres conseils

Dave a suggéré, les bases de données MV sont vraiment conçus pour mieux travailler quand vous connaissez la clé de l'enregistrement que vous essayez de récupérer. Certaines personnes font référence à des systèmes de base de données à base de disques, par opposition à SQL, qui est un système de base de données à base de jeu.

Cela dépend vraiment de ce que vous essayez de faire, comment les données doivent être structurées, et ce que les autres outils dont vous disposez. Je passe la plupart de mon temps de travail dans MV (produits Apocalypse, la plupart du temps) et nous nous occupons enregistre des ensembles dans le 10,000,000+ régulièrement, et la vitesse est très bien.

La résistance à la base de données MV est lorsque les données sont fluides. Nous constatons que la plupart de nos clients utilisent pour des applications telles que des produits légaux, médicaux et financiers; les applications où les relations sont complexes et peuvent changer rapidement et radicalement au fil du temps.

Vous pouvez regarder sur le pas de mouvement SQL, qui part beaucoup des mêmes concepts, même si MV et SQL ne sont vraiment pas la même chose.

L'inconvénient principal de MV est moins en elle la structure de, que les outils de elle. Vous trouverez généralement que, depuis la base de développement est plus petit, la boîte à outils et aide disponible est plus petit. Vous trouverez peut-être aussi que le langage de base intégré que la plupart des offres vous donner le style n'a pas d'objet que vous codage êtes habitué. Il y a même semble JavaScript comme il a plus de fonctionnalités comme langue.

Cela dit, étant donné que les bases de données MV sont principalement des chaînes géantes, la chaîne de manutention des langues sont excellentes. Ils sont parfaits pour manipuler HTML et chaîne XML directement.

Je suppose que la grande question que j'ai, est de savoir si vous avez des questions? Je ne vais pas ouvrir une guerre en disant qu'il est comme passer de Windows à Linux ou un Mac, ou même passer de Debian à Red Hat, mais les structures et les systèmes sont différents, ils ont des concepts différents, les forces, les limites et les objectifs . Si vous essayez manipuler une base de données SQL MV comme (que vous pouvez), vous trouverez ce n'est pas le meilleur ajustement. Une base de données MV mal conçu peut être un exercice de frustation. Une base de données MV bien conçu peut être une chose de la beauté.

bases de données MV sont connues pour presser la performance impressionnante de serveurs relativement faible puissance.

Ils utilisent un système de classement lien-hachage qui réduit la plupart des opérations d'accès aux fichiers à une opération mathématique et un seul disque lu quand on connaît la clé d'enregistrement. Dans un système correctement configuré, lit à partir d'un fichier de fichier avec les enregistrements 1000000000 prennent plus que ceux d'un fichier avec 1000 dossiers aussi longtemps que l'on connaît la clé d'enregistrement.

clés de registres doivent être uniques, et dans les applications où une clé d'enregistrement peut être configuré de telle manière qu'il puisse être déterminé ou algorithmiquement programatically, les frais généraux impliqués dans l'accès de base de données peut être minime. Mais bien sûr, cela implique généralement l'accès à la base de données d'une manière qui ne serait probablement pas considéré comme « relationnel ».

Il n'y a pas des avantages et des inconvénients en tant que tels - ils utilisent tout simplement différentes méthodes pour stocker des valeurs. UniVerse utilise un séparateur pour séparer les valeurs (IIRC il utilise char (254) et char (253) pour séparer les valeurs multiples dans un champ, et char (255) pour séparer les enregistrements réels dans le fichier de données. Je peux me tromper bien - il a été plus de 10 ans que je l'utilisais). Certaines personnes aiment cette méthode de stockage de données, comme certaines personnes préfèrent encore les voitures d'époque plus tard les modèles, ou certaines personnes préfèrent utiliser un cheval et une charrette au lieu d'un véhicule à moteur moderne. (Bien sûr, cela est juste mon avis).

Stockage de plusieurs valeurs dans un moyen de champ que vous n'avez pas la table supplémentaire que SQLServer aurait utilisé, vous avez effectivement un niveau de dénormalisation. En utilisant ces valeurs multiples est tout simple et bon si vous utilisez une technologie qui va nativement avec UniVerse (nous avons l'habitude d'utiliser un système de fenêtrage appelé CueBIC), mais il becaomes un PITA lors de la connexion à la base de données d'une autre langue comme C ++ ou VB - vous alors doivent lire un enregistrement et séparer les valeurs vous-même. Cela signifie qu'il est également difficile de rechercher sur ces valeurs multiples.

Mais là encore, peut-être les choses ont évolué depuis que je l'utilisais, peut-être quelqu'un a écrit un pilote agréable afin que vous puissiez facilement interface avec UniVerse à partir d'une plate-forme .Net. J'espère pour vous qu'ils ont.

Mise à l'échelle à un bon nombre d'éléments (enregistrements) dans les fichiers fonctionne bien. Mise à l'échelle des lots de valeurs ou sous-valeurs dans les enregistrements va créer des problèmes de performance. besoins de conception d'application pour être sensible à la valeur limite et des sous listes de valeurs en dessous du seuil de plusieurs 1000.

Gestion chaîne est excellente. Comme la manipulation est un nombre entier. Les langues MV base sont faiblement typé alors ne vous attendez pas à l'application trop bien du compilateur. Cela dit depuis MV éléments source de base sont comme toutes les autres données et le compilateur est juste un autre verbe dans l'environnement DB, l'écriture des générateurs de code et pré-compilateurs est un jeu d'enfant. Il est un bon environnement pour la construction d'une couche d'outils ci-dessous votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top