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