【问题标题】:What is the best way to return most recent posts from Fauna DB for a blog, etc从 Fauna DB 返回博客等最新帖子的最佳方式是什么
【发布时间】:2020-10-19 20:37:27
【问题描述】:

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

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

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

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

【问题讨论】:

  • 另外,有趣的是,您正在构建什么。会开源吗?我很想看看你的方法:)
  • 我什至没有想过开源它。这根本不是一个坏主意。与其他 CMS 一起跳槽时我感到非常沮丧,所以我决定自己动手。前端将是一个解耦的 Gatsby 站点,所以我刚开始使用 Gatsby 进行这个项目,尽管实际上没有什么可构建的。当我把它送到一个像样的地方时,我会告诉你的。非常感谢您的帮助!

标签: faunadb


【解决方案1】:

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

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

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

排序的计数相同。也许数据库有一种巧妙的方法来反转排序顺序,但它也可能不使用索引,而是通过遍历完整的数据集直到最后并开始以相反的顺序读取来做一些非常低效的事情。

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

这就是你要找的答案吗?

【讨论】:

  • 这真的有助于我理解。我一直在从我的小项目的角度思考问题,而更大的数据集揭示了对此的需求。如果我提供了足够的细节来推测我的项目,你会推荐你在我的previous question 中提供的两个选项之一,还是会有另一个最佳实践?谢谢!
  • 我总是推荐: - 从 Map/Get 方法开始,它更灵活,但你会产生更多的读取。但是,您的数据模型在开始时仍会发生变化,我假设您一开始不会有那么多数据,因此您甚至可能在一段时间内仍处于免费层之下。 - 如果您觉得您的数据模型非常稳定并且您想要优化的频繁调用,请使用您需要的所有值创建一个专用索引,然后仅在此时使用第二种方法。在此之前可能是过早的优化。
  • 这是有道理的。非常感谢您的帮助。
猜你喜欢
  • 2012-04-08
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多