【问题标题】:Fetching the nth element from app engine datastore从应用引擎数据存储中获取第 n 个元素
【发布时间】:2010-07-01 08:17:02
【问题描述】:

我正在寻找一种有效且可扩展的方式来使用 java 低级 API 执行以下操作。我有一些排序顺序的查询,我想获取第 N 个实体。使用 offset 参数似乎不是一个好主意。

编辑背景: 我正在尝试使用 Memcache 为 DS 编写一个抽象层。存储在数据存储中的数据应该是任意的。方法示例: 获取实体(键) 添加实体(实体) getEntityByIndex(index, sort)

欢迎提出任何建议。

【问题讨论】:

    标签: google-app-engine indexing entity google-cloud-datastore


    【解决方案1】:

    如果您拥有的唯一信息是元素的索引,则使用偏移量是唯一的方法。正如您所观察到的,这效率不高(在任何数据库上,而不仅仅是数据存储区)。

    不过,根据您的情况,您可以使用其他解决方案,例如数据存储游标。

    【讨论】:

    • 不,除了排序顺序和实体索引之外,我无权访问任何内容。我考虑过使用游标。我的想法是在memcache中为每个第i个间隔比如100,200 ...维护一个游标索引。所以例如。要获得第 220 个元素,我将检查 memcache 中 200 处的指针并获取 100 个实体(无论如何都需要缓存这些实体)并在该结果中返回元素 nr 20。在此获取之后,我可以缓存指向 300 的指针。一个主要问题是即使添加单个实体也会使所有指针无效。所以我想知道是否有任何性能提升。评论?
    • 您能否提供一些有关您正在尝试做什么以及您的限制是什么的背景?
    • 我试图在上面给出一些背景。现在更有意义了吗?
    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2021-12-22
    • 2019-09-05
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多