0

我正在使用 React 构建一个简单的自定义无头 CMS,以通过 API Gateway 和 Lambda 在 Fauna 中保存数据。要在管理员中列出我的帖子,我想从我的集合中获取按日期值排序的数据。

当我创建一个新索引来执行此操作时,我希望获得与创建的默认索引中相同的数据/结构。但是,我发现它只返回在索引中明确定义的数据,没有任何键来描述存在的值。

我之前在没有上下文的情况下问过这个问题并得到了很好的回应,但我想更广泛地了解在 Fauna 中实现这一目标的最佳和最高效的做法是什么。除了创建索引之外,我还没有发现一种对数据进行排序的方法。

这种默认行为对我来说是反直觉的。似乎有一种更简单的方法可以以相反的顺序返回数据。我很想知道为什么这是默认行为。我敢肯定,比我聪明得多的人认为它有充分的理由。感谢您的任何指导。

4

1 回答 1

1

这确实是有充分理由的。与许多其他数据库相比,FaunaDB 决定不允许您做低效的事情,以使您免于令人不快的意外。当您对数据库中的数据进行排序时,它要么使用索引,通常会发生以下两种情况之一:

  • 定义了一个索引,因为您知道您将要这样做,您关心性能并且您考虑过它。索引用于排序。
  • 您忘记了索引,或者您的数据太小以至于您不在乎,查询引擎仍将执行此操作,但将以极其低效的方式执行此操作。

如果您最终在第二种情况下忘记了并且您在大量数据上执行此操作,那么您可能会遇到性能问题,如果该数据库是自动扩展和按需付费的,那么就可以了......没问题......数据库应该可以处理,但是因为是现收现付,所以会很贵。

排序也同样重要。也许数据库有一种巧妙的方法来反转排序顺序,但它也可能不使用索引并通过运行完整的数据集直到最后并开始以相反的顺序读取来做一些超级低效的事情。

为了避免令人讨厌的定价意外,如果不提前定义索引,您可以做的大多数需要索引才能有效完成的事情都是不可能的。

这就是你要找的答案吗?

于 2020-06-29T19:23:48.397 回答