I'm often asked, both online and in the course of my day-to-day consulting duties to describe the differences between Domino and relational database systems such as Access, Oracle or SQL Server.
Unfortunately, there is no snappy one paragraph summary of the differences between say Domino and Access, because that would be like trying to describe Bach to someone who has only ever listened to The Dixie Chicks (Note: I have nothing against either Bach or the Dixie Chicks. They are just too far removed from each other to be compared). I can try and further explain what Domino is and does, but I probably can't do it as well as some of the literature that already exists, and I certainly can't promise you'll be completely satisfied with my explanation.
Domino at it's core, is an integrated database and workflow system. The database model that domino uses is not a relational model. A Domino database is built around the concept of a 'Note' (hence "Lotus Notes"). Every element within the database can be thought of as a 'Note'. This means that there is no concept of "normalisation" or "data integrity" when dealing with Notes/Domino databases. All the data that you need for a particular document (or 'record' if you insist) is held right there in that same document. It may be sourced from elsewhere originally, but Domino sees no reason to continually re-source the information. Inefficient - maybe, funky - hell yeah.
I find that it generally takes about six months of solid development work for Domino newbies to actually start to "get it". The first three of these is usually spent trying to force Domino to behave like a relational database, the later three spent in jaw-dropping wonder at the awesome possibilities that this model opens up. Only this afternoon I spent an entire 20 minutes coding an XML-based remote procedure request module in Domino. That's right, 20 minutes for a rudimentary XML-RPC implementation. Something that I wouldn't even consider devoting my spare time to on other platforms.
Elements that make up a Domino database can be broken down into two broad categories: Design Notes and Document Notes. Design Notes, as the name implies, are elements which govern the way in which the Domino database functions. Document Notes are the actual documents which hold the data. Again - there are no 'Tables' or 'Records' in a Domino database.
Examples of Design Notes include:
Forms - Which control the layout and behaviour of documents.
Views - Which display sets or subsets of documents based on a selection criteria.
Agents - Which perform actions.
Forms can contain fields. Fields are used to capture data from the user and store it in the Document. Documents can also contain other elements which may trigger agents, embed a view, display a Java applet etc. Domino also supports 'Pages' which are kind of like forms - only you can't create documents from them. Pages are useful for displaying information where you don't neccessarily wish to capture information.
Views contain columns. Columns are generally used to display a value (either computed or from the document). Views can also contain action buttons which perform some action within the database. A less restrictive type of view - called a 'folder' is also available. Folders allow the user to group documents in a manner that makes sense to them, rather than the designer of the database. The only real difference between a view and a folder is that view's have selection criteria whereas folders contain whatever is put in them.
Agents are programs which perform automated tasks within the application. Agents can be written in either "Simple Actions" - A very basic scripting language, "Notes Formula Language" - A far more powerful but fairly arcane scripting language, "LotusScript" - A Visual Basic variant, or Java. In addition, the LotusScript classes - predefined classes that describe and allow you to manipulate domino objects in LotusScript - are also available to any COM application, And the predefined Java classes are available to any other J2EE system as well as via CORBA/IIOP - How many other environments enable you to access back-end server functionality via JavaScript with less than 20 lines of code?
Domino has a very powerful integrated messaging system. Which, in itself, is probably the root of the common misconception that Domino is just an email system. Domino allows you to build complex workflow into your applications very easily. Any document note can be emailed to any user registered with the Domino server. Domino supports LDAP, so integrating with existing messaging systems is pretty much a point-and-click foregone conclusion.
To top it all off, Domino is also a web server. Domino databases are rendered on-the-fly into HTML. The Notes object model is based on the web DOM, so developing solutions that work as easily in the Notes client as they do on the web is a cinch. JavaScript and Java applets easily enable any Domino application to be distributed out to the web without the need to build an maintain essentially separate systems.
I hope that this clears things up a little. Please check out some of these links for more information:
http://www.codestore.net
http://www-15.lotus.com/ldd/products/.cmd/cs/.ce/155/.s/307/_th/302/_lpid.301/307/_lp.301/0/_s.155/307
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.