CouchDB和Lotus Notes有什么区别?

时间:2008-10-03 16:22:24

标签: database couchdb lotus-notes

我正在研究使用CouchDB的可能性。我听说它类似于Lotus Notes,每个人都喜欢讨厌。这是真的吗?

8 个答案:

答案 0 :(得分:48)

Lotus Notes的开发始于20多年前,version 1 released in 1989。它由Ray Ozzie开发,现任微软首席软件架构师。

Lotus Notes(客户端)和Domino(服务器)已经存在了很长时间,并且是成熟的特色产品。它有:

  • 一个完整的客户端服务器堆栈,具有快速应用程序设计和面向文档的数据库的部署。
  • 用于安全性和加密的完整公钥基础结构。
  • 一个强大的复制模型和跨异构平台的主动主动群集(曾经有人展示了一个带有xbox and a huge AIX server的多米诺群集。
  • 用于管理用户的内置本机目录,也可以通过LDAP访问。
  • 内置的本机邮件系统,可以扩展以管理具有多GB邮件文件的数百万用户,具有实时服务器访问权限或在本地进行复制以进行脱机访问。这可以通过SMTP与标准Internet邮件连接,并且内置POP和IMAP访问。邮件基础结构是可用于构建在Notes Domino上的所有应用程序的核心功能(数据库中的任何文档都可以邮寄到任何其他数据库一个简单的doc.send()命令)。
  • 内置HTTP堆栈,允许通过Web访问服务器托管数据库。
  • 用于访问,传输和与RDBMS和ERP系统互操作的大量集成选项,与DB2紧密集成,允许Notes数据库在需要时由关系存储支持。

向后兼容性始终是Notes Domino的强大功能,并且在最新版本中找到为版本3开发的数据库并不常见。 IBM为此付出了巨大的努力,它对产品目前的运作方式产生了重大影响。

-

CouchDB由Damien Katz创建,于2004年开始开发。他之前曾在IBM为Notes Domino工作,开发模板并最终完全重写ND6的核心功能之一,即公式引擎。

CouchDB与Notes Domino具有的视图共享面向文档的数据库的基本概念。

在这个模型中,“文档”只是存储某些方式的值的任意集合。在CouchDB中,文档是任意复杂度的JSON对象。在Notes中,值是简单的名称值对,其中值可以是字符串,数字,日期或数组。

视图是数据库中文档的索引,显示某些值,计算其他值并排除不需要的文档。构建索引后,当数据库中的任何文档发生更改(创建更新或删除)时,它们会逐步更新。

在CouchDB中,通过在数据库中的每个文档上运行映射函数来构建视图。映射函数为要为给定文档创建的每个索引条目调用带有JSON对象的emit方法。这个JSON对象可以是任意复杂的。然后,CouchDB可以在视图的映射索引上运行第二个reduce函数。

在Notes中,Domino视图是通过在数据库中的每个文档上运行select函数(用Notes Domino公式语言编写)构建的。 select函数只是定义文档是否应该在视图中。 Notes Domino视图设计还为视图定义了许多列。每列都有一个针对所选文档运行的公式,以确定该列的值。

CouchDB能够生成比Notes Domino更复杂的视图索引。

CouchDB也有一个复制系统。

-

摘要 TL; DR ):CouchDB是一款全新的软件,正在开发具有类似概念但更复杂的核心设计到Lotus Notes Domino中使用的设计。 Lotus Notes Domino是一种成熟的全功能产品,现在可以部署。 CouchDB从头​​开始,为未来的功能开发奠定了坚实的基础。 Lotus Notes Domino正在继续开发新功能,但是在20年前的平台上这样做是为了保持向后兼容性。 Notes Domino中有一些您可能希望在CouchDB中使用的功能,但Notes Domino中的功能在当今世界中也是不合时宜的。

答案 1 :(得分:10)

人们通常讨厌的是Notes应用程序和UI。不是背后的架构。

答案 2 :(得分:6)

Damien Katz曾在Iris(Lotus)工作,但他并不是Notes数据库背后的人。他在Lotus Notes社区中以重新设计Notes Formula Engine而闻名 CouchDB和Lotus Notes之间肯定存在一些相似之处,例如面向文档的非关系数据和复制功能,但它们与类似的不同。 CouchDB是一个数据库服务器,Lotus Notes是一个企业级协作平台。

答案 3 :(得分:5)

@Lex,您应该预先说明您正在处理的Notes / Domino版本,因为您的评论不正确。

“无事务支持” - Domino具有事务日志记录功能。如果您想要更复杂的事务日志记录,也可以在编码中使用。

“不太适合处理多个数据交易” - 实际上它处理它们就好了。您有文档锁定和复制冲突解决方案。取决于您如何设置应用程序来处理工作流程。

“生产/开发环境之间没有分离。” - 错。唯一可行的方法是,如果您的环境部署得很糟糕。开发人员通常应该有0访问权限,可以将设计更改部署到生产环境中。他们将处理不复制到主服务器的模板。更新完成并获得批准后,管理员将对其进行部署。他们通过获取模板并使用允许在生产中运行的受控签名对其进行签名,然后删除模板并更新相关应用程序的设计来实现此目的。

“Lotus notes包含的数据越多,创建的视图就越多” - 这个评论绝对没有任何意义。我不相信你已经在任何专业能力中使用过Notes / Domino。

“莲花剧本不是面向对象的” - 是的,你在那里说得好。然而,这并不意味着语言存在缺陷。自8.x和8.5.1以来,他们也进行了大量改进。例如内置的Web服务支持(指向WSDL和LS代码是为您制作的)。 8.5.1还有许多新的设计器功能,如代码模板,自动完成,LSDoc弹出帮助功能等等。

您也只触及LotusScript。但你也可以编写代码: Java,SSJS / DOJO(XPages),Javascript,@ Formula语言,Web服务(SOAP / REST),C-API,Eclipse插件(RCP)。以JSON和XML输出。

8.5.1如果您想测试它,可以免费下载Designer客户端。

因此,虽然我认为我无法对CouchDb发表评论,但你肯定不会在Notes / Domino上发表评论。

答案 4 :(得分:1)

Lotus Notes客户端/ Domino服务器由一个对象(“文档”) - 存储(非关系)机制组成,具有完全集成的基于证书的安全模型/用户管理和冲突解决方案,用于将脱机/在线更改同步到数据 - 它是分布式应用程序的平台。

CouchDB是一个面向文档的非关系数据库管理服务器(NRDBMS)。”

可以通过REST样式API访问CouchDB。

答案 5 :(得分:1)

CouchDB团队here的Jan Lehnardt接受了播客采访。

如果不再回头再听一遍,我相信作为发起人的Damien Katz仍然是CouchDB的首席开发人员,也是Notes数据库背后的人。所以我觉得CouchDB是一个更好的Notes数据库。他解释了his blog中的一些差异。

答案 6 :(得分:0)

它类似于Notes处理数据的方式,因为所有内容都是任意结构的文档,并且您可以查看这些文档而不是像关系数据库中那样的表和记录。复制等也有一些相似之处。

Notes服务器架构没有任何问题,人们不会那么讨厌。这更多是Notes附带的实现和膨胀。

CouchDB也没有前端,只是一个服务器组件。 Notes客户端很糟糕,而这正是人们真正讨厌的。您有没有试过发送电子邮件呃我的意思是“备忘录”来自Notes的东西?不愉快:(

答案 7 :(得分:-6)

CouchDB和Lotus Notes之间有什么区别?

众所周知,Lotus Notes很糟糕。

CouchDB尚未被证实有吸引力。

好的,这是个人意见,但我会说Lotus Notes对我感兴趣的东西很糟糕......一个有网络前端的商业应用程序的数据存储。

以下是Lotus Notes糟糕的一般原因的简短列表:

  • 无事务支持 - 如果必须以单元形式执行多个任务,并且一个任务失败,则无法回滚已成功完成的任务的更改

  • Lotus Notes本质上是基于文档的,而不是关系,不适合处理多个数据事务 - 这会导致大量数据重复,从而增加数据库大小并产生潜在的陈旧/失败同步数据场景。

  • 生产/开发环境之间没有分离。如果你在莲花笔记设计师中犯了错误,那么复制那些可能会删除生产中的数据的变化就太容易了

  • Lotus Notes包含的数据越多,可能会创建的视图越多,从开发人员和用户的角度来看,应用程序的可管理性就越低。

  • lotus脚本不是面向对象的:

    • lotus脚本不支持接口
    • lotus script不支持方法重载>>没有多态性>>使编码 - 冗长且更容易出错
    • lotus脚本不支持多重继承
    • lotus脚本是基于对象的,这意味着您可以创建类并实例化对象
    • lotus script不支持闭包,阻止/ proc功能或任何元编程构造
  • 该列表可能会非常冗长,尤其是在考虑Lotus Notes的电子邮件实现时。

另一方面,如果您的应用程序需要存储面向文档的数据,那么CouchDB可能非常有效。

关于CouchDB的好消息:

  • 非常适合必须使用任意数据属性管理对象的应用程序

  • 性能......(适合并行处理)

  • REST / JSON界面

警告:不正确的技术使用已经损害了相当多的IT项目......而糟糕的技术实施继续造成痛苦和痛苦。

相关问题