【问题标题】:Serving back-end data from memory (rather than a DB) [closed]从内存(而不是数据库)提供后端数据[关闭]
【发布时间】:2017-10-29 03:35:03
【问题描述】:

我正在考虑编写一个小型 SPA,用作视频游戏中资产(玩家可以使用的车辆、武器等)的“数据库”查看器。我希望用户能够形成关于什么类型的车辆/武器/等的高级查询。他们希望根据每个对象具有的一系列属性来查看(您可以根据项目属性的值在 Amazon 或 Newegg 中过滤掉项目)。

我的问题与存储数据的位置和方式有关。

它采用 10MB JSON 文件的形式,太大而无法捆绑到 SPA 的客户端代码中,这意味着我将不得不以某种方式从后端提供它(可能是 Express 应用程序) )。我可以轻松地将它放入 MongoDB,但我想知道这是否有点过头了。

在这种情况下,您的数据大约为 10MB(约 10,000 个项目的数组),您的 Express 应用程序是否可以简单地将 JSON 文件加载到内存中的项目对象数组中,并拥有 REST 端点只是执行原生 JavaScript 数组操作来过滤和排序主集合以生成子数组(或单个项目)返回?有什么理由这样做吗?

显然,如果您的数据具有一定的大小,您可能希望将其放入数据库中,但我对截止点在哪里或您将如何做出决定(假设我的建议不是)非常模糊完全可笑)。

【问题讨论】:

  • 您考虑过使用service worker 吗?
  • 我对他们了解不多。他们如何在这种情况下提供帮助?
  • 你可以用它们缓存你的静态资源
  • 您可能还想考虑SQLite for node。它是一个完整的 SQL DB,包含在一个文件中。不需要服务器。话虽如此,我肯定会采用你的方法。

标签: javascript json database express


【解决方案1】:

如果您没有过多地更改对象的内容,那么这当然是可能的并且很容易做到。甚至为您提供了相当强大的查询选项。如果您需要更新信息,那么您将通过将其全部保存在内存中来限制可伸缩性,并增加丢失数据的风险。

更新

对于查询,我假设您正在运行支持 ES5 和 6 数组原型的最新版本的 Node。如果是这样,使用 Array.filter 是一个很好的基本查询。如果您需要更复杂或更复杂的东西,或者不能依赖现代 JavaScript,那么下一个选择是 Lodash,它具有非常丰富的集合操作。

【讨论】:

  • 这将是只读的,因此不会丢失任何数据(反正我还没有)。您会推荐哪些查询选项?
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 2020-12-28
  • 1970-01-01
相关资源
最近更新 更多