2013-03-29 57 views
0

我正在创建一个数据库来存储三件事情。比方说实验,测量和元数据。元数据由一组可变数量和类型的属性组成,从而使NoSQL的选择具有吸引力。noSQL数据库中的双重索引

我需要在数据库中有两个简单的查询:

1)给我所有实验的元数据与测量的给定值。 2)给我一个实验的所有措施的元数据。

我的主要要求是:数据

1)吨。每个实验都可能带有数百万种可能的措施(当然还有元数据),并且我预计会有数千个实验。 2)并发性。我希望能够快速并发地读/写,因为在任何特定的时间点,我可能会运行10-20次实验,并且他们会希望同时写入数百万个措施。

我试过MongoDB,但由于写入锁定速度很慢。我想有更快的东西。此外,它不能很好地处理我的一个查询,因为我基本上需要两个索引。我正在考虑作为泰坦的替代品,仅仅因为将实验想象成节点并将它们与边缘连接起来似乎很自然。如果我能找到快速执行两种查询的方法,Hypertable似乎是另一种可能性。

有那么多的noSQL数据库在那里,我可能会错过我的需要正确的一个。建议?

+0

我只会发表评论,最有可能没有你的需求银弹。我们都喜欢可以无限增长的数据库,接受数十亿次的写入并且同时提供数十亿次读取,而且没有延迟。但现实是我们必须在某个时候妥协。我会花一些时间调查你如何妥协以达到你的目标。只是友好的建议。 – ryan1234

+0

我当然同意我可能会要求太多。但鉴于我想要简单的查询,在这种特殊情况下,可能有一个特定的数据库比其他数据库表现更好。 –

回答

1

你看过可以满足你的需求的NewSQL数据库吗?我建议你仔细看看Starcounter,这是真正的ACID,不会锁定写入,并支持对基本属性和组合索引进行索引。

我认为面向对象和以内存为中心的事务数据库可以满足您的需求。然后你可以有不同的实验和度量派生相同的类,你可以选择查询每种类型以及分别查询非附加类型。

如果您没有超过TB的数据,则不需要迄今为止查看过的大数据数据库。他们非常擅长他们的工作,但我认为您应该研究其他的NoSQL数据库。当使用内存(当然,所有写操作都保护在永久存储介质上)面向对象的数据库时,与关系数据库相比,您可以获得大约4倍的压缩,因此数据结核通常会被使用。

今天很难在数据库丛林中找到你的方式,所以我明白寻找适合你需求的东西是很困难的。在你的情况 - 我的交易NoSQL数据库5美分是真正的ACID和SQL查询支持!

+0

谢谢,我会试试看。 –