2016-01-11 47 views
2

我有服务器安装与nodejs和Aerospike。我想实现列出航行数据库中所有数据的分页。 Aerospike似乎不支持像limit,orderByskip这样的sql查询参数。使用LList可以部分解决问题,因为数据默认按键排序。也可以使用Aerospike Lua List,我们可以部分实现UDF使用list.take(number of elements from start)。 但是,由于该集合随着时间的推移将会变得非常大,OrderBy和Skip变得非常重要,并且无法通过UDF过滤有效地实现。 任何建议如何处理?分页与Aerospike Nodejs客户端

+0

采取将改变列表。我猜你想要的是一个发现? NodeJS客户端似乎支持服务器和其他客户端支持的功能。你可以看看如何实现findFrom(startValue,COUNT):http://bit.ly/1N3ynLg(在github java客户端回购上检查实现) 这一切归结为在服务器端调用正确的UDF如果你发现如何调用用于findFrom的udf,你可以将它用于分页。但是,如果您不想编写一个在同一个调用中同时提供计数和数据的UDF,则需要分别调用size()。 –

+1

Order-by不受支持,只有1个键可以排序。使用多个列表进行建模可能会有所帮助。 –

+0

让我检查并回复你 – pravin

回答

0

正如您已经提到的,Aerospike不支持限制& orderby种类的查询。解决此限制的一种方法是在列上创建二级索引并执行二级索引范围查询。假设您创建一个单调增加值的列。您可以从1-50,然后51-100等进行范围查询。

您可以在过滤记录的地方使用UDF。但它不会非常有效,因为集合扫描将处理集合中的所有记录,并且UDF过滤器只会返回50个(某些n个)结果。随着套装尺寸的增加,最终会浪费很多处理。