0

我们有一个非常简单的用例,但我们很难选择最适合我们需求的数据库解决方案。

要求:

一个 OLAP 数据库,它允许我们通过不同的属性(数千个)查询数百万条记录,并且可以保存一个主键。上传数据时也必须部分快速。

用例:

我们有一个用户数据库,每个用户都属于不同的属性。最多有 10k 个属性,但大多数用户每个属性少于 30 个。

示例表:

用户/属性

用户1/1,5,10

用户2/7,5,9,24,42,1090

用户3/9

用户4/98,1049,2000

. .

理想的场景是有一个列式存储数据库,其中每个属性都是一列,并且数据库允许超过 10k 个属性。

Monetdb 正好适合我们,但有两个非常关键的缺点:

  • 批量负载非常低,在我们的测试中,每条上传的记录给了我们 5 毫秒。上传100万条记录需要一个多小时,非常慢。
  • 重复主键上的批量加载失败(我们想更新那个“重复键上”的属性值,但是这个数据库不可能)。

我们也在考虑德鲁伊,但它更多的是“事件”驱动。添加每个属性时,您需要一个时间戳。它没有被排除,但它不是我们需要的完美契合。

如果需要,我可以提供更多解释,任何指导将不胜感激!

谢谢

4

1 回答 1

0

目前尚不清楚您如何批量加载到数据库中。在普通的 4 核台式机和 16G RAM 上,对 100 列和 125M 行的表进行简单的 COPY INTO 不会超过大约半小时。参见例如http://homepages.cwi.nl/~mk/ontimeReport

请注意,引入 10K 列会导致为每个用户设置所有值。您可能会重新考虑您的数据库设计并更多地依赖 user:property 表设置。

于 2016-03-27T13:13:12.067 回答