确定文件中更改的字节的开始和结束范围
-
08-07-2019 - |
题
我正在开发一个在我们公司内部使用的小实验实用程序,该实用程序可以对存储在我们的自定义 CRM 软件中的注释进行索引,以进行全文搜索。这些注释存储在 Btrieve 数据库中(名为 NOTES.DAT 的文件)。可以使用 Pervasive 的 ADO.NET 提供程序连接到数据库并检索注释以建立索引。但是,索引器当前会循环遍历每个注释,并每 5 分钟重新索引一次。这看起来效率极低。
不幸的是,我们的 CRM 软件无法向索引服务发出注释已更改的信号,因为数据库可能存在于远程计算机上(并且开发人员不会编写程序来与我的计算机进行通信)。通过网络提供服务,因为目前这只是一个业余爱好项目)。
我不想放弃,而是想借此机会更多地了解原始 Btrieve 数据库。所以,这是我的计划......
NOTES.DAT 文件必须共享,因为我们的 CRM 软件使用 Btrieve API 而不是 ODBC 驱动程序(这意味着客户端安装必须能够在网络上看到该文件本身)。我想监视这个文件(使用类似 FileSystemWatcher 的东西?),然后确定更改的字节。使用该信息,我将尝试计算该位置的记录并获取其主键。然后索引器将使用 Pervasive 的 ADO.NET 提供程序仅更新该记录。
问题(除了我还不太了解 Btrieve 文件的结构或者是否可以从原始数据确定主键这一事实之外)是我不知道如何确定字节的开始和结束范围在NOTES.DAT 中进行了更改。
我可以比较两个版本,但这意味着在某个地方存储一份 Notes.DAT 的副本(它可能非常大,因此需要全文索引服务)。
最有效的方法是什么?
谢谢!
编辑:在一笔事务中可能会添加、编辑或删除多个注释,因此如果可能,该方法需要能够确定多个单独的字节范围。