# Presentation: 045946

## Prelude

- Many questions/points have been raised in recent weeks, and forwarded by David Stickland to me:
- Views on storage technology choices
- Views on hybrid store common project
- Project mandate and organization
- Current technical approaches and their deficiencies
- OIDs and reference requirements
- Component definitions, structure, and interrelationships
- Following slides are therefore broad but not deep

## Non-technical background

- Official ATLAS position has been (cf. Computing Technical Proposal) to use common solutions (in particular, common to LHC experiments) where possible
- This is the reason for the current ATLAS baseline storage technology choice, which is Objectivity
- This is why, for example, we are trying to base our conditions db work on IT-provided infrastructure
- Consonant with this, I (and others) would have difficulty endorsing a strategy in which ATLAS were the only LHC experiment using Objectivity
- Same would be true of Oracle 9i, of course, and of other commercial technologies, even outside the database realm

## On Objectivity in particular

- ATLAS core software view is, in the now-famous words of the Marseilles LHC software workshop, that Objectivity “can be made to work”
- We have seen no technical showstoppers
- Widespread ATLAS experience has been (frustratingly) limited, but NOT primarily because of the technology choice
- Our architecture, nonetheless, neutralizes many of the advantages of an object database (and potentially of other technologies as well)

## On hybrid solutions

- We have already taken a “component-oriented” approach to our data stores
- No assumption that all data are stored in single technology
- At last summer’s IT-sponsored LHC database workshop, in discussions of common projects and near-term priorities, I proposed a look at hybrid approaches, rather than exclusive emphasis on Oracle 9i homogeneous solutions
- Proposal based on what I heard from ALICE and LHCb—not CMS—at that time

## Hybrid solutions in ATLAS

- ATLAS has both an Objectivity conversion service and a ROOT conversion service in current software releases
- ROOT work is based on STAR approach (STAR dependencies have been excised), and is aimed at ROOT+relational hybrid
- If a common project produces a common ROOT streaming layer approach, we plan to use it
- Explicit milestone:  technology evaluation involving Objectivity and ROOT in 2002 (context is Data Challenge I, Phase II)

## ATLAS database architecture

- We have a draft database architecture document, presented to collaboration in September
- Ed Frank, with help from Greg Chisholm, took on the unenviable task of turning wide-ranging, conflicting discussions into a strawman architecture proposal
- Review planned for early next year (we hope)
- Intended to be technology-neutral
- Held two-day meeting with BNL ROOT experts/advocates to ensure no unintended technology bias
- ATLAS BNL group is producing a design document describing how one might realize the ATLAS database architecture in a ROOT/relational implementation

## On the common project process

- Unhappy with the way this came about:  “let’s write a mandate on Thursday afternoon for an LHC-wide working group to meet three days a week beginning next Monday morning”
- We all claim to be global collaborations—let’s conduct our business as though this were true
- Don’t quite understand whether this effort pre-empts LCGP process, or merely predates it
- Don’t quite understand how priorities are set:  based on Kasemann panel review, one might have expected a first common project on what Vicky White calls the data management side (as opposed to the persistence side):
- My spin:  when we all have 5,000,000 2-GB files, how much of our problem will be related to the format of data inside those files?

## On to more technical issues...

- Object id and object location are often confounded
- Answer to question “which object” is often “the one at location X”
- Not unique to databases:  this is what happens when one wants to indicate which T to pass to a method in C++  (“the one whose location is...” (pass a pointer))
- Programming languages often provide no help here

## OIDs

- “Logical” locations help, but do not solve the problem
- E.g., OID contains database number, with an additional mapping layer to support translation to physical file name
- Replication, object relocation, reclustering issues remain
- See Dirk’s slides for “range of implementations” overview
- Some technologies attempt to use something close to a “location-independent” OID, but often suffer from performance problems
- In hybrid approach, there are natural places to reconsider this issue

## ATLAS architecture

- ATLAS has taken a rather stringent view of transient/persistent separation
- Based largely on Gaudi—see Markus Frank’s slides
- Tends to imply explicit copying in practice
- Did you ever see Objectivity’s “N reasons to choose an object database”?
- Reason #1 is “lose that mapping layer”
- ATLAS architecture REQUIRES that mapping layer

## On references

- Even with explicit copying, the fact that transient A points to transient B does NOT imply that persistent A points to persistent B
- See Markus Frank’s slides
- Entirely possible to write an implementation in which the only persistent pointers within an event are managed by the event header, not by any data objects that are part of the event, despite inter-object associations
- We’ve done it
- COULD move even these pointers into relational layer in a hybrid solution
- IMPLICATION:  object streaming technology need not a priori support persistent pointers at all

## Cache Management

- Athena has its own caches (transient stores) and cache manager (StoreGate)
- Writing one’s own cache manager is often a bad idea, particularly when it’s fed by another product doing its own cache management, implemented on an OS’s cache management, ...
- Does provide certain advantages (tuning caching to particular data types or uses)
- Certainly a locus for lifetime management
- Can also answer the question “which T” with “the one whose version is V and whose time interval of validity contains t”)

## Interfaces and ATLAS requirements

- “Independence of database supplier” (an ATLAS tenet) means that we want to see discussions of interfaces in terms of relational plus object streaming layer, NOT {“specific relational product” + “specific streaming product”}
- Consonant with component-oriented approach:  components should be replaceable
- Implementations are another matter:  if the only known streaming layer implementation is ROOT, that’s okay (we do not plan to invest time any time soon in writing our own alternative, in any case)

## (Unique?) ATLAS requirements?

- ATLAS is attempting to describe both interfaces to transient data objects and data object state in an implementation-language-independent way
- ADL, based on IDL
- Anticipate that this will play a vital role in multi-language support
- Possible streaming layer implications:
- Definition of object to be streamed is not in C++
- Should certainly not assume C++C++