我的数据很简单,有三个字段:
– “datetimestamp”值(日期/时间)
– 两个字符串,“A”和“B”,两者都是< 20个字符 我的应用程序非常庞大(每秒数百个).所有写入都是新记录;插入后,数据永远不会被修改. 常规读取每隔几秒发生一次,用于填充一些近实时仪表板.我查询日期/时间值和其中一个字符串值.例如获取datetimestamp在特定范围内的所有记录,字段“B”等于特定搜索值.这些查询通常每个返回几千条记录. 最后,我的数据库不需要无限增长;我将通过手动删除它们或使用缓存过期技术(如果数据库支持)来查看10天内清除记录. 我最初在MongoDB中实现了这个,但没有意识到它处理锁定的方式(写块读取).随着我的扩展,我的查询花费的时间越来越长(现在是30秒,即使有正确的索引).现在,凭借我所学到的知识,我相信大量的写作会使我的读数匮乏. 我已经阅读了kkovacs.eu帖子,比较了各种NoSQL选项,虽然我学到了很多东西,但我不知道我的用例是否有明显的赢家.我非常感谢熟悉这些选项的人的推荐.
提前致谢!
也许这可以通过为每个输入流编写一对文本文件来解决:一个包含所有原始数据;另一种是多分钟聚合.仪表板将忽略原始数据.当然,可以使用数据库来做同样的事情.但简化应用程序可能意味着不需要RDB.更易于设计和维护,更易于安装在微控制器,嵌入式系统等上,或者在共享主机上更友好的邻居.