2010-11-18 77 views
10

我刚刚开始了一项新工作,我将不得不在多值数据库(UniVerse)上进行大量的工作。我拥有的关于数据库的小体验是关系数据库(SqlServer),我正在寻找一些关于MVD的优缺点与关系数据库进行比较的无偏信息。多值数据库的优缺点

每个人都在办公室无论是来自一个关系型数据库的背景(和讨厌译注)或已在这里多年,喜欢它。

回答

8

首先,免责声明。我与UniData(UniVerse的妹妹DB)一起工作,偶尔还有blog on it,所以我不能说自己完全没有偏见;不过,我会尝试。

以下是考虑的一些要点给你:

  • 的SQL数据库和多值DB之间有很大的区别是,MVDB不符合1NF。这有利有弊。它可能(并且通常是)被滥用,但有时候它可能是非常有用的。最大的好处是,这意味着你并不总是需要一个连接表,它可以使某些查询更快。

  • 相比常规SQL数据块时以完全新颖的方式它存储元数据。每个文件/表都没有具体的模式。相反,它有一个或多个“字典”文件,它们由记录组成,这些记录告诉你应该如何解释数据。这使您不仅可以存储数据的多个解释(原始/大写/小写,组合字段等),还可以执行枚举和连接的等效操作。它可以是extremely powerful if done right

  • 可悲的是,虽然这个概念有很大的潜力,DBMS的工具集是缺乏。开发受到驱动,但只有一小部分业务案例似乎是由现有的构建于其上的老化软件系统的“持续照亮”心态驱动的。虽然它有集成工具(如.NET连接器,用于SQL查询的ODBC接口等),但它们确实存在问题。例如,UniObjects .NET接口缺乏安全性(基本上全部或全部)的粒度。

  • 它不仅仅是一个DBMS,它本质上是一个完整的应用程序平台。尽管UniBasic没有.NET语言那么强大,但它肯定会胜过T-SQL,并且可以快速转换业务规则。

+0

感谢您的详细解答。对于将所有内容转换为字符串和从字符串转换为数据库中的内容以及解析多个值(和子值)的记录条目,您有什么想法?这是否超过了将数据存储在更真实的表示中的一些概念性好处? – 2010-12-21 09:37:05

+0

我不能给出绝对答案,因为它取决于多种因素。例如,什么是应用程序的读/写配置文件?新写入与更新写入的比较是什么?其他因素将是发展时间差异。 – 2010-12-21 12:46:36

1

没有优点和缺点 - 他们只是简单地使用不同的方法来存储值。 UniVerse使用分隔符来分隔值(IIRC它使用char(254)和char(253)来分割字段中的多个值,char(255)分隔数据文件中的实际记录。尽管如此 - 自从我上次使用它以来,已经有10多年了)。有些人喜欢这种存储数据的方法,就像有些人更喜欢老式汽车而不是新车,或者有人更喜欢用马车而不是现代汽车。 (当然这只是我的看法)。

在一个字段中存储多个值意味着你没有SQLServer将要使用的额外表,你实际上有一个非规范化的级别。如果使用与UniVerse(我们曾经使用称为CueBIC的窗口系统)本身一起使用的技术,但使用这些多值很容易且很好,但是当从另一种语言(如C++或VB)连接到数据库时,它会成为PITA--然后,您必须阅读记录并自己分开数据。这意味着对这些多值进行搜索也很困难。

不过话说回来,也许事情已经转移,因为我最后一次使用它,也许有人写了一个很好的驱动程序,以便您可以轻松地从一个.Net平台的UniVerse接口。我希望为你们着想。

+0

与.Net交互并不算太坏。想要我感兴趣的是:它们对于处理字符串/整数/浮点数据是否有用,它们对小型/大型表还是小型/大量行执行比强类型关系型数据库更好/更差吗? – 2010-11-19 12:59:55

2

中压数据库是知道压缩性能相对较低的服务器的性能。

它们使用链接哈希归档系统,将大多数文件访问操作减少到数学运算,并在记录键已知时读取单个磁盘。在正确配置的系统中,只要记录密钥已知,从具有1,000,000,000条记录的文件文件中读取的时间不会超过具有1,000条记录的文件中的读取时间。

记录密钥必须是唯一的,并且在可以通过算法或编程方式确定记录密钥的应用中,数据库访问所涉及的开销可能很小。但是,当然,这通常涉及以可能不被认为是“关系”的方式访问数据库。

3

正如戴夫所建议的,MV数据库的设计真的是最好的,当你知道你试图检索记录的关键。有些人把它们称为基于记录的数据库系统,而不是SQL,这是一个基于集合的数据库系统。

这实际上取决于你想要做什么,数据如何结构化以及你有什么其他可用的工具。我大部分时间都是在MV(Revelation产品,大部分时间)工作,我们经常处理10,000,000+的记录集,速度很好。

MV数据库的强度是数据流动的时候。我们发现大部分客户都将其用于法律,医疗和金融产品等应用程序;应用程序的关系非常复杂,并且随着时间的推移可能会迅速而剧烈地变化。

虽然MV和没有SQL真的不是一回事,你可能想要看看没有SQL运动,它们有许多相同的概念。

MV的主要缺点是它的结构比它的工具要少。您通常会发现,由于开发人员基础较小,因此可用的工具包和帮助较小。你也许会发现,大多数产品给你的嵌入式基本语言缺乏你习惯的对象风格编码。甚至有时候,JavaScript似乎具有更多的语言功能。尽管如此,由于MV数据库主要是巨型字符串,所以语言的字符串处理非常出色。它们非常适合直接操作HTML和XML字符串。

我想我有一个大问题,是你有具体问题吗?我不打开一场战争,说它像从Windows迁移到Linux或Mac,甚至是从Debian迁移到Red Hat,但结构和系统不同,所以它们有不同的概念,优势,限制和目的。如果你尝试处理像SQL这样的MV数据库(你可以),你会发现它不是最合适的。设计不佳的MV数据库可能会令人沮丧。一个精心设计的MV数据库可以成为美丽的东西。

0

缩放到文件中的很多项目(记录)效果很好。缩放到记录中的很多值或子值都会导致性能问题。应用程序设计需要对将值和子值列表限制在几千个阈值以下敏感。

字符串处理非常好。至于是整数处理。 MV Basic语言是松散类型的,所以不要期望编译器有太多的强制执行。这就是说,由于MV Basic源项与其他任何数据一样,编译器只是数据库环境中的另一个动词,因此编写代码生成器和预编译器非常简单。这是在应用程序下创建工具层的好环境。