views:

581

answers:

3

I know of two famous document-centric systems: Sharepoint server and Lotus Notes. There must be others. I've heard of CouchDB, for example. What are the main implementation differences, and how do they affect:

Usability

Retrieval performance

Search performance/quality

Extensability/ integration

Bonus if you can elaborate on why you would or wouldn't just store these documents in a relational database and decorate them with metadata stores in an appropriate schema. I find it hard to believe that these systems are very different from forums and blogs, which themaelves are based on relational databases with business code sitting on top.

Extra bonus: Is there any reason why Lotus Notes is so hard to find documentation on? I'd be grateful for some pointers.

A: 

Well, Sharepoint stores its data/lists/documents/whatever in a relational database (SQL Server, unsurprisingly...), along with "decorations" of metadata. Based on rumours (haven't looked into it myself), the data model is so convoluted that you have to use the C# API supplied to do anything with the data (which can be a good thing or a bad thing, depending on your preferences and goals).

ObiWanKenobi
+2  A: 

Sharepoint does exactly what you say. It's built on top of a relational database and offers something that looks a bit like a file-system with a web-interface. This document storage is primarilly geared towards integration with Office and is only a small part of Sharepoint.

Document based database systems. Like CouchDB or Amazon S3 are different beasts. They store data in a less structured way than relational databases. Mostly in the form of key-document pairs. You can retrieve documents by key or by querying but because documents are not uniformly structured like rows in a table in a relational database querying can be more difficult. These databases aren't really meant to be used like relational database, they're geared more toward scalability for large web-backends etc.

Lotus Notes actually combines these two. You can use it for document management (and email and much more) and it's built on it's own document-database.

Mendelt
+6  A: 

Lotus Notes stores all data in NSF files. An NSF file is a container for Notes Documents, which are unstructured records. Each Document can have any number of Items in it, similar to that of a relational database's tables and columns. Unlike relational databases, however, there are no constraints at the data model level on what Items a Document must have, so each individual Document might contain vastly different data inside.

Notes Views are used to see the data inside Documents, usually filtering on Documents with similar Items. Notes Agents, Pages, and more tools are available to get the data out of an NSF easily.

Notes' strengths are its ease of capturing data via Forms, and outputing data via Views, XML, HTML, Java Servlets, etc. It manages distributed data easily via a powerful replication system. It is also highly touted for its built in security.

CouchDB, created by an ex-Iris/Lotus/IBM employee, Damien Katz, has many of those same strengths, without the overhead and cost of Lotus Notes.

The word document can cause confusion in the Lotus Notes world. File documents such as PDFs, Word docs, Excel files, etc are stored within Lotus Notes Documents as part of the unstructured data.

SharePoint stores data in SQL server. It's data is very list-based with the additional ability to store file documents on the server and maintain meta-information on them as well.

A SharePoint list is much like a flat table, but unlike Lotus Notes, that list does have constraints on its data.

SharePoint data is collected and exposed mostly via its Web-based interface, but there are mnay ways to access the data such as the SharePoint API, Web services, XML, and even directly from the SQL server (not recommended).

Usability: For end users, both rank high here. SharePoint is all Web-based and end-users can easily manage a SharePoint site themselves with little training. Lotus Notes requires a Notes client or requires a Domino application to be built for exposure via the Web. For developers, Notes is easier to use but is quirky and uses proprietary languages - the Notes Formula language and LotusScript. SharePoint requires no coding at all for some basic workflows and site manipulation, but to get serious control you need to be a .NET developer and the code can be very complex.

Retrieval performance: For small projects, Lotus Notes does very well. Very large databases with over 10,000 Documents tend to start to decline in performance. SharePoint uses SQL server so it can easily handle very large numbers of lists or files within its data store.

Search performance/quality: Both have good search capabilities, but SharePoint wins if you are trying to search a large number of documents.

Extensability/ integration: SharePoint is the more extensible. Both, however, can integrate easily with other systems using XML. Notes can also integrate using Java agents/servlets, and Web Services. SharePoint has its Web services API and third-party add-ons for integration.

Bonus: Lotus Notes just isn't as popular as SharePoint at the moment. There are key places for documentation such as www.notes.net, and various developer blogs.

Ken Pespisa
Very informative answer. Thanks for sharing!
Kirk Liemohn
One additional very important note about Lotus Notes (pun intended). The RAD capabilities are amazing. If you are lucky enough to have a full Notes client infrastructure, rollout of brand new, fully functional, highly secure, and highly productive collaborative oriented Notes apps can be done in hours (sometimes minutes) - requiring little to no maintenance for years to come.
Rake36