Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 将字典(单词)存储到谷歌云数据存储的最佳方式_Google App Engine_Google Cloud Datastore_Key Value Store - Fatal编程技术网

Google app engine 将字典(单词)存储到谷歌云数据存储的最佳方式

Google app engine 将字典(单词)存储到谷歌云数据存储的最佳方式,google-app-engine,google-cloud-datastore,key-value-store,Google App Engine,Google Cloud Datastore,Key Value Store,我想知道,最理想的方法是使用google App Engine/Java标准在google云数据库中存储大量字典单词,以便以后查询,查询输入是完整单词 我只需检查单词是否有效,即是否在列表中 我想我可以使用每个单词中的前几个字符作为实体的键,并将以这些字符开头的所有单词的哈希集存储为该特定实体中的值 然后,我检查我要搜索的单词的前几个字符,只看那个键 我觉得有更好的办法。但我已经在谷歌上搜索了很多次,都没有用 任何想法都将不胜感激 选项1: 将其存储在内存中,而不是数据存储中。在一个宏大的计划中

我想知道,最理想的方法是使用google App Engine/Java标准在google云数据库中存储大量字典单词,以便以后查询,查询输入是完整单词

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

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

然后,我检查我要搜索的单词的前几个字符,只看那个键

我觉得有更好的办法。但我已经在谷歌上搜索了很多次,都没有用

任何想法都将不胜感激

选项1:

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

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

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

备选案文2:

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


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

您是否考虑过使用搜索索引而不是数据存储?很抱歉延迟,我今天将对此进行研究,作为一种选择。很抱歉延迟。我在这个项目中使用Java,所以NDB不是一个选项,更遗憾的是。每次启动项目时,从文本文件加载到内存可能会非常慢?单词数据库是4MB未压缩的,正在考虑构建一个二进制搜索树对象并将其存储在谷歌云存储中,但我对此有点不确定。@TheDavil,这对于单词列表来说似乎太大了。你可能想找一个小一点的。我认为加载单词列表只需要不到一秒钟的时间。如果需要,还可以将单词列表拆分为2-3个实体,还可以将memcache与Java结合使用。