所以我有一个相当大的数据库,我希望在树形浏览器中显示其元数据(模式,表和列)(我使用Schemacrawler获取所有数据库数据,并使用树的JTree)。但是,因为有很多表和列,所以TableColumnRetriever类需要很长时间来获取列,这会导致我的实现出现瓶颈。
我的想法是现在对列进行延迟加载,这样只有在用户点击表时才会获取它们。 Schemacrawler中是否有一种方法只能在开始时获取模式和表(可能将SchemaInfoLevel设置为最小?)然后根据输入表/模式获取列?
ps:我用Java实现一切。
答案 0 :(得分:1)
SchemaCrawler没有您正在寻找的功能,无法加载增量加载的元数据。原因是SchemaCrawler构建了一个互连的对象模型图,您可以使用Java对象引用从一个表到一个外键到另一个表。但是,可能有几种方法可以解决您可以考虑的问题。一个是你可以让你的最终用户以正则表达式的形式向你提供他们感兴趣的表格的描述。您可以使用SchemaCrawler强大的grep功能来快速检索该信息。另一种方法是利用模式不经常更改的事实。您可以使用SchemaCrawler的内置功能在应用程序首次启动时缓存架构元数据。如果最终用户希望随时刷新架构,他们可以在理解可能需要时间的情况下执行此操作。否则,使用缓存数据,您的应用程序的性能将非常好。
Sualeh Fatehi,SchemaCrawler