orientdb OVER(替换分区

orientdb OVER(替换分区,orientdb,graph-databases,Orientdb,Graph Databases,我正在通过一个数据库实例从Oracle移植到OrientDB。在Oracle中,我们使用over(PARTITION BY)来过滤数据,但我还没有找到一种在OrientDB中实现这一点的可用方法 我们有一个车辆表和位置表。在我们的模型中,车辆可以有多个位置和一个或多个当前位置。在Oracle中,我们通过在视图定义中执行以下操作,设置了一个管理当前位置的视图: SELECT LOCATION_ID, VEHICLE_ID, TIME ( FROM SELECT LOCATION ID, VEH

我正在通过一个数据库实例从Oracle移植到OrientDB。在Oracle中,我们使用over(PARTITION BY)来过滤数据,但我还没有找到一种在OrientDB中实现这一点的可用方法

我们有一个车辆表和位置表。在我们的模型中,车辆可以有多个位置和一个或多个当前位置。在Oracle中,我们通过在视图定义中执行以下操作,设置了一个管理当前位置的视图:

SELECT LOCATION_ID, VEHICLE_ID, TIME (
  FROM SELECT LOCATION ID, VEHICLE_ID, TIME, 
    MAX(TIME) OVER (PARTITION BY VEHICLE_ID) AS MAX_TIME FROM LOCATION)
WHERE TIME = MAX_TIME ORDER BY VEHICLE_ID
在Orient DB中,我创建了两种顶点类型:Vehicle and Location和hasLocation的Edge类型,其中包含Vehicle_ID、Location_ID、Location_TIME、hasLocation.In和hasLocation.out的索引。我能够得到正确的结果,但不完全符合我们的需要

SELECT in.LOCATION_ID as LOCATION_ID from hasLocation where out.VEHICLE_ID = 'Vehicle-12'
AND in.TIME in (
  SELECT max(OUT('hasLocation').TIME) as MAX_TIME FROM VEHICLE WHERE
    uuid = 'Vehicle-12')
我还处于开发的早期阶段,所以我正在尝试找出最好的方式来展示数据,并仍然能够获得我们所需要的。我们当前的车型有大约5万辆车,拥有10万个位置,并且增长很快。 我可以通过上述实现获取一辆车的数据,但另一个常见的请求是“100辆车的当前位置是什么?”(第101-200页)或“给定100辆车的ID,它们的当前位置是什么?”

对于如何更好地布局顶点和边以及如何使用更好的sql函数来获取所需数据的任何帮助,我都将不胜感激。我还尝试过将位置创建为链接集/列表,我只是不知道最好的“graph db”布局可能是什么。
谢谢。

你能发布课程位置和车辆的模式吗?我正在运行一个非常基本的测试模式,以找出建立这种特定关系的最佳方法。除了位置和车辆顶点以及如上所述的hasLocation edge之外,没有其他方法。我还提出了一个解决方案,我不确定这是最佳选择。我使用上面的SELECT in.LOCATION\u ID代码作为javascript函数,并创建了第二个函数,该函数获取车辆ID列表,并将这些车辆ID一次发送给上面的函数。似乎应该有更好的方法在图中对此进行建模。