更新索引问题,和数据库相关
jinhanjiang
2008-06-26
现在我有这样的情况.
只从数据库取数据,不对数据库操作(增,删,改). 从数据库取出数据后创建索引, 当有新数据插入的时候, 我是根据一个时间段来追加索引的. 在这个时间段内,数据库有可能发生, 对数据的更新,删除操作, 这时在追加索引时, 我想先删除数据库中那些更新,删除的数据, 再对更新,增加的数据追加索引. 现在问题是:如何获取那些更新,删除的数据(id即可). 这里,除查询外不对数据操作. |
|
jinhanjiang
2008-06-27
我问了下jolestar,太感谢他了.终于遇到一同到中人.他分析说可以这样做.
在删除,或更新的时候,把那条数据的id保存在一个文件中,在我这边索引更新的时候,用File去读id,再删除. 现在只有先通知有对数据库操作权限的那么做了. 不知道大家还有什么好的方法.可以分享出来. |
|
SeanHe
2008-06-27
数据库里写一个Trigger做增删改的操作都往一张日志表写数据,日志表的字段包括原数据的ID和操作类型等,这样做可以保持你的业务代码很干净不会加入和业务无关的逻辑
|
|
titanfoot
2008-07-06
agree with SeanHe
|
|
edwardpro
2008-07-07
方法好,但是频繁操作是否会对索引效率产生就较大影响?比如1分钟 2分钟一次的话.在我看来如果不是高频率还不如重新抓来得方便简单,完全可以抓在一个临时地方,然后再用cp方法拷贝到目标索引位置,这样似乎更省事.
|
|
jinhanjiang
2008-07-08
如果重新抓取放一临时地方,在cp的时候,目标索引的文件有一个被占用着.该不能被替掉吧.
|
|
moshalanye
2008-07-09
agree with SeanHe 不过在这边有点建议,不管做更新删除添加,还是不要在目标索引中,可以copy在一个零时目录,批量对零时目录进行删除更新和删除的数据,新建另外的一个目录 对添加和修改的数据建索引,全完成后,就合并索引,这样就形成了一次备份 如果是先对目标索引备份后,再到目标索引中做删除操作也可以
这样数据量大的时候并发可以快些 |