我编写了一个用户在桌面上安装的Java应用程序。它抓取网站,将每个页面的数据存储在LinkedList中。该应用程序允许用户查看JTable中抓取的所有页面。
这适用于小型网站,但不能很好地扩展。目前,用户必须为更大的爬网分配更多内存(在启动Java时转换为-Xmx)。
我目前的想法是将所有数据存储在数据库中,可能使用类似HSQLDB的东西。
我还应该考虑其他方法吗?
答案 0 :(得分:0)
relation db不是存储网页数据的好地方。你能把页面保存在磁盘上吗?我想搜索爬行结果。尝试apache lucene搜索引擎。在内存中一次性加载所有结果是不合理的。你可以对JTable模型进行分页,并在分页时使用软引用来缓存一些结果。
答案 1 :(得分:0)
对于这种情况,关系数据库可能是正确的方法。原因:
答案 2 :(得分:0)
您基本上有4个选项:
你也可以做一个4的变体来获得一些空间 - 而不是一个“丰富的”对象结构,将每个不同的数据压缩成一个String或byte []或一些你保留在数组或arraylist vs链表。这可以将存储要求降低2倍或更多。较少“面向对象”,但有时候现实介入。
答案 3 :(得分:0)
尝试将页面数据存储在对象数据库db4o http://community.versant.com中。对象数据库处理复杂对象(例如,有许多兄弟姐妹)而不是关系数据库。