Database 一次又一次地查询数据库,还是一次将所有数据存储在一个文件中并查询文件?

Database 一次又一次地查询数据库,还是一次将所有数据存储在一个文件中并查询文件?,database,oracle,etl,talend,Database,Oracle,Etl,Talend,我正在创建一组Talend作业,其中我将根据作业的需要以不同的方式查询同一组表。这些桌子很大。如果在运行作业之前,我查询所有表,从数据库中获取所有数据并将它们存储在文件中,然后在Talend作业中使用这些文件进行各种查询,这将是一件好事。这些文件将存储在运行作业的同一位置,而DB server将存储在其他位置。如果我没有错的话,那么DBs本身就实现了某种缓存和索引,以使查询更快、更优化。那么,是否值得将它们存储在一个文件中,然后在Talend作业中查询它们?我正在使用Oracle数据库。我不会这

我正在创建一组Talend作业,其中我将根据作业的需要以不同的方式查询同一组表。这些桌子很大。如果在运行作业之前,我查询所有表,从数据库中获取所有数据并将它们存储在文件中,然后在Talend作业中使用这些文件进行各种查询,这将是一件好事。这些文件将存储在运行作业的同一位置,而DB server将存储在其他位置。如果我没有错的话,那么DBs本身就实现了某种缓存和索引,以使查询更快、更优化。那么,是否值得将它们存储在一个文件中,然后在Talend作业中查询它们?我正在使用Oracle数据库。

我不会这样做

根据您的许可证,您可能可以使用内存表。尽管如此,正如您所说,根据查询的大小,可能会有一些缓存

我会避免它,因为它会导致各种各样的问题:

  • 文件系统可能变得不可用
  • 本地文件系统中没有缓存,调用它可能要慢得多——甚至比处理速度还要慢
  • 所有数据库性能帮助程序(如索引、缓存、查询分析器)都将不可用
  • 需要实现某种数据库系统-这是愚蠢的b/c,那里已经有一个数据库了
不过,最好是在这个或另一个数据库中创建一个临时表


所以沉重的负担只会发生一次,我觉得这是个好主意。然后将在临时表上进行进一步处理。之后,在所有进程完成后,此临时表将被删除。

文件系统可能变得不可用是什么意思?根据您的设置,文件系统可能会损坏或断开连接,例如,在服务器上安装时。有了数据库,可能会有一个很好的副本/故障切换设置。有趣的是,在我的回答中,你只选择了一句话,尽管所有因素都应该说明不使用文件系统,但这句话只是大局的一小部分。我之所以选择这句话,只是因为我不理解它。其余的我做了。无论如何,谢谢你的帮助。