CouchDB和Lotus Notes有什么区别?

时间:2020-03-06 15:05:05  来源:igfitidea点击:

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

解决方案

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

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

可通过REST风格的API访问CouchDB。

CouchDB团队的Jan Lehnardt进行了播客采访。

不用回头再听一遍,我相信Damien Katz是Notes数据库的幕后推手,他是CouchDB的发起人,并且仍是该公司的首席开发人员。因此,我认为从某种意义上讲CouchDB是更好的Notes DB。他在博客中解释了一些差异。

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

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

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

Notes服务器体系结构没有任何问题,人们对此并没有那么讨厌。 Notes附带的实现和膨胀更多。

CouchDB也没有前端,只是一个服务器组件。 Notes客户端很糟糕,而这正是人们真正讨厌的。我们是否曾经尝试通过电子邮件发送电子邮件,我的意思是说Notes中的"备忘"内容?不愉快:(

Lotus Notes的开发始于20年前,1989年发布了版本1. 它是由Microsoft的首席软件架构师Ray Ozzie开发的。

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

  • 完整的客户端服务器堆栈,具有快速的应用程序设计和面向文档的数据库部署。
  • 完整的公钥基础结构,用于安全性和加密。
  • 一个健壮的复制模型和跨异构平台的活动主动集群(有人曾经展示了一个带有xbox和大型AIX服务器的多米诺骨牌集群)。
  • 内置的本机目录,用于管理用户,该目录也可以通过LDAP访问。
  • 一个内置的本机邮件系统,可以扩展以管理数百万个具有多个GB邮件文件的用户,并具有实时服务器访问权限或者本地复制以供离线访问。它可以通过SMTP与标准Internet邮件交互,并且内置POP和IMAP访问。邮件基础结构是一项核心功能,可用于基于Notes Domino构建的所有应用程序(数据库中的任何文档都可以通过一个简单的doc.send()命令)。
  • 内置的HTTP堆栈,允许通过Web访问服务器托管的数据库。
  • 用于访问,传输RDBMS和ERP系统以及与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可以在视图的映射索引上运行第二个约简函数。

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

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

CouchDB还具有复制系统。

--

简介(TL; DR):CouchDB是一种全新的软件,正在开发一个内核,该内核的概念与Lotus Notes Domino中所使用的相似,但设计更为复杂。 Lotus Notes Domino是一种成熟的功能齐全的产品,可以在今天进行部署。 CouchDB从头​​开始,为将来的功能开发奠定了坚实的基础。 Lotus Notes Domino正在继续开发新功能,但是正在努力保持向后兼容性的20年历史的平台上进行开发。我们可能希望CouchDB中包含Notes Domino中的功能,但是当今世界中Notes Domino中还有些不合时宜的功能。

CouchDB和Lotus Notes有什么区别?

众所周知,Lotus Notes很烂。

尚未证明CouchDB很烂。

好的,这是我的个人看法,但是我想说Lotus Notes吸引了我感兴趣的...具有Web前端的业务应用程序的数据存储。

这是我的Lotus Notes烂掉的一般原因的简短列表:

  • 没有事务支持-如果必须将多个任务作为一个单元执行,而一个任务失败,则无法回滚成功完成的任务的更改
  • Lotus Notes本质上是基于文档的,而不是关系的,因此不适合处理多个数据事务-这导致大量数据重复,这增加了数据库大小并创建了过时/不同步的数据场景。
  • 生产/开发环境之间没有分隔。如果我们在Lotus Notes Designer中出错,那么复制那些可能会删除生产中数据的更改太容易了
  • Lotus Notes包含的数据越多,从开发人员和用户的角度来看,可能会创建更多的视图,从而使应用程序的可管理性降低。
  • Lotus脚本不支持方法重载>>没有多态性>>使编码变得冗长且容易出错
  • Lotus脚本不支持多重继承
  • Lotus脚本是基于对象的,这意味着我们可以创建类并实例化对象
  • Lotus脚本不支持闭包,块/过程功能或者任何元编程构造
  • 该列表可能会很长,尤其是考虑到Lotus Notes的电子邮件实现时。

另一方面,鉴于应用程序需要存储面向文档的数据,CouchDB可能会非常有效。

关于CouchDB的酷事:

  • 非常适合必须管理具有任意数据属性的对象的应用程序
  • 性能...(适合并行处理)
  • REST / JSON介面

警告:技术使用不当已经伤害了许多IT项目……而不良的技术实施仍会造成痛苦。

@Lex,我们应该事先说出我们正在使用的Notes / Domino版本,因为注释不正确。

"无事务支持" Domino具有事务日志记录。如果我们想要更复杂的事务日志记录,也可以在编码中使用。

"不适合处理多个数据事务"实际上,它可以很好地处理它们。我们具有文档锁定和复制冲突解决方案。在很大程度上取决于我们如何设置应用程序以处理工作流。

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

" Lotus注释包含的数据越多,将可能创建的视图越多"。此注释绝对毫无意义。我认为我们没有以任何专业技能使用过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有所评论。