【问题标题】:Best way to store a dictionary (of words) into Google Cloud Datastore将字典(单词)存储到 Google Cloud Datastore 的最佳方式
【发布时间】:2018-03-22 09:55:41
【问题描述】:

我想知道在谷歌云数据存储(使用 Google App Engine/Java 标准)中存储大量字典单词(例如 https://github.com/dwyl/english-words)的最佳方法是什么,以便稍后查询,查询输入是完整的词。

我只需要检查单词是否有效,即在列表中。

我认为我可以使用每个单词中的前几个字符作为实体的键,并将以这些字符开头的所有单词的 HashSet 存储为该特定实体中的值。

然后我检查我正在搜索的单词的前几个字符并只查看那个键。

我觉得有更好的方法来做到这一点。但我一直在谷歌上搜索很多,但无济于事。

任何想法都将不胜感激!

【问题讨论】:

  • 您是否考虑过使用搜索索引而不是数据存储区?
  • 抱歉耽搁了,我今天会考虑这个选项

标签: google-app-engine google-cloud-datastore key-value-store


【解决方案1】:

选项 1:

将其存储在内存中而不是数据存储中。单词列表在宏伟的计划中是相当小的。

您可以将数据与代码一起存储。在您的一个模块中,将文件中的数据读取到适合您的任何数据结构中。此操作只会在实例启动时执行,因此不会拖累您的响应时间。

请注意,您不能在 GAE 中写入磁盘,但可以从磁盘读取。

选项 2:

将其存储在具有 JSON 属性或 Pickle 属性甚至重复字符串属性的单个实体中。您可以使用压缩来确保不超过 1MB 的实体大小。

如果您使用的是 Python NDB,自动缓存将使这非常有效。

【讨论】:

  • 抱歉耽搁了。我在这个项目中使用 Java,所以 NDB 不是一个选项(更遗憾的是)。每次启动项目时从文本文件加载到内存可能会很慢? words 数据库是 4MB 未压缩的,正在考虑构建一个二叉搜索树对象并将其存储在谷歌云存储中,但我对此有点不确定。
  • @TheDavil,这对于一个单词列表来说似乎太大了。你可能想找一个更小的。我认为加载单词列表将花费不到一秒钟的时间。如果需要,您还可以将单词列表拆分为 2-3 个实体,也可以将 memcache 与 Java 一起使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 2020-10-03
  • 2015-07-16
  • 1970-01-01
相关资源
最近更新 更多