Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Metastore

The Metastore project aims to provide a developer with a way of storing metadata, configuration information, settings and so on in a standardized way.   To make this happen we choose a simple meta-model with the organization described below

Meta-model

The Metastore meta-model is organized as following:

  1. Namespaces: the top level entry of the Metastore is always a namespace.  The namespace Pentaho software works in will always simply be "Pentaho".
  2. Element types: each namespace has a set of element types which are identified by a unique ID and have a name and a description.
  3. Elements: each element type can have a number of elements which are identified by a unique ID and have a name and a set of attributes
  4. Attributes: each attribute has an ID, a value and a set of child attributes.  The values of attributes are typically string values but integers, doubles and dates are supported as well.

So essentially, it's a key/value store with children allowing you to store just about any piece of metadata.

Standard definitions

Common MetaModel Element Type definitions can be found on this page:

Common Metadata Definitions

Java project

The Java project with the API and reference implementations is to be found over here:

https://github.com/pentaho/metastore

There is a CI build process looking at the project over here:

http://ci.pentaho.com/view/Commons/job/metastore/

This build process is pushing maven artifacts into the pentaho repository, ivy dependency line:

<dependency org="pentaho" name="metastore" rev="TRUNK-SNAPSHOT" />

Java API

Even though the organisation of the meta-model is kept simple (on purpose) it makes sense to cover the main Java interfaces a bit.

IMetaStore

The IMetaStore interface is the top level interface describing all the possible operations which are available. 

Namespace operations

  • getNamespaces() : lists all the namespaces
  • createNamespace() : create a new namespace
  • deleteNamespace() : delete a namespace

Element type operations

  • getElementTypes() : list all the element types
  • getElementTypeIds() : list all the element type IDs
  • getElementType(): find an element with a specific ID
  • getElementTypeByName() : find an element type with a specific name
  • createElementType() : create a new element type in the store
  • updateElementType(): update an element type
  • deleteElementType(): delete an element type
  • newElementType() : generate a new empty element type

Element operations

  • getElements() : list all the elements
  • getElementIds() : list all the element IDs
  • getElement(): find an element with a specific ID
  • getElementByName() : find an element with a specific name
  • createElement() : create a new element in the store
  • updateElement(): update an element
  • deleteElement(): delete an element
  • newElement() : generate a new element
  • newAttribute() : generate a new empty attribute suitable for the store
  • newElementOwner() : generate a new element owner

Metastore convenience properties

Self explanatory, to distinguish one Metastore from another.

  • getName()
  • getDescription()
  • No labels