|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notes is not a relational database (continued)
Should there be conflicts, they are handled or marked appropriately. These transactions are effectively days or even weeks long. Notes 6's document locking also has the concept of provisional locks to support working offline.
Notes also does not have the concept of recoverable units of work, at least, not yet. The fundamental Notes principle is that of opening one document, working on it, and saving it all back to one place. Notes does guarantee that if a save operation completes, the whole document is saved, and if it fails, none of the data is stored, but that concept does not go forward to the idea of a developer definable set of operations that all have to succeed or fail together.
So when do you use Notes, and when do you use an RDBMS? Notes "traditionally" is used to solve different problems than are RDBMSs. Firstly, Notes is much more than just a database; it's a complete client-server operating environment, providing not just data storage facilities but also the communications protocols, central servers, distributed clients, working applications and a RAD toolkit.
It's niche is workflow applications, document management applications -- applications with relatively simple data models, high levels of user interaction and low levels of back-end data manipulations. It's good, superb even, at doing simple applications, often with typically short lifecycles such as project support.
It's not so good at formal Line of Business applications with complex data models, and one reason it's not so good at these because of the fact that it does not have a schema to describe and manage the data model.
Often the choice of Notes for an application is simple; a simple data model, need for distribution and offline working, and the RAD (Rapid Application Development) toolkit can often mean that a Notes application can be built and working and deployed in hours, using only the tools that come in the box. But when the data model gets complex, to the point where implementation needs the facilities of an RDBMS such as Referential Integrity, and a schema, then building the application in Notes is likely to be counterproductive.
How can you model a complex data model in Notes? It's always going to be possible to model complex data relationships with Notes, but it isn't going to be easy. Notes' normal approach to working with its data is that a view is opened which lists some selected data from the database. Clicking on one of these opens the data record, and it's merged with a Notes form so that the data is correctly displayed on the screen. When a record is saved, Notes expects to write all the changed field values back to the Notes document that was opened.
It is possible to mimic the different tables in an RDMBS in Notes, by the use of field values, typically in the Form field, to separate different logical record types, and then to build views based on them.
It's possible also to write code that will help ensure the implementation of the required data model. For example, when a document is opened, it's possible to populate field values on the screen form different documents than the one being opened -- indeed this is actually a very common technique used in many Notes applications. In effect, the data stored in the database is denormalised.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Advertisement --
Sophisticated Meets Simple For Document Management
Share. Control. Manage.
Documents, emails, and content in the context of how work is done.
Native to Lotus Domino. The User Experience unseen for Lotus Domino.
Do more with less. Really.
See the possibilities Docova unleashes for Lotus Domino. |
-- Advertisement --
Teamstudio Edition 25 has shipped
It's finally here! Now that Teamstudio Edition 25 has shipped, listen to our latest Tool Time audio program to find out what's changed. Updates to all your favorite Teamstudio tools will be discussed.
Plus, you'll get an introduction to Teamstudio Undo (formerly known as Teamstudio Snapper).
Tap here to get started! |
|
|
|
|
|
|
|
|
|
|