0

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

从数据库使用的角度来看:

  • 写入数据库是每次测试的,并且只会执行几次。所以它绝对不是写密集的。
  • 读取(查询)是主要用途。来自不同表的几个字段将用于创建复杂的查询。

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

我可以简单地使用 SQL 表,但我想利用这个机会学习并且也对 NoSQL 数据库持开放态度。这会属于 NoSQL 的“键值”类别吗?

4

3 回答 3

1

这取决于许多因素:

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

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

  3. 你有什么疑问。您是打算从一张表中取出几个字段,还是因为您总是需要所有字段而获得整个 json 才有意义?

于 2013-09-05T06:05:27.020 回答
1

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

于 2013-09-04T19:48:33.060 回答
0

尽管我不确定单个数据元素的大小是否合适,但您的数字似乎并不大。但总的来说,如果数据适合 RAM,那么Redis将是您的用例的一个很好的 NoSQL 存储。它具有丰富的数据类型支持,如列表、排序集,这在您的情况下可能很有用(例如:将测试的所有参数存储在一个集合中)。数据将定期(通常每秒)同步到磁盘,读取效率极高。

于 2013-09-05T06:52:34.583 回答