appengine数据存储(java-JDO)如何存储和返回数据,即FIFO或LIFO?如果它的FIFO或NEITHER,我怎样才能使它成为LIFO?

时间:2011-02-13 18:34:00

标签: database google-app-engine google-cloud-datastore gql

我只是想知道我是否按时间顺序存储了一些数据,是否会按照最近或最近最近或最近最近的顺序返回?对于例如如果我按以下顺序输入数据:A[1], B[2], ...,如果我对表格执行简单的select查询,它是否会将列表作为{A, B, ...}{..., B, A}返回?假设我没有设置任何索引,即索引是由appengine自动设置的。我系统设计的一个关键部分取决于这些信息,所以我想在继续之前确认这些信息。任何帮助将受到高度赞赏。我需要数据检索采用LIFO格式,我该如何确保?

  • FIFO - 先进先出
  • LIFO - 先进先出

3 个答案:

答案 0 :(得分:1)

我很确定应用引擎数据存储区没有指定任何保证顺序,并且您使用的持久性框架(JPA?JDO?)也没有。因此,如果它很关键,那么将时间戳与您插入的每个数据一起存储,并为查询添加order by子句,以确保以适当的顺序检索对象。

答案 1 :(得分:1)

如果未指定排序顺序,将按键排序返回数据。如果您没有指定密钥名称,密钥的顺序将是它们的数字ID,这些ID通常会增加,但由于在运行的实例之间分配ID的方式,因此无法保证单调性。如果您需要保证特定订购,请在该属性上存储时间戳和订单。

答案 2 :(得分:1)

App Engine返回的实体的默认排序顺序 - 如果您未指定另一个实体 - 首先是您已过滤的任何不等式,然后是按键。如果您想按日期排序,则应该包含日期字段并对其进行明确排序。

在keys_only查询中过滤实体的字段是完全有效的。