我正在研究使用CouchDB的可能性.我听说它类似于Lotus Notes,每个人都喜欢讨厌.这是真的?
Lotus Notes的开发始于20多年前,1989年发布了版本1.它由Ray Ozzie开发,他目前是Microsoft的首席软件架构师.
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可以在视图的映射索引上运行第二个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中的功能在当今世界中也是不合时宜的.
它是人们通常讨厌的Notes应用程序和UI.不是背后的架构.
Damien Katz在Iris(Lotus)工作过,但他并不是Notes数据库背后的人.他在Lotus Notes社区中以重新设计Notes公式引擎而闻名.
CouchDB和Lotus Notes之间肯定存在一些相似之处,例如面向文档的非关系数据和复制功能,但它们与类似的不同.CouchDB是一个数据库服务器,Lotus Notes是一个企业级协作平台.
@Lex,您应该预先说明您正在处理的Notes/Domino版本,因为您的注释不正确.
"没有事务支持" - Domino具有事务日志记录功能.如果您想要更复杂的事务日志记录,也可以在编码中使用.
"不太适合处理多个数据交易" - 实际上它处理它们就好了.您有文档锁定和复制冲突解决方案.取决于您如何设置应用程序来处理工作流程.
"生产/开发环境之间没有分离." - 错.唯一可行的方法是,如果您的环境部署得很糟糕.开发人员通常应该有0访问权限,可以将设计更改部署到生产环境中.他们将处理不复制到主服务器的模板.更新完成并获得批准后,管理员将对其进行部署.他们通过获取模板并使用允许在生产中运行的受控签名对其进行签名,然后删除模板并更新相关应用程序的设计来实现此目的.
"莲花笔记包含的数据越多,创建的视图就越多" - 这个评论绝对没有任何意义.我不相信你已经在任何专业能力中使用过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上发表评论.