我应该为记录器应用程序使用什么类型的数据库?

时间:2013-09-04 19:42:44

标签: sql database nosql

我正在研究一个大型模拟软件的记录器,通过记录相关状态来跟踪现有的测试覆盖率。 我们计划记录大约150个状态表,每个状态表包含大约100个字段。 我们有一个包含10,000个测试的回归测试套件,我们想记录每个测试的状态。 此信息将用于查询功能覆盖率。

从数据库使用角度来看:

  • 每次测试都会写入数据库,并且只会进行几次。所以它绝对不会写密集。
  • 阅读(查询)是主要用法。各种表中的几个字段将用于创建复杂查询。

鉴于此使用模型并且没有以前的数据库知识,我不确定我真正想要的数据库属性。

我可以简单地使用SQL表,但我想借此机会学习并对NoSQL数据库开放。这会属于NoSQL的“键值”范畴吗?

3 个答案:

答案 0 :(得分:1)

对我而言,这似乎根本不适合NoSQL。 NoSQL的最大优势是它的性能优势 - 您真正需要的是结构良好(易于查询)的数据。 SQL非常擅长构造数据并使其易于理解。

答案 1 :(得分:1)

这取决于很多因素:

  1. 您是否需要/需要大规模扩展。我的意思是你会成长为更多的服务器或一个实例就足够了。一旦你想提供存储集群,noSql通常是更好的方法,因为它经常以各种方式放松锁定,从而提高存储的吞吐量。

  2. 您的架构是固定的还是您将根据变量要求生成它?文档数据库支持blob持久性,它们不会强制你定义模式,你只需要持久化json等等。另一方面,key:value与redis一样,允许您将数据传播到可以单独处理的分离和非相关字段中。

  3. 您的疑问是什么?你打算从一张桌子上拿几个字段,或者为了得到整个json而有意义,因为你总是需要所有的字段吗?

答案 2 :(得分:0)

虽然我不确定个别数据元素的大小,但您的数字似乎不大。但总体而言,如果数据适合RAM,那么Redis对于您的用例来说将是一个不错的NoSQL存储。它具有丰富的数据类型支持,如列表,排序集,在您的情况下可能很有用(例如:假设在集合中存储测试的所有参数)。数据将定期(通常每秒)同步到磁盘,读取效率非常高。

相关问题