我正在研究使用 CouchDB 的可能性。听说它和Lotus Notes类似,让人又爱又恨。这是真的?

有帮助吗?

解决方案

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

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

  • 完整的客户端服务器堆栈,具有快速应用程序设计和面向文档的数据库的部署。
  • 用于安全和加密的完整公钥基础设施。
  • 跨异构平台的健壮复制模型和主动主动集群(有人曾经展示过一个多米诺骨牌集群) xbox 和一个巨大的 AIX 服务器).
  • 用于管理用户的内置本机目录,也可以通过 LDAP 访问。
  • 内置的本机邮件系统,可以扩展以管理数百万具有多 GB 邮件文件的用户,具有实时服务器访问或本地复制以供离线访问。它可以通过 SMTP 与标准互联网邮件连接,并且还内置 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 Domino 中,视图是通过对数据库中的每个文档运行选择函数(用 Notes Domino 公式语言编写)来构建的。选择函数只是定义文档是否应该在视图中。Notes Domino 视图设计还为视图定义了许多列。每列都有一个针对所选文档运行的公式,以确定该列的值。

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

CouchDB 还有一个复制系统。

-

概括 ( 长话短说 ):CouchDB 是一种全新的软件,正在开发一个核心,该核心与 Lotus Notes Domino 中使用的核心具有相似的概念,但设计更为复杂。Lotus Notes Domino 是一个成熟的、功能齐全的产品,现在就可以部署。CouchDB 正在从头开始,为未来的功能开发奠定坚实的基础。Lotus Notes Domino 正在继续开发新功能,但这是在一个已有 20 年历史的平台上进行的,该平台力求保持向后兼容性。Notes Domino 中的某些功能您可能希望 CouchDB 中也有,但 Notes Domino 中也有一些功能在当今世界已经不合时宜了。

其他提示

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

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

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

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

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

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

“lotus script不是面向对象的” - 是的,你在那里取得好成绩。然而,这并不意味着语言存在缺陷。自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上发表评论。

有一个播客采访了CouchDB团队的Jan Lehnardt 这里

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top