22

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

4

8 回答 8

48

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

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

  • 一个完整的客户端服务器堆栈,具有快速的应用程序设计和面向文档的数据库的部署。
  • 用于安全和加密的完整公钥基础设施。
  • 一个健壮的复制模型和跨异构平台的主动集群(有人曾经展示了一个带有xbox 和巨大 AIX 服务器的多米诺集群)。
  • 用于管理用户的内置本机目录,也可以通过 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 可以在视图的映射索引上运行第二个归约函数。

在 Notes Domino 中,视图是通过在数据库中的每个文档上运行选择函数(以 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 中也有一些在当今世界不合时宜的功能。

于 2008-11-21T11:39:16.023 回答
10

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

于 2008-10-06T08:57:57.383 回答
6

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

于 2008-11-06T21:55:17.197 回答
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 上。

于 2009-10-30T07:08:53.140 回答
1

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

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

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

于 2008-10-03T16:35:17.070 回答
1

这里有 CouchDB 团队的 Jan Lehnardt 的播客采访。

无需回头再听一遍,我相信 Damien Katz,他是 CouchDB 的发起人,并且仍然是首席开发人员,也是 Notes 数据库的幕后推手。所以在某种意义上,我猜 CouchDB 是一个更好的 Notes DB。他在博客中解释了一些不同之处。

于 2008-10-03T16:46:17.673 回答
0

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

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

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

于 2008-11-06T22:27:01.330 回答
0

比较苹果和橙子

Lotus Notes Domino 没有太大变化,并且没有针对 Notes Domino v12 或任何更早版本的本地或云 NoSQL 服务选项。Domino 不是基于云的技术。

谈到 NoSQL,Domino 将 NoSQL 用于其在 Domino 中构建的自己的应用程序解决方案。曾尝试使用基于 Java 6 的 Domino Access Services,Rest API 在 v12 中仍然使用 Vectors。该服务还可以,但不可靠,它提供了一种与 NSF 中的数据交互的方法。请记住,Domino 是键值对存储,并且由于安全模型,在大型数据集上非常慢,每次搜索都会检查每个文档的读者和作者,以确定用户是否可以查看该文档。Domino 仍然是 Web 1.0。

使用 CouchDB,您可以在移动设备上构建应用程序并进行部署。由于 Domino 服务器,无法对 Notes/Domino 执行相同操作。Domino dev 也只支持 MS Windows 并且 IDE 基于旧版本的 Eclipse,直到今天 v12,没有办法在 Domino IDE 中使用双显示器。问任何 Domino 开发人员,他们讨厌被迫在无法跟上行业发展的特定平台上使用 IDE。

沙发也经历了许多变化,简史:

  • CouchDB 由 IBM Lotus Domino 工程师 Damian Katz 创立
  • Apache 项目 BigCouch 诞生;添加了可扩展性和集群
  • Cloudant 诞生;大数据和 IBM 资金以及 IBM Cloud 产品
  • CouchDB 2.0 诞生;Cloudant + BigData 合并回 CouchDB
  • CouchDB 3.0 诞生;增强了 Foundation DB 的安全性和准备工作
  • CouchDB 4.0 诞生;架构更改为 Apples Foundation DB

https://www.dataengineeringpodcast.com/couchdb-document-database-episode-124/

于 2022-02-05T19:53:51.640 回答