Pageable 不适用于 spring 数据 aerospike
Pageable not working with spring data aerospike
我正在使用 aerospike spring 数据
compile 'com.aerospike:spring-data-aerospike:1.0.2.RELEASE'
compile 'com.aerospike:aerospike-client:3.3.4'
compile 'com.aerospike:aerospike-helper-java:1.2'
当我尝试使用 pageable 时,我获取了所有记录,而不是只有包含特定记录集的一页
Page<Account> findByGender(String gender, Pageable pageable);
此方法在接口下列出
public interface AccountRepo extends AerospikeRepository<Account, UUID>
并通过传递性别和可分页来访问它
Pageable pageable = new PageRequest(page, pageSize);
Aerospike 是一个分布式数据库,这意味着扫描和查询会发送到集群中的所有节点。每个节点都与其他节点不共享,因此它们不协调返回的顺序或记录。同样,在节点扫描和查询中,多线程操作分布在核心中。这也是每次结果顺序不同的另一个原因。
分页的解决方法是在客户端缓存完整的结果集,然后在它们之间移动。在 RDBMS 中,内存是在服务器端分配的,用于排序和缓存结果。在分布式 RDBMS 中,需要指定一个特定的节点,将所有结果从其他节点移动到它,并且必须在那里进行缓冲、排序和缓存。 Aerospike 的设计理念是不以这种方式浪费服务器资源,而是将该操作的责任转移到应用程序端,让服务器集群以非常低的延迟处理许多请求。
在您的应用程序中,您应该对结果进行缓冲、排序和缓存,并通过该缓存进行分页。实际上,您可以使用有限的 TTL 将这些结果缓存回 Aerospike(例如内存中的命名空间)。
Piyush 在 Medium 上就此主题发帖:
我写了一些关于如何对扫描或查询结果进行排序的 Medium 帖子:
我正在使用 aerospike spring 数据
compile 'com.aerospike:spring-data-aerospike:1.0.2.RELEASE'
compile 'com.aerospike:aerospike-client:3.3.4'
compile 'com.aerospike:aerospike-helper-java:1.2'
当我尝试使用 pageable 时,我获取了所有记录,而不是只有包含特定记录集的一页
Page<Account> findByGender(String gender, Pageable pageable);
此方法在接口下列出
public interface AccountRepo extends AerospikeRepository<Account, UUID>
并通过传递性别和可分页来访问它
Pageable pageable = new PageRequest(page, pageSize);
Aerospike 是一个分布式数据库,这意味着扫描和查询会发送到集群中的所有节点。每个节点都与其他节点不共享,因此它们不协调返回的顺序或记录。同样,在节点扫描和查询中,多线程操作分布在核心中。这也是每次结果顺序不同的另一个原因。
分页的解决方法是在客户端缓存完整的结果集,然后在它们之间移动。在 RDBMS 中,内存是在服务器端分配的,用于排序和缓存结果。在分布式 RDBMS 中,需要指定一个特定的节点,将所有结果从其他节点移动到它,并且必须在那里进行缓冲、排序和缓存。 Aerospike 的设计理念是不以这种方式浪费服务器资源,而是将该操作的责任转移到应用程序端,让服务器集群以非常低的延迟处理许多请求。
在您的应用程序中,您应该对结果进行缓冲、排序和缓存,并通过该缓存进行分页。实际上,您可以使用有限的 TTL 将这些结果缓存回 Aerospike(例如内存中的命名空间)。
Piyush 在 Medium 上就此主题发帖: 我写了一些关于如何对扫描或查询结果进行排序的 Medium 帖子: