oracle in open source projects

Post on 13-Mar-2016

42 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Oracle in Open Source Projects. Berry van Halderenb.vanhalderen@hippo.nl. 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. - PowerPoint PPT Presentation

TRANSCRIPT

Oracle in Open Source projects

Oracle inOpen Source

ProjectsBerry van Halderen b.vanhalderen@hippo.nl

Oracle in Open Source

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

Oracle in Open Source

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.

Oracle in Open Source

Just a glance...

Oracle in Open Source

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

Oracle in Open Source

Architecture

Central repository delivering common functionalities Applications are CMS, websites, ...

Oracle in Open Source

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

Oracle in Open Source

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.

Oracle in Open Source

Advent of abstraction layers that are application specific

<nodestore classname="org.apache.slide.store.impl.rdbms.J2EEStore"> <parameter name="datasource">jdbc/repositoryDataSource</parameter> <parameter name="adapter">org.apache.slide.store.impl.rdbms.OracleRDBMSAdapterorg.apache.slide.store.impl.rdbms.OracleRDBMSAdapter</parameter> <parameter name="table-prefix">SLIDE_</parameter> <parameter name="column-prefix">SLIDE_</parameter> <parameter name="compress">false</parameter></nodestore>

Usage of adapter layer in software;Internal, application specific, abstraction on storage system used.

However each software module will have its own adapter

Oracle in Open Source

How does Hippo use Oracle

No oracle specific development because application base must be generic;Just like any other database and application serverProduct should run within any application container and using any back-end storage.

Small compartimized component provideconnection to back-end store.

http://flickr.com/photos/92011777@N00/228570232/

Oracle in Open Source

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

Oracle in Open Source

Other repositories out there

We want inter-operability

Oracle in Open Source

Standarization

How independently developed software can co-operate;➔ StandardizeBest effort standardization:● Application domain, rather than full generic;● Mostly on API, quering just as basis;

Open source requires open standards to be involved.

Oracle in Open Source

Standarization approaches

I. Application interoperabilityII.Storage abstraction layers that capture

application domain knowledge

I. Java Content Repository: JCRII. Java Persistency:

Plain Java objects mapped to database storage.

Java Standards (JSRs):

Oracle in Open Source

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/

Oracle in Open Source

JCR provides

Versioning Hierarchical storage Locking Observation Hierarchical type management, but also unstructured content But no workflow, and leaves query languages partly open.

Oracle in Open Source

Example

Import javax.jcr.*;

Session session = repository.login();Node node = session.getRootNode().getNode(“documents”).getNode(“artists/queen”);

Node album = node.addNode(“A day at the races”, ”nodetype:album”);album.setProperty(“year”, 1976);album.setProperty(“genre”, new String[] { “pop rock”, “progressive rock” });Node song = album.addNode(“Teo Torriate”, “nodetype:song”);song.setProperty(“length”, 357);session.save();session.commit();

queryManager.createQuery(“SELECT * FROM nodetype:song WHERE length > 300”, Query.SQL)queryManager.createQuery(“/documents/artists//[@length > 300]”, Query.XPATH);Query query = queryManager.getQuery(session.getRootNode().getNode(“/queries/stored”);

QueryResult result = query.execute();for(NodeIterator iter = result.getNodes(); iter.hasNext(); ) { node = iter.nextNode();}

Oracle in Open Source

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.

Java class Database

Mapping description

Database connector description

Oracle in Open Source

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 knowledgeand seperation between storage method and code.

Oracle in Open Source

JDO / JPA Annotations

@Entitypublic class Employee implements Serializable { private int employeeId;

@Id public int getEmployeeId() { return employeeId; }

@JoinColumn(name="MANAGER_ID", referencedColumnName="EMP_ID") public Collection getManagedEmployees();}

@NamedQuery( name="findAllEmployees", query="SELECT * FROM EMPLOYEE WHERE MGR=1" hints={ @QueryHint={name=TopLinkQueryHints.BIND_PARAMETERS} })

Annotations in Java5 describing how to map to schema:

Specialized queries can be used too, if really needed:

Oracle in Open Source

JDO / JPA Mapping description

<jdo> <package name="org.sample"> <class name="Employee" detachable="true" identity-type="datastore"> <inheritance strategy="subclass-table"/> <field name="superfield" column="a"/> </class>

<field name="employees"> <collection element-type="Employee"/> </field> </package></jdo>

Alternative to use mapping description

Here, also targetted queries are possible.

Oracle in Open Source

OCM and JCR do not conflict

OCM and JCR do not conflict:➔ OCM on top of JCR

http://flickr.com/photos/17271969@N00/16402704/

Browse, versioning, etc by JCR.Programming paradigm by OCM

Oracle in Open Source

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.

Oracle in Open Source

Oracle involvement in Open Standards

Is Oracle involved in Open Standards?

JSR-4

JSR-21JSR-15

JSR-10

JSR-24

JSR-30

JSR-37JSR-40

JSR-43

JSR-45 JSR-48

JSR-51

JSR-56

JSR-69

JSR-72JSR-74

JSR-76

JSR-94JSR-99

JSR-106

JSR-107

JSR-115

JSR-121

JSR-123

JSR-126

JSR-128

JSR-131

JSR-133 JSR-138

JSR-139

JSR-142

JSR-144

JSR-147JSR-155

JSR-156

JSR-160

JSR-163

JSR-164

JSR-165

JSR-167

JSR-169

JSR-171

JSR-174

JSR-175

JSR-176

JSR-181

JSR-182

JSR-186

JSR-187

JSR-188

JSR-198

JSR-199

JSR-72

JSR-200

JSR-201

JSR-202

JSR-203

JSR-204

JSR-207

JSR-208

JSR-212

JSR-215

JSR-223

JSR-227

JSR-233

JSR-241

JSR-250

JSR-251

JSR-254

JSR-262JSR-264

JSR-265

JSR-269

JSR-270

JSR-276

JSR-277

JSR-284

JSR-289

JSR-291 JSR-292

JSR-294

JSR-295

JSR-303

JSR-305

JSR-306

JSR-309

JSR-310

JSR-316

JSR-322JSR-318JSR-317

JSR-315

JSR-314

JSR-313

JSR-301

JSR-299

JSR-296

JSR-286 Portlet 2.0JSR-255

JSR-262

JSR-252 JavaServer Faces 2.0

JSR-247

JSR-245 JSP 2.1

JSR-244

JSR-243 JDO 2.0

JSR-225

JSR-224

JSR-222

JSR-221

JSR-220

JSR-206

JSR-196

JSR-173

JSR-172

JSR-170 JCR

JSR-168

JSR-154JSR-153

JSR-152

JSR151

JSR-127

JSR-117

JSR-114

JSR-112JSR-110

JSR-109

JSR-101

JSR-88

JSR-73JSR-67

JSR-53

JSR-52

JSR-31JSR-26

JSR-12 JDO

JSR-16

JSR-19 JavaBeans

JSR-5

Oracle in Open Source

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.

Oracle in Open Source

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 andother vendors co-operating inopen standards.

http://flickr.com/photos/thepartycow/296816170/

top related