诚然,我的大部分数据库经验都是关系型的。该领域的原则之一是避免通过网络移动数据。这通过使用类似的东西来体现:
select * from person order by last_name limit 10
这可能会在数据库引擎中排序和限制,而不是使用类似的东西:
select * from person
随后在客户处订购并获得前 10 名,如果有 100 万人的记录,这可能会产生灾难性的影响。
所以,对于 Gremlin(来自 Groovy),如果我这样做:
g.V().has('@class', 'Person').order{println('!'); it.a.last_name <=> it.b.last_name}[0..9]
我看到的是!
打印出来的,所以我假设这Person
会在订单和限制步骤之前将所有记录带入我客户的地址空间,这不是预期的效果。
我完全在数据库引擎中处理查询的选项是否成为特定于产品的(例如,对于 orient-db,可能以他们的 SQL 风格提交查询),还是我缺少关于 Gremlin 的一些东西?