Lotus notes 创建损坏的Lotus数据库

Lotus notes 创建损坏的Lotus数据库,lotus-notes,lotus-domino,lotus,Lotus Notes,Lotus Domino,Lotus,我们的应用程序连接到LotusDomino服务器并在其数据库上工作。有一次,我们在一台客户机的服务器上看到一个损坏的数据库,无法用LotusNotes客户机打开。不幸的是,在我们请求副本之前,客户的工作人员已经将其删除了,但是我们也想用这种损坏的数据库测试应用程序的错误处理 我们还尝试使用十六进制编辑器修改好的数据库中的一些随机字节,使其损坏,但没有成功。我们正在寻找一种创建损坏数据库或免费下载数据库的方法 IBM没有记录NSF文件的详细内部结构,因此没有很好的指南来模拟损坏的数据库 但是,如果

我们的应用程序连接到LotusDomino服务器并在其数据库上工作。有一次,我们在一台客户机的服务器上看到一个损坏的数据库,无法用LotusNotes客户机打开。不幸的是,在我们请求副本之前,客户的工作人员已经将其删除了,但是我们也想用这种损坏的数据库测试应用程序的错误处理


我们还尝试使用十六进制编辑器修改好的数据库中的一些随机字节,使其损坏,但没有成功。我们正在寻找一种创建损坏数据库或免费下载数据库的方法

IBM没有记录NSF文件的详细内部结构,因此没有很好的指南来模拟损坏的数据库

但是,如果将所有字节修改为零,那么肯定会导致数据库非常损坏。测试应用程序的行为不会特别有用,而且这很可能不是您在客户端服务器上看到的同一类型的损坏


NSF有许多可能被破坏的方式。有些由服务器自动修复。有些会阻止数据库被打开。有些允许您打开数据库,但会阻止读取或更新。有些可能会导致API调用返回的数据丢失或损坏。有些会使Notes API核心DLL崩溃。我真的认为不可能测试代码的行为是否存在所有可能的损坏类型。无论如何,不是在合理数量的测试用例中。(也就是说,我猜在最小大小的NSF中随机将一个非零字节归零的情况大约有1000例,很有可能造成大多数可能的不同类型的损害。)

IBM没有记录NSF文件的详细内部结构,因此,没有很好的指南来模拟损坏的数据库

但是,如果将所有字节修改为零,那么肯定会导致数据库非常损坏。测试应用程序的行为不会特别有用,而且这很可能不是您在客户端服务器上看到的同一类型的损坏


NSF有许多可能被破坏的方式。有些由服务器自动修复。有些会阻止数据库被打开。有些允许您打开数据库,但会阻止读取或更新。有些可能会导致API调用返回的数据丢失或损坏。有些会使Notes API核心DLL崩溃。我真的认为不可能测试代码的行为是否存在所有可能的损坏类型。无论如何,不是在合理数量的测试用例中。(也就是说,我猜在最小大小的NSF中随机将一个非零字节归零的情况大约有1000例,很有可能造成大多数可能的不同类型的损害。)

最好将Lotus Notes/Domino数据库的内部结构描述为一个容器模型,要获取其中的数据,需要访问受其ACL(访问控制列表)保护的数据库容器。一旦你的内部几乎所有东西都是一个“文档”,一个由其UNID标识的唯一记录。其中一些“文档”是设计元素,如表单、代理、视图(甚至其ACL)等,而另一些是实际的数据记录。腐败涉及一个或多个破坏,具体取决于它是什么以及破坏的程度,取决于您试图打开数据库或通过web、notes客户端或第三方软件访问数据库时的体验

综上所述,我看不出创建一个“腐败”的数据库进行测试有多大好处,因为要使其有效,您需要知道您正在破坏什么。IBM保护这一点,并且将始终保护这一专有信息,因为他们不希望任何人构建替代Notes客户机


我要补充的最后一点是,在将近15年的Notes开发工作中,我很少遇到腐败问题,因此编写代码来分析很少发生的腐败问题没有多少商业理由,在绝大多数情况下,代码中良好的错误处理就足够了。

Lotus Notes/Domino数据库的内部结构最好描述为容器模型,要获取其中的数据,您需要访问受其ACL(访问控制列表)保护的数据库容器。一旦你的内部几乎所有东西都是一个“文档”,一个由其UNID标识的唯一记录。其中一些“文档”是设计元素,如表单、代理、视图(甚至其ACL)等,而另一些是实际的数据记录。腐败涉及一个或多个破坏,具体取决于它是什么以及破坏的程度,取决于您试图打开数据库或通过web、notes客户端或第三方软件访问数据库时的体验

综上所述,我看不出创建一个“腐败”的数据库进行测试有多大好处,因为要使其有效,您需要知道您正在破坏什么。IBM保护这一点,并且将始终保护这一专有信息,因为他们不希望任何人构建替代Notes客户机

我要补充的最后一点是,在将近15年的Notes开发工作中,我很少遇到腐败问题,因此编写代码来分析很少发生的腐败问题没有多少商业理由,在绝大多数情况下,代码中良好的错误处理就足够了