我在一个MSSQL服务器上拥有这个大数据库,其中包含由网络爬虫索引的数据。 我每天都想使用位于另一个服务器和另一个网络中的DataImportHandler来更新SOLR SearchEngine索引。
Solr DataImportHandler使用查询从SQL获取数据。例如此查询
SELECT * FROM DB.Table WHERE DateModified > Config.LastUpdateDate
ImportHandler会选择8种此类型。每个选择都将从数据库获得1000行。
要连接到SQL SERVER我正在使用 com.microsoft.sqlserver.jdbc.SQLServerDriver
我可以为连接添加的参数是:
所以我的问题是:
每天进行此查询时可能出现什么问题?(网络错误除外) 我想知道SQL Server在这种情况下是如何工作的?
此外,我必须对我实现此导入的方式以及如何处理错误做出决定,但首先我需要知道可能出现的错误。
谢谢!
稍后修改
我的问题是我不知道这个SQL查询怎么会失败。当我每天呼叫这个导入器时,它会对数据库进行10次查询。如果第5次查询失败,我必须选择: 回滚整个事务并再次执行,或者提交我从前4个查询中获得的数据,并以某种方式重做查询5到10.但如果这些查询总是失败,由于其他一些问题,我需要考虑另一种导入方式这个数据。
由于超时操作或类似的事情,这个基于互联网的SQL查询是否会失败?
答案 0 :(得分:0)
使用此类导入后我发现的唯一问题是:
感谢@GuidEmpty提供了他的comment并为我澄清了这一点。
答案 1 :(得分:-1)
权限可能存在问题(不确定是否可以控制这些权限)。
抓住你能想到的异常并包含一个全部捕获(Exception exp)可能是一个好主意。
然后将整体作为最坏情况并回滚(您可以在哪里)并记录异常以便稍后包含。
您没有说明您选择的是哪种类型,请记住text / blob会占用更多空间,如果您缓冲任何数据等,可能会导致内部问题。
虽然只是快速重新阅读,但如果您只是选择,则无需回滚。
我认为你最好考虑一下你希望实现的目标,以及了解所有可能的问题是否会有所帮助?
HTH