我正在研究使用CouchDB的可能性.我听说它和大家都讨厌的莲花笔记很相似.这是真的吗?

推荐答案

Lotus Notes的开发始于20多年前,已有version 1 released in 1989个.它是由微软现任首席软件架构师Ray Ozzie开发的.

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

  • 一个完整的客户端服务器堆栈,具有面向文档的数据库的快速应用程序设计和部署.
  • 用于安全和加密的完整公钥基础设施.
  • 跨异构平台的健壮复制模型和主动主动集群(有人曾经展示过一个带有xbox and a huge AIX server的Domino集群).
  • 一个内置的本机目录,用于管理也可以通过LDAP访问的用户.
  • 内置本机邮件系统,可扩展以管理数百万用户的多GB邮件文件,支持实时服务器访问或本地复制以进行离线访问.它可以通过SMTP与标准的互联网邮件接口,还具有内置的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中,值是简单的名称值对,其中的值可以是字符串、数字、日期或它们的array.

视图是数据库中文档的索引,显示特定的值,计算其他值,并排除不需要的文档.一旦构建了索引,当数据库中的任何文档发生更改(创建、更新或删除)时,它们都会以增量方式更新.

在CouchDB中,视图是通过在数据库中的每个文档上运行映射函数来构建的.映射函数为要为给定文档创建的每个索引项调用带有JSON对象的emit方法.该JSON对象可以是任意复杂的.然后,CouchDB可以在视图的映射索引上运行第二个缩减函数.

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

CouchDB能够生成比Notes Domino复杂得多的视图索引.

CouchDB也有一个复制系统.

-

Summary(TL;DR):CouchDB是一款全新的软件,它正在开发一个核心,其概念与Lotus Notes Domino中使用的类似,但设计要复杂得多.Lotus Notes Domino是一款成熟的功能齐全的产品,现在可以部署.CouCHDB正从零开始,为future 的特色发展打下坚实的基础.Lotus Notes Domino正在继续开发新功能,但它是在一个有20年历史的平台上开发的,该平台致力于保持向后兼容性.Notes Domino中有一些功能,您可能希望它们是在CouchDB中,但Notes Domino中也有一些功能在当今世界是不合时宜的.

Database相关问答推荐

在 ScyllaDB 中查询 100 亿行(高基数)的效率

将数据集上传到 Hub 时停止运行时会导致什么?

如何从 PostgreSQL 触发器发送邮箱?

如何以编程方式将产品添加到 Opencart 数据库

需要未提供的参数@ID?

使用python为组中的每个元素添加一个序列号

什么是非规范化 mysql 数据库的好方法?

android 应用程序与 web 服务通信的安全性

SQLServer:如何对按外键依赖性排序的表名进行排序

用于存储食谱的数据库设计

哪个本地数据库适合 Windows 8 应用store 应用?

在 PostgreSQL 触发函数中使用 pg_notify

便携式(PHPPass)密码哈希.我应该使用它们吗?

Uniqueidentifier vs. IDENTITY vs. Material Code - 主键的最佳 Select 是哪个?

我需要在这个 Django 模型中添加一个 db_index 吗?

xtradb vs innodb

如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

如何在一行中显示 redis 中的所有键?

在哪里可以找到 neo4j 快速教程?

与 IntelliJ IDEA 相比,DataGrip 附加值