8

我发现了一些与此相同的问题,但它们没有包含有关所存储数据的性质、查询方式等方面的太多细节……所以我认为这值得发布。

我的数据非常简单,三个字段: - 一个“日期时间戳”值(日期/时间) - 两个字符串,“A”和“B”,均 < 20 个字符

我的应用程序的写入量很大(每秒数百次)。所有写入都是新记录;一旦插入,数据就永远不会被修改。

定期读取每隔几秒钟发生一次,用于填充一些近乎实时的仪表板。我查询日期/时间值和字符串值之一。例如,获取日期时间戳在特定范围内且字段“B”等于特定搜索值的所有记录。这些查询通常每个返回几千条记录。

最后,我的数据库不需要无限增长;我将通过手动删除它们或使用缓存到期技术(如果数据库支持)来清除 10 天以上的记录。

我最初在 MongoDB 中实现了这一点,没有意识到它处理锁定的方式(写入块读取)。随着我的扩展,我的查询花费的时间越来越长(现在 30 多秒,即使有正确的索引)。现在,根据我所学到的,我相信大量的写入正在耗尽我的阅读量。

我已经阅读了kkovacs.eu比较各种 NoSQL 选项的帖子,虽然我学到了很多东西,但我不知道我的用例是否有明显的赢家。我将非常感谢熟悉这些选项的人的推荐。

提前致谢!

4

2 回答 2

1

我以前在记录过程控制测量的系统中遇到过这样的问题。这是使用 5 MHz IBM PC 完成的,因此绝对有可能。用例更加多样化——按分钟、小时、八小时班次、日、周、月或年进行汇总——因此系统记录了所有原始数据,但也针对最常见的查询动态汇总(这是五分钟的平均值)。就您的仪表板而言,五分钟聚合似乎也是一个主要目标。

也许这可以通过为每个输入流编写一对文本文件来解决:一个包含所有原始数据;另一个与多分钟聚合。仪表板将忽略原始数据。当然,可以使用数据库来做同样的事情。但是简化应用程序可能意味着不需要 RDB。更易于设计和维护,更易于安装在微控制器、嵌入式系统等上,或者是共享主机上更友好的邻居。

于 2012-05-26T06:36:45.633 回答
0

决定一款合适的 NoSQL 产品并非易事。我建议你在做出选择之前了解更多关于 NoSQL 的知识,如果你真的想确保你最终不会相信别人的建议或收藏。

有一本很好的书,它提供了关于 NoSQL 的非常好的背景,任何开始使用 NoSQL 的人都应该阅读这本书。

http://www.amazon.com/Professional-NoSQL-Wrox-Programmer/dp/047094224X

我希望阅读本书中的一些章节能对你有所帮助。有比较和解释什么对什么工作有好处等等。

祝你好运。

于 2012-05-26T06:07:47.567 回答