1

我正在开展一个旨在分析从各种终端收集的生物特征数据的项目。该过程对性能不是很关键。相反,它是 I/O 有界的。数据量非常庞大。(每张表有数亿条记录)。不幸的是,数据库是关系型的。并且有20个外键。在作业完成期间更改引用键的值非常常见。所以在收集数据的过程中会有很多 UPDATE 和 SET NULL 。

目前,设计了数据库的语义。所有程序几乎完成,并且创建了数据库的 MySQL 原型。它适用于样本(小规模)数据。

我进行搜索以找到适合该项目的 DBMS。谷歌搜索“DBMS 比较”,......没有帮助。人们说对立的事情。有人说 MySQL 会执行更快的插入和更新,有人说 Oracle9 更好......

我在 DBMS 之间找不到任何可靠的、基于基准的比较。我在日常项目中使用 MySQL,但这个看起来更重要。

我们需要的:

  • DBMS 的许可和成本并不重要,但当然首选开源(GPL 或 LGPL)(因为整个项目将在 LGPL 下发布)。
  • 非常快的插入,非常快的更新,需要大量的外键。
  • DBMS 应一次响应 0 - 100 个连接。
  • 终端通过本地网络 (LAN) 连接到服务器。

我真正在寻找的是各种 DBMS 的基准。它可能包含图表、不同操作(插入、更新、删除)在各种情况下(与引用字段或普通表的关系)的单独比较......

4

1 回答 1

1

对于这类答案,我会推荐 PostgreSQL、Informix 或 Oracle。PostgreSQL 是开源的(BSDL,GPL 兼容,大家都同意)。原因与数据建模的某些方面有关,这些方面可能对您的情况非常有帮助。一般来说,你有两个重要的问题:

1)我可以为我正在做的事情调整我的数据库多远?我可以扩展多远?

2)我如何建模我的数据?

首先,Oracle 和 PostgreSQL 更复杂但更灵活。这种灵活性可能会派上用场。其次,灵活性可能会在以后为您节省大量精力。此外,它为优化打开了新的大门,这在直接的关系模型中是不可能的。首先我建议看一下:http ://db.cs.berkeley.edu/papers/Informix/www.informix.com/informix/corpinfo/zines/whitpprs/illuswp/wave.htm ,因为它会给你一些背景至于我在想什么。此外,如果您查看 Stonebraker 所说的内容,您会发现直接的基准测试实际上是苹果与橘子的比较。

使用 ORDBMS 的想法意味着一些重要的事情:

  1. 您可以根据数据对数据进行功能建模。例如,您可以在 Java 或 Python 中使用一个函数来操作您的数据并返回结果。您可以索引这些函数的输出,如果需要或不需要在 insert 和 select 性能之间进行交易,则可以交易 insert 以换取 select 性能。
  2. 存储的数据越少意味着插入越快。
  3. 使用自定义类型和函数扩展数据的能力,提供对数据的更高性能访问。

PostgreSQL 9.2 将在足够的硬件上支持每秒大约 14000 次写入,这没什么好打喷嚏的。当然,这取决于写入的宽度、服务器上的硬件性能等。Affilias 使用 PostgreSQL 来管理 .org 和 .info 顶级域(网络规模!)以及 Skype 的基础架构(仍然,即使在微软购买它们之后)。

最后,作为信息管道的一部分,如果您正在处理大量数据并且需要在发送到 PostgreSQL 之前进行一些预处理,您可以查看 array-native db(对于科学工作中常见的 NoSQL 方法)或 VoltDB(对于用于高吞吐量处理的内存存储)。尽管它们是截然不同的系统,但 VoltDB 和 Postgres 实际上是由同一个人启动的。

最后,关于基准图表,主要的数据库供应商或多或少地禁止在其许可协议中发布此类图表,因此您将找不到它们。

于 2012-09-03T13:38:10.600 回答