views:

2470

answers:

8

I was looking into the possibility of using CouchDB. I heard that it was similar to Lotus Notes which everyone loves to hate. Is this true?

+1  A: 

Lotus Notes client/Domino server is comprised of an object("document")-storage (not relational) mechanism, has fully integrated certificate-based security model / user management and conflict-resolution for syncing offline/online changes to data - it's a platform for distributed applications.

"CouchDB is a document-oriented, Non-Relational Database Management Server (NRDBMS)."

CouchDB is accessible via a REST style API.

micahwittman
+1  A: 

There's a podcast interview with Jan Lehnardt of the CouchDB team here.

Without going back and listening to it again, I believe that Damien Katz, who was the initiator and is still the lead developer on CouchDB was also the guy behind the Notes database. So there's a sense in which CouchDB is a better Notes DB, I guess. He explains some of the differences in his blog.

Mike Woodhouse
Katz may have been one of the guys working on Notes at one time but I don't think he designed Notes when it was first created.
fooledbyprimes
+5  A: 

It is the Notes application and UI that people usually hates. Not the architecture behind.

Bahadır
+4  A: 

Damien Katz worked at Iris (Lotus), but he was not the guy behind the Notes Database. He is well-known in the Lotus Notes community for redesigning the Notes Formula Engine.
There are definitely some similarities between CouchDB and Lotus Notes, such as their document-oriented, non-relational data, and replication capabilities, but they are more disparate than similar. CouchDB is a database server and Lotus Notes is an enterprise-level collaboration platform.

Ken Pespisa
A: 

It's similar to how Notes deals with data in that everything is a document of arbitrary structure, and you have views over those documents instead of tables and records like you'd have in a relational database. The replication etc also has some similarities.

There isn't anything wrong with the Notes server architecture, people don't hate that so much. It's more the implementation and bloat that comes with Notes.

CouchDB has no front end either, just a server component. The Notes client sucks, and that is what people REALLY hate. Have you ever tried to email uh I mean "memo" something from Notes? Not pleasant :(

madlep
CouchDB does include a browser-based GUI but it's pretty basic.
eyelidlessness
+28  A: 

Development of Lotus Notes began over 20 years ago, with version 1 released in 1989. It was developed by Ray Ozzie, currently Chief Software Architect for Microsoft.

Lotus Notes (the client) and Domino (the server) have been around for a long time and are mature well featured products. It has:

  • A full client server stack with rapid application design and deployment of document oriented databases.
  • A full public key infrastructure for security and encryption.
  • A robust replication model and active active clustering across heterogeneous platforms (someone once showed a domino cluster with an xbox and a huge AIX server).
  • A built in native directory for managing users that can also be accessed over LDAP.
  • A built in native mail system that can scale to manage millions of users with multi GB mail files, with live server access or replicated locally for off-line access. This can interface with standard internet mail through SMTP and also has POP and IMAP access built in. The mail infrastructure is a core feature that is available to all applications built on Notes Domino (any document in a database can be mailed to any other database with a simple doc.send() command).
  • A built in HTTP stack that allows server hosted databases to be accessed over the web.
  • A host of integration options for accessing, transferring and interoperating with RDBMS and ERP systems, with a closely coupled integration with DB2 available allowing Notes databases to be backed by a relational store where desired.

Backwards compatibility has always been a strong feature of Notes Domino and it is not uncommon to find databases that were developed for version 3 running flawlessly in the most up to date versions. IBM puts a huge amount of effort into this and it has a large bearing on how the product currently operates.

-

CouchDB was created by Damien Katz, starting development in 2004. He had previously worked for IBM on Notes Domino, developing templates and eventually completely rewriting one of the core features, the formula engine, for ND6.

CouchDB shares a basic concept of a document oriented database with views that Notes Domino has.

In this model "documents" are just arbitrary collections of values that are stored some how. In CouchDB the documents are JSON objects of arbitrary complexity. In Notes the values are simple name value pairs, where the values can be strings, numbers, dates or arrays of those.

Views are indexes of the documents in the database, displaying certain value, calculating others and excluding undesired docs. Once the index is build they are incrementally updated when any document in the database changes (created updated or deleted).

In CouchDB views are build by running a mapping function on each document in the database. The mapping function calls an emit method with a JSON object for every index entry it wants to create for the given document. This JSON object can be arbitrarily complex. CouchDB can then run a second reducing function on the mapped index of the view.

In Notes Domino views are built by running a select function (written in Notes Domino formula language) on each document in the database. The select function simply defines if the document should be in the view or not. Notes Domino view design also defines a number of columns for the view. Each column has a formula that is run against the selected document to determine the value for that column.

CouchDB is able to produce much more sophisticated view indexes than Notes Domino can.

CouchDB also has a replication system.

-

Summery: CouchDB is brand new software that is developing a core that has a similar conceptual but far more sophisticated design to that used in Lotus Notes Domino. Lotus Notes Domino is a mature fully featured product that is capable of being deployed today. CouchDB is starting from scratch, building a solid foundation for future feature development. Lotus Notes Domino is continuing to develop new features, but is doing so on a 20 year old platform that strives to maintain backwards compatibility. There are features in Notes Domino that you might wish were in CouchDB, but there are also features in Notes Domino that are anachronistic in today's world.

kerrr
A: 

What is the difference between CouchDB and Lotus Notes?

It is well known that Lotus Notes sucks.

CouchDB has not been proven to suck.

Okay, so that's a personal opinion, but I'd say Lotus Notes sucks for what I'm interested in... a data store for a business application that has a web front end.

Here's my short list of general reasons why Lotus Notes sucks:

  • No transaction support -- If multiple tasks must be executed as a unit, and one fails, there is no way to rollback changes of the one(s) that completed successfully

  • Lotus Notes is Document-based, rather than relation, in nature, not well suited for handling multiple data transactions--This leads to alot of data duplication, which increases the database size and creates potential stale/out-of-synch data scenarios.

  • No separation between production/dev environments. If you make mistake in lotus notes designer it's too easy to replicate those changes which may delete data in production

  • The more data lotus notes contains, the more views will likely get created, making the application less manageable, from a developer's and user's perspective.

  • lotus script is not object oriented:

    • lotus script does not support interfaces
    • lotus script does not support method overloading >> no polymorphism >> makes coding - verbose and more error prone
    • lotus script does not support multiple inheritance
    • lotus script is object-based, which means you can create classes and instantiate objects
    • lotus script does not support closures, or block/proc capabilities or any metaprogramming constructs
  • The list could get quite lengthy, especially when considering the email implementation of Lotus Notes.

CouchDB, on the other hand, can be quite effective given your application has a need to store document-oriented data.

Cool things about CouchDB:

  • Great for applications that must manage objects with arbitrary data attributes

  • Performance... (nice for parallel processing)

  • REST/JSON interface

Word of warning: Improper use of technology has hurt quite a few IT projects...and poor technology implementations continue to cause pain and suffering.

+3  A: 

@Lex, You should prehaps say what version of Notes/Domino you are working on because your comments are incorrect.

"No transaction support" - Domino has transactional logging. If you want more complex transaction logging that is also available within coding.

"not well suited for handling multiple data transactions" - Actually it handles them just fine. You have document locking and replication conflict resolution. Depends a lot on how you set up your application to handle workflow.

"No separation between production/dev environments." - False. The only way this could be true is if you had a badly deployed environment. Developers normally should have 0 access to deploy design changes to the production environment. They would work off a template which does not replicate to main servers. Once updates are done and approved then the administrator deploys it. They do this by taking the template and signing it with a controlled signature allowed to run on production, then drop the template in and update the design of the related applications.

"The more data lotus notes contains, the more views will likely get created" - This comment makes absolutly no sense what-so-ever. I don't believe you have used Notes/Domino in any professional ability.

"lotus script is not object oriented" - Yes you make good points there. However it doesn't mean that the language is flawed. Also they have made a large number of improvements since 8.x and with 8.5.1. For example built in web services support (point to WSDL and LS code is made for you). 8.5.1 Also has a lot of new designer features like Code Templates, auto-completion, LSDoc popup help on your own functions, etc.

You also only touch on LotusScript. Yet you can also code in: Java, SSJS/DOJO (XPages), Javascript, @Formula language, Web Services (SOAP/REST), C-API, Eclipse Plugins(RCP). Output in JSON as well as XML.

8.5.1 Designer client is now free to download if you want to test it out.

So while I believe I am not in a position to comment on CouchDb you most certainly are not on Notes/Domino.

Sio