Hi everybody,

just a short note:

I am more a  front-end person (plan to start a OSS GUI project in
2008), although I have an vested interested in a open persistence
solution, since I would like to see an end-to-end system demonstrator
based on OSS components (GUI, kernel, persistence). IMO (and in Rong's
etc) this would really boost openEHR.

I believe a generic persistence layer API(s) - as Tom said - is the
way to go. This won't happen in one go. So in a truely agile
development style this has to happen over several iterations, while
every iteration product has to be usable!

The reason for this post is that I recently investigated the IBM DB2 9
DBMS . This could be a good starting point or reference to build the
API layer on.

Reasons for IBM DB2 9 DBMS
(http://www-306.ibm.com/software/data/db2/express/) are:
- the Express-C version is free and only has restrictions regarding
the hardware (max 2 CPUs and 2 GB Ram). Compared to the 'Express'
versions of Oracle and Microsoft, with limited DB size etc.
- it is a long-around enterprise SQL DBMS, now with additional native
XML support (pureXML feature)
- it seems to have good documentation (2 books and several recent
articles) and a active community
- there is a well-maintained performance testing toolkit for it
(http://tpox.sourceforge.net/).
- the Express-C license can even be used commercially! If the hardware
limitations become a problem an upgrade can be bought without having
to change the underlying code.

Cheers, Thilo


On Jan 1, 2008 8:54 PM, Thomas Beale <thomas.beale at oceaninformatics.com> 
wrote:
>
>  Bert Verhees wrote:
>
> I believe, it is rather sensitive, because, when you publish a
> persistence-layer, you have a full blown product, which others can use,
> I think, people fear to put their self out of business if they publish
> too much knowledge. That, I beleive is the reason because the
> discussions about this subject often die.
>
>
>  I would suggest various reasons:
>
>
> building an enterprise usable persistence layer - one that is highly
> performant, reliable (in terms of data integrity) and scalable is a serious
> endeavour. It requires real investmnet, not just for the design and
> implementation, but for load and performance testing. Trying to do it open
> source is likely to be a slow project, because it requires concentrated
> ongoing effort.
> there is no such things as the perfect back-end for all use contexts, so a
> single mighty build-it-once-forever open source solution is likely to be
> flawed from the outset. What would be useful as open source is the binding
> layer containing an agreed API, e.g. an object db style API, or my current
> node+path idea
> (http://www.openehr.org/wiki/pages/viewpage.action?pageId=786487).
> Because of the different needs of different contexts, commercial
> implementations are more likely to be the right business model, as long as
> they conform to the interfaces demanded by the community, possibly be
> incorporating lightweight open source components. Therefore one of the needs
> of openEHR (and information processing in general) is a standardised
> persistence layer API that provides the right kind of sematics without
> predetermining limiting choices to do with technology, performance or
> scalability to much. We have recognised this for a long time in openEHR, but
> not had the effort to implement it. I would describe the levels of
> interfaces needed as fllows:
>
>
> a virtual EHR API - this is a fine-grained application interface for talking
> to an openEHR system, including building, saving and retrieving EHR data. It
> does not contain any persistence primitives, but provides the main interface
> for any application writer, who should be able to largely forget about
> everything else
> an EHR service interface - this is a coarse-grained interface that knows
> about Compositions, Contributions, queries
> a persistence layer that is archetype- (i.e. path-) enabled, in the sense of
> the node+path model described above. For the first two we have developed
> working versions in our own products, and will release the entire interfaces
> soon in documentary form. There is not much secret here, and we would expect
> an openEHR 'standard' for these interfaces to be developed by integrating
> such APIs built by anyone in the community, or defining
> alternative/componentised APIs, if it makes sense in some cases. The normal
> community process is the correct vehicle for doing this (i.e. discussion,
> proposals, Change Requests, ARB review etc).
>
>  The 3rd layer above is not standardised at all, and would not have to be
> openEHR-specific, but needs to know minimally about paths. Creating a
> specification for this could be useful for creating archetype-based
> information processing systems in general. This could be done by the same
> process, but will undoubtedly take longer since more implementation-based
> evidence is required.
>
>  Lastly, implementing highly performant database layer is largely a matter
> of experience. Beginners may think that you can just plug an object model
> into a hibernate tool and generate a schema, but it wll be dreadfully
> inefficient. Object databases as Tim has said are better aligned
> semantically to the kind of data we are dealing with, although they
> generally don't know much about paths. XML-enabled databases may in fact be
> a better rather than a worse bet than a straight relational design, due to
> the path capabilities, although I have no direct experience with them (and I
> agree that almost anything to do with XML is sadly compromised at the outset
> by the terrible inefficiency of XML itself - but nevertheless, using XML in
> our own SQL Server system is surprisingly fast).
>
>  There are two main positions for people in this community to take:
>  - front-end people - application developers who just want to get real
> systems up and running,
>  - back-end people - people who want to engineer enterprise ready openEHR
> back-ends
>
>  The latter job is the expensive one, and I recommend that people think
> carefully before just jumping in. This is not to discourage competition,
> diversity etc - it is simply that the world is littered with dead projects
> which turn out to be 10x harder than the developers thought. I therefore
> believe that the best approach is to find the correct balance between
> standards / open source, and commercial implementations, which are based on
> those standards. Getting these API and service layers is a key part of that
> approach, and is how commercial implementations can be kept honest. By the
> way, commercial implemtations may or may not be open source.
>
>  In the end, our approach in openEHR is overturning some basic beliefs about
> how to build information systems, so we probably have to accept that making
> the whole thing successful will not be instant. We seem to be making good
> progress however, and I think the effort will be worthwhile.
>
>  - thomas beale
>
>
> _______________________________________________
> openEHR-technical mailing list
> openEHR-technical at openehr.org
> http://lists.chime.ucl.ac.uk/mailman/listinfo/openehr-technical
>
>

Reply via email to