先简单介绍一下剧情。数据库是 Sybase。有一些 2-3 k 存储过程。存储过程可能会返回大量数据(大约百万条记录)。将有一个服务(servlet / spring 控制器)调用所需的过程并将数据以 xml 格式刷新回客户端。
我需要应用过滤(在多列和多个条件上)/排序(基于一些动态标准),我已经完成了。
问题是,由于数据量很大,在内存中进行所有过滤/排序并不好。我想到了以下选项。
选项 1: 一旦我得到 ResultSet 对象,请阅读一些 X 号。记录,过滤它,将其存储在某个文件中,重复此过程直到读取所有数据。然后只需读取文件并将数据刷新到客户端。
我需要弄清楚如何对文件中的数据进行排序以及如何将对象存储在文件中,以便快速过滤/排序。
选项 2: 查找一些 Java API,它获取数据、过滤数据并根据给定标准对其进行排序,然后将其作为流返回
选项 3: 使用内存数据库,如 hsqldb、h2database,但我认为这会产生开销而不是帮助。我需要先插入数据然后查询数据,这也将反过来使用文件系统。
注意我不想修改存储过程,所以在数据库中进行过滤/排序的选项不是一个选项,或者如果没有其他方法,可能是最后一个选项。
此外,如果有帮助,我从 ResultSet 读取的每条记录都将其存储在 Map 中,键是列名,此 Map 存储在 List 中,我在其上应用过滤和排序。
您认为哪个选项有利于内存占用、可扩展性、性能方面或任何其他适合此场景的选项?
谢谢