Dia 1 - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Dia 1

Description:

Architecture Hippo software and open source ... for(NodeIterator iter = result.getNodes(); iter.hasNext(); ) { node = iter.nextNode ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 27
Provided by: ogh
Category:
Tags: dia | iter

less

Transcript and Presenter's Notes

Title: Dia 1


1
Oracle in Open Source Projects
Berry van Halderen b.vanhalderen_at_hippo.nl
2
Outline
  • About Hippo
  • Architecture Hippo software and open source
  • The storage problem for (open source) software
    packages
  • Interoperability and standards
  • JCR and JPA/JDO
  • How this ties into Hippo and Oracle

3
About Hippo
  • Hippo develops and provides services for its
  • Content Management System (CMS)
  • Develop Open Source software
  • Participate in open standards
  • Web and Java-based content software
  • Hippo works directly for customers, but wants to
    focus as software company.

4
Just a glance...
5
The advantages of being open
  • Customers have ensure maintainability
  • Base software developed by more than one company
  • Can provide confidence of correctness and checks
  • Allows customer or third party extensions
  • More modularized applications
  • Better interoperability
  • No free lunch, still requires support and
    customization

6
Architecture
  • Central repository delivering common
    functionalities
  • Applications are CMS, websites, ...

7
Architecture
  • All applications, even CMS are just web
    applications
  • Central repository delivering common functions
  • Get, retrieve, search documents
  • Versioning
  • Workflow
  • Hierarchical storage
  • Typed and unstructured data
  • Locking
  • Repository itself persists into files, databases,
    etcetera
  • All communication and storage should be performed
    using the central repository

8
Why a repository?
  • Extended, application domain specific
    functionality, needed.
  • SQL 'standard' to diverse and generic for single
    software base to work.

Repository uses simple database model and
filesystem to store data. Because all
applications use repository as storage, back-end
specific storage is hidden. However repository
still has to deal with back-end differences.
9
Advent of abstraction layers that are application
specific
Usage of adapter layer in software Internal,
application specific, abstraction on storage
system used. However each software module
will have its own adapter
  • ltnodestore classname"org.apache.slide.store.impl.
    rdbms.J2EEStore"gt
  • ltparameter name"datasource"gtjdbc/repositoryData
    Sourcelt/parametergt
  • ltparameter name"adapter"gtorg.apache.slide.store
    .impl.rdbms.OracleRDBMSAdapterlt/parametergt
  • ltparameter name"table-prefix"gtSLIDE_lt/parameter
    gt
  • ltparameter name"column-prefix"gtSLIDE_lt/paramete
    rgt
  • ltparameter name"compress"gtfalselt/parametergt
  • lt/nodestoregt

10
How does Hippo use Oracle
  • No oracle specific development because
    application base must be generic
  • Just like any other database and application
    server
  • Product should run within any application
    container and using any back-end storage.
  • Small compartimized component provide
  • connection to back-end store.

http//flickr.com/photos/92011777_at_N00/228570232/
11
It was just too simple
  • Two problems, first
  • Open source projects are technical subprojects,
    not end-applications.
  • Multiple projects are put together in one
    application.
  • Each project potentially its own storage adapter.
  • Second we're not alone

12
Other repositories out there
  • We want inter-operability

13
Standarization
  • How independently developed software can
    co-operate
  • Standardize
  • Best effort standardization
  • Application domain, rather than full generic
  • Mostly on API, quering just as basis
  • Open source requires open standards to be
    involved.

14
Standarization approaches
  1. Application interoperability
  2. Storage abstraction layers that capture
    application domain knowledge

Java Standards (JSRs)
  • Java Content Repository JCR
  • Java Persistency
  • Plain Java objects mapped to database storage.

15
Java Content Repository (JCR)
  • JSR-170, JSR-283 in preparation
  • Standardized API for Content repositories
  • This is not a generic database access
  • But a Java API for accessing content in web
    application domain for CMS, DMS, etcetera.

http//flickr.com/photos/openthreads/234957983/
16
JCR provides
  • Versioning
  • Hierarchical storage
  • Locking
  • Observation
  • Hierarchical type management, but also
  • unstructured content
  • But no workflow,
  • and leaves query languages partly open.

17
Example
  • Import javax.jcr.
  • Session session repository.login()
  • Node node session.getRootNode().getNode(documen
    ts).getNode(artists/queen)
  • Node album node.addNode(A day at the races,
    nodetypealbum)
  • album.setProperty(year, 1976)
  • album.setProperty(genre, new String pop
    rock, progressive rock )
  • Node song album.addNode(Teo Torriate,
    nodetypesong)
  • song.setProperty(length, 357)
  • session.save()
  • session.commit()
  • queryManager.createQuery(SELECT FROM
    nodetypesong WHERE length gt 300, Query.SQL)
  • queryManager.createQuery(/documents/artists//_at_le
    ngth gt 300, Query.XPATH)
  • Query query queryManager.getQuery(session.getRoo
    tNode().getNode(/queries/stored)
  • QueryResult result query.execute()
  • for(NodeIterator iter result.getNodes()
    iter.hasNext() )

18
Object Relational/Content Mapping (ORM/OCM)
  • Plain Java object programming preferred by
    developers
  • Not the intricates of having to fetch and store
    data, fetch groups
  • OCM provides layer that maps Java objects to a
    database schema.
  • Once initial Java object is obtained, all
    referenced objects are also available.
  • Fetch groups allow application-domain knowledge.

19
Object Mapping Standards
  • Alternative standards JPA and JDO (plus
    Hibernate, etc.)
  • Differences in expressiveness, but all use same
    approach
  • Mapping description file, or
  • Annotations
  • Plus back-end storage descriptor
  • Mapping allow application domain knowledge
  • and seperation between storage method and code.

20
JDO / JPA Annotations
Annotations in Java5 describing how to map to
schema Specialized queries can be used too,
if really needed
  • _at_Entity
  • public class Employee implements Serializable
  • private int employeeId
  • _at_Id
  • public int getEmployeeId() return
    employeeId
  • _at_JoinColumn(name"MANAGER_ID",
    referencedColumnName"EMP_ID")
  • public Collection getManagedEmployees()
  • _at_NamedQuery(
  • name"findAllEmployees",
  • query"SELECT FROM EMPLOYEE WHERE MGR1"
  • hints _at_QueryHintnameTopLinkQueryHints.BIN
    D_PARAMETERS
  • )

21
JDO / JPA Mapping description
Alternative to use mapping description Here,
also targetted queries are possible.
  • ltjdogt
  • ltpackage name"org.sample"gt
  • ltclass name"Employee" detachable"true"
    identity-type"datastore"gt
  • ltinheritance strategy"subclass-table"/gt
  • ltfield name"superfield" column"a"/gt
  • lt/classgt
  • ltfield name"employees"gt
  • ltcollection element-type"Employee"/gt
  • lt/fieldgt
  • lt/packagegt
  • lt/jdogt

22
OCM and JCR do not conflict
  • OCM and JCR do not conflict
  • OCM on top of JCR

Browse, versioning, etc by JCR. Programming
paradigm by OCM
http//flickr.com/photos/17271969_at_N00/16402704/
23
Oracle and open source / open standards
  • One view is that for Oracle open source is just
    another application
  • this is rightfully so..
  • Oracle wants to be the information provider to
    all applications
  • Open standards promote this, and allow open
    source provides to integrate with Oracle products.

24
Oracle involvement in Open Standards
JSR-174
JSR-168
JSR-164
  • Is Oracle involved in Open Standards?

JSR-169
JSR-175
JSR-156
JSR-295
JSR-262
JSR-171
JSR-254
JSR-269
JSR-296
JSR-245 JSP 2.1
JSR-153
JSR-117
JSR-215
JSR-163
JSR-186
JSR-233
JSR-154
JSR-131
JSR-243 JDO 2.0
JSR-127
JSR-201
JSR-221
JSR-88
JSR-43
JSR-207
JSR-306
JSR-299
JSR-313
JSR-30
JSR-4
JSR-10
JSR-284
JSR-115
JSR-167
JSR-53
JSR-31
JSR-26
JSR-270
JSR-155
JSR-181
JSR-204
JSR-310
JSR-147
JSR-187
JSR-276
JSR-52
JSR-12 JDO
JSR-74
JSR-173
JSR151
JSR-72
JSR-72
JSR-301
JSR-286 Portlet 2.0
JSR-317
JSR-318
JSR-255
JSR-165
JSR-212
JSR-227
JSR-277
JSR-322
JSR-222
JSR-37
JSR-139
JSR-152
JSR-250
JSR-40
JSR-305
JSR-309
JSR-316
JSR-101
JSR-16
JSR-5
JSR-121
JSR-198
JSR-289
JSR-225
JSR-223
JSR-303
JSR-206
JSR-200
JSR-203
JSR-265
JSR-315
JSR-251
JSR-21
JSR-56
JSR-241
JSR-224
JSR-114
JSR-15
JSR-128
JSR-208
JSR-247
JSR-220
JSR-51
JSR-160
JSR-202
JSR-294
JSR-244
JSR-196
JSR-24
JSR-314
JSR-94
JSR-123
JSR-170 JCR
JSR-99
JSR-107
JSR-144
JSR-182
JSR-69
JSR-188
JSR-199
JSR-264
JSR-110
JSR-76
JSR-176
JSR-172
JSR-112
JSR-73
JSR-67
JSR-262
JSR-45
JSR-48
JSR-106
JSR-109
JSR-126
JSR-133
JSR-138
JSR-142
JSR-291
JSR-292
JSR-252 JavaServer Faces 2.0
JSR-19 JavaBeans
25
Oracle does JCR
  • Oracle involved in JCR (JSR-170, 283)
  • Oracle involved in JPA/JDO (JSR-243, 220, ..)
  • Implementations for JCR, JDO/JPA (TopLink)
  • Standards allow for interoperability
  • e.g. Use specialized Hippo JCR together with
    Oracle JCR tools
  • Or Oracle JCR combined with Hippo JCR
  • Application programmers can use same interface,
    and just point to different implementation when
    addressing specific needs.

26
Wrapping up
  • Open source and open standards target less vendor
    centric development and better interoperability
  • Attention in open source world to use open
    standards
  • Application domain solutions
  • rather than end-application specific or too
    generic
  • use localized queries that can be tailored to
    back-end.
  • Open source developers and
  • other vendors co-operating in
  • open standards.

http//flickr.com/photos/thepartycow/296816170/
Write a Comment
User Comments (0)
About PowerShow.com