我正在研究使用CouchDB的可能性。我听说它类似于Lotus Notes,每个人都爱恨交加。这是真的吗?
wpx232ag1#
Lotus Notes的开发始于20多年前的version 1 released in 1989。它是由Ray Ozzie开发的,他目前是Microsoft的首席软件架构师。Lotus Notes(客户端)和Domino(服务器)已经存在了很长时间,是成熟的功能良好的产品。
摘要(TL; DR):CouchDB是一个全新的软件,它正在开发一个与LotusNotesDomino中使用的核心具有相似概念但更为复杂的设计的核心。LotusNotesDomino是一个成熟的功能齐全的产品,能够在今天部署。CouchDB是从头开始的,为未来的功能开发奠定了坚实的基础。LotusNotesDomino将继续开发新的功能,但它是在一个已有20年历史的平台上实现的,该平台努力保持向后兼容性。
utugiqy62#
人们通常讨厌的是Notes应用程序和UI,而不是背后的架构。
628mspwn3#
Damien Katz曾在Iris(Lotus)工作,但他不是Notes数据库的幕后黑手,他在Lotus Notes社区因重新设计Notes Formula Engine而闻名。CouchDB和Lotus Notes之间确实有一些相似之处,比如它们面向文档的、非关系数据和复制功能,但是它们之间的差异大于相似之处。CouchDB是一个数据库服务器,而Lotus Notes是一个企业级的协作平台。
50few1ms4#
@Lex,你可能应该说你正在使用的Notes/Domino的版本,因为你的评论是不正确的。“无事务支持”- Domino有事务日志。如果你想要更复杂的事务日志,也可以在编码中使用。“不太适合处理多个数据事务”-实际上它处理得很好。你有文档锁定和复制冲突解决。这在很大程度上取决于你如何设置你的应用程序来处理工作流。“生产/开发环境之间没有分隔。”- False。只有当您的环境部署得不好时,才会出现这种情况。开发人员通常应该具有0访问权限来将设计更改部署到生产环境。他们将使用不会复制到主服务器的模板。一旦更新完成并获得批准,管理员就会部署它。他们通过获取模板并使用允许在生产环境中运行的受控签名对其进行签名,然后将模板放入并更新相关应用程序的设计来完成此操作。“lotus notes包含的数据越多,创建的视图就可能越多”--这句话绝对没有任何意义。我不相信你在任何专业能力上使用过Notes/Domino。“lotus脚本不是面向对象的”--是的,你说得很有道理。但是这并不意味着语言有缺陷。而且,他们从8.x到8.5.1都做了大量的改进。例如,内置的Web服务支持8.5.1还具有许多新的设计器特性,如代码模板、自动完成、关于您自己的函数的LSDoc弹出帮助,等等。您也只涉及LotusScript。但是您也可以在其中编写代码:Java、SSJS/DOJO(XPages)、Javascript、@公式语言、Web服务(SOAP/REST)、C-API、Eclipse插件(RCP)。以JSON和XML格式输出。8.5.1 Designer客户端现在可以免费下载,如果您想测试它。因此,虽然我相信我不能对CouchDb发表评论,但你肯定不是Notes/Domino。
xiozqbni5#
Lotus Notes客户端/Domino服务器由对象(“文档”)存储(非关系)机制组成,具有完全集成的基于证书的安全模型/用户管理和冲突解决机制,用于同步对数据的脱机/联机更改-它是分布式应用程序的平台。CouchDB是一种面向文档的非关系数据库管理服务器(NRDBMS)。CouchDB可通过REST风格的API访问。
j0pj023g6#
有一个播客采访了CouchDB团队here的Jan Lehnardt。我不想再回头去听了,我相信Damien Katz,他是CouchDB的发起者,现在仍然是首席开发人员,也是Notes数据库的幕后黑手。所以我想,从某种意义上说,CouchDB是一个更好的Notes数据库。他解释了his blog中的一些区别。
q9rjltbz7#
这与Notes处理数据的方式相似,因为所有的东西都是任意结构的文档,你可以查看这些文档,而不是像在关系数据库中那样查看表和记录。复制等也有一些相似之处。Notes服务器架构没有任何问题,人们并不讨厌它,更多的是Notes的实现和膨胀。CouchDB也没有前端,只有一个服务器组件。Notes客户端很糟糕,这是人们真正讨厌的。你有没有试过用电子邮件 * 嗯,我的意思是“备忘录”* 从Notes的东西?不愉快:(
yfjy0ee78#
比较苹果和橙子LotusNotesDomino没有太大的变化,也没有针对NotesDominov 12或任何更早版本的NoSQL服务选项。说到NoSQL,Domino将NoSQL用于Domino中内置的自己的应用程序解决方案。有人尝试使用基于Java 6的Domino Access Services,Rest API在v12中仍然使用Vectors。该服务还可以,但不健壮,它提供了一种与NSF中的数据交互的方法。请记住,Domino是键值对存储,由于安全模型的原因,在处理大型数据集时速度非常慢。每次搜索都会检查每个文档的读者和作者以确定用户是否可以查看该文档。使用CouchDB,用户可以在移动的上构建应用程序并进行部署。由于Domino服务器的原因,无法在Notes/Domino上实现同样的功能。Domino开发也仅支持MS Windows,并且IDE基于旧版本的Eclipse,直到今天的v12,都无法在Domino IDE上使用双监视器。请询问任何Domino开发人员,他们讨厌被迫在无法跟上行业发展的特定平台上使用IDE。沙发也经历了许多变化,简史:
https://www.dataengineeringpodcast.com/couchdb-document-database-episode-124/
8条答案
按热度按时间wpx232ag1#
Lotus Notes的开发始于20多年前的version 1 released in 1989。它是由Ray Ozzie开发的,他目前是Microsoft的首席软件架构师。
Lotus Notes(客户端)和Domino(服务器)已经存在了很长时间,是成熟的功能良好的产品。
向后兼容性一直是Notes Domino的一个强大特性,在大多数最新版本中,为版本3开发的数据库都能完美运行,这并不罕见。IBM在这方面投入了大量精力,这对产品目前的运行方式有很大影响。
CouchDB由Damien Katz创建,于2004年开始开发。他之前曾在IBM的Notes Domino上工作,开发模板,并最终完全重写了ND 6的核心功能之一--公式引擎。
CouchDB与NotesDomino的视图共享面向文档的数据库的基本概念。
在这个模型中,“文档”只是以某种方式存储的值的任意集合。在CouchDB中,文档是任意复杂度的JSON对象。在Notes中,值是简单的名称值对,其中的值可以是字符串、数字、日期或这些值的数组。
视图是数据库中文档的索引,显示某些值,计算其他值并排除不需要的文档。一旦索引建立,当数据库中的任何文档发生更改(创建、更新或删除)时,它们将增量更新。
在CouchDB中,视图是通过对数据库中的每个文档运行一个Map函数来构建的。Map函数调用emit方法,该方法带有一个JSON对象,用于为给定文档创建的每个索引条目。这个JSON对象可以是任意复杂的。CouchDB然后可以对视图的Map索引运行第二个归约函数。
在Notes Domino中,视图是通过对数据库中的每个文档运行select函数(用Notes Domino公式语言编写)来构建的。select函数只是定义文档是否应该在视图中。Notes Domino视图设计还为视图定义了多个列。每个列都有一个公式,该公式对所选文档运行,以确定该列的值。
CouchDB能够生成比NotesDomino复杂得多的视图索引。
CouchDB还有一个复制系统。
摘要(TL; DR):CouchDB是一个全新的软件,它正在开发一个与LotusNotesDomino中使用的核心具有相似概念但更为复杂的设计的核心。LotusNotesDomino是一个成熟的功能齐全的产品,能够在今天部署。CouchDB是从头开始的,为未来的功能开发奠定了坚实的基础。LotusNotesDomino将继续开发新的功能,但它是在一个已有20年历史的平台上实现的,该平台努力保持向后兼容性。
utugiqy62#
人们通常讨厌的是Notes应用程序和UI,而不是背后的架构。
628mspwn3#
Damien Katz曾在Iris(Lotus)工作,但他不是Notes数据库的幕后黑手,他在Lotus Notes社区因重新设计Notes Formula Engine而闻名。
CouchDB和Lotus Notes之间确实有一些相似之处,比如它们面向文档的、非关系数据和复制功能,但是它们之间的差异大于相似之处。CouchDB是一个数据库服务器,而Lotus Notes是一个企业级的协作平台。
50few1ms4#
@Lex,你可能应该说你正在使用的Notes/Domino的版本,因为你的评论是不正确的。
“无事务支持”- Domino有事务日志。如果你想要更复杂的事务日志,也可以在编码中使用。
“不太适合处理多个数据事务”-实际上它处理得很好。你有文档锁定和复制冲突解决。这在很大程度上取决于你如何设置你的应用程序来处理工作流。
“生产/开发环境之间没有分隔。”- False。只有当您的环境部署得不好时,才会出现这种情况。开发人员通常应该具有0访问权限来将设计更改部署到生产环境。他们将使用不会复制到主服务器的模板。一旦更新完成并获得批准,管理员就会部署它。他们通过获取模板并使用允许在生产环境中运行的受控签名对其进行签名,然后将模板放入并更新相关应用程序的设计来完成此操作。
“lotus notes包含的数据越多,创建的视图就可能越多”--这句话绝对没有任何意义。我不相信你在任何专业能力上使用过Notes/Domino。
“lotus脚本不是面向对象的”--是的,你说得很有道理。但是这并不意味着语言有缺陷。而且,他们从8.x到8.5.1都做了大量的改进。例如,内置的Web服务支持8.5.1还具有许多新的设计器特性,如代码模板、自动完成、关于您自己的函数的LSDoc弹出帮助,等等。
您也只涉及LotusScript。但是您也可以在其中编写代码:Java、SSJS/DOJO(XPages)、Javascript、@公式语言、Web服务(SOAP/REST)、C-API、Eclipse插件(RCP)。以JSON和XML格式输出。
8.5.1 Designer客户端现在可以免费下载,如果您想测试它。
因此,虽然我相信我不能对CouchDb发表评论,但你肯定不是Notes/Domino。
xiozqbni5#
Lotus Notes客户端/Domino服务器由对象(“文档”)存储(非关系)机制组成,具有完全集成的基于证书的安全模型/用户管理和冲突解决机制,用于同步对数据的脱机/联机更改-它是分布式应用程序的平台。
CouchDB是一种面向文档的非关系数据库管理服务器(NRDBMS)。
CouchDB可通过REST风格的API访问。
j0pj023g6#
有一个播客采访了CouchDB团队here的Jan Lehnardt。
我不想再回头去听了,我相信Damien Katz,他是CouchDB的发起者,现在仍然是首席开发人员,也是Notes数据库的幕后黑手。所以我想,从某种意义上说,CouchDB是一个更好的Notes数据库。他解释了his blog中的一些区别。
q9rjltbz7#
这与Notes处理数据的方式相似,因为所有的东西都是任意结构的文档,你可以查看这些文档,而不是像在关系数据库中那样查看表和记录。复制等也有一些相似之处。
Notes服务器架构没有任何问题,人们并不讨厌它,更多的是Notes的实现和膨胀。
CouchDB也没有前端,只有一个服务器组件。Notes客户端很糟糕,这是人们真正讨厌的。你有没有试过用电子邮件 * 嗯,我的意思是“备忘录”* 从Notes的东西?不愉快:(
yfjy0ee78#
比较苹果和橙子
LotusNotesDomino没有太大的变化,也没有针对NotesDominov 12或任何更早版本的NoSQL服务选项。
说到NoSQL,Domino将NoSQL用于Domino中内置的自己的应用程序解决方案。有人尝试使用基于Java 6的Domino Access Services,Rest API在v12中仍然使用Vectors。该服务还可以,但不健壮,它提供了一种与NSF中的数据交互的方法。请记住,Domino是键值对存储,由于安全模型的原因,在处理大型数据集时速度非常慢。每次搜索都会检查每个文档的读者和作者以确定用户是否可以查看该文档。
使用CouchDB,用户可以在移动的上构建应用程序并进行部署。由于Domino服务器的原因,无法在Notes/Domino上实现同样的功能。Domino开发也仅支持MS Windows,并且IDE基于旧版本的Eclipse,直到今天的v12,都无法在Domino IDE上使用双监视器。请询问任何Domino开发人员,他们讨厌被迫在无法跟上行业发展的特定平台上使用IDE。
沙发也经历了许多变化,简史:
https://www.dataengineeringpodcast.com/couchdb-document-database-episode-124/