com.bigdata.rdf.store
Class ScaleOutTripleStore

java.lang.Object
  extended by com.bigdata.relation.AbstractResource<IDatabase<AbstractTripleStore>>
      extended by com.bigdata.rdf.store.AbstractTripleStore
          extended by com.bigdata.rdf.store.ScaleOutTripleStore
All Implemented Interfaces:
IRawTripleStore, IDatabase<AbstractTripleStore>, IMutableDatabase<AbstractTripleStore>, IMutableResource<IDatabase<AbstractTripleStore>>, ILocatableResource<IDatabase<AbstractTripleStore>>

public class ScaleOutTripleStore
extends AbstractTripleStore

Implementation of an ITripleStore as a client of an IBigdataFederation.

Deployment choices

The JiniFederation provides a scale-out deployment. The indices will be dynamically key-range partitioned and will be automatically re-distributed over the available nodes in the cluster.

Architecture

The client uses unisolated writes against the lexicon (terms and ids indices) and the statement indices. The index writes are automatically broken down into one split per index partition. While each unisolated write on an index partition is ACID, the indices are fully consistent iff the total operation is successful. For the lexicon, this means that the write on the terms and the ids index must both succeed. For the statement indices, this means that the write on each access path must succeed. If a client fails while adding terms, then it is possible for the ids index to be incomplete with respect to the terms index (i.e., terms are mapped into the lexicon and term identifiers are assigned but the reverse lookup by term identifier will not discover the term). Likewise, if a client fails while adding statements, then it is possible for some of the access paths to be incomplete with respect to the other access paths (i.e., some statements are not present in some access paths).

Two additional mechanisms are used in order to guarantee reads from only fully consistent data. First, clients providing query answering should read from a database state that is known to be consistent (by using a read-only transaction whose start time is the globally agreed upon commit time for that database state). Second, if a client operation fails then it must be retried. Such fail-safe retry semantics are available when data load operations are executed as part of a map-reduce job.

Version:
$Id: ScaleOutTripleStore.java 3186 2010-07-12 17:01:19Z thompsonbry $
Author:
Bryan Thompson

Nested Class Summary
 
Nested classes/interfaces inherited from class com.bigdata.rdf.store.AbstractTripleStore
AbstractTripleStore.Options
 
Field Summary
 
Fields inherited from class com.bigdata.rdf.store.AbstractTripleStore
lexicon
 
Fields inherited from interface com.bigdata.rdf.store.IRawTripleStore
NULLSTR
 
Constructor Summary
ScaleOutTripleStore(IIndexManager indexManager, String namespace, Long timestamp, Properties properties)
          Ctor specified by DefaultResourceLocator
 
Method Summary
 boolean isConcurrent()
          This store is safe for concurrent operations.
 boolean isStable()
          True iff the backing store is stable (exists on disk somewhere and may be closed and re-opened).
 
Methods inherited from class com.bigdata.rdf.store.AbstractTripleStore
__tearDownUnitTest, abort, addNamespace, addStatement, addStatement, addStatements, addStatements, addStatements, addStatements, addTerm, addTerms, assertWritable, asStatement, asStatementIterator, asValue, bulkCompleteStatements, bulkCompleteStatements, bulkCompleteStatements, bulkFilterStatements, bulkFilterStatements, clearNamespaces, close, commit, computeClosureForStatementIdentifiers, copyStatements, copyStatements, create, destroy, determineAxiomClass, determineVocabularyClass, dumpStatements, dumpStore, dumpStore, dumpStore, dumpStore, dumpStore, fixPointStatementIdentifiers, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAccessPath, getAxioms, getBNodeCount, getClosureInstance, getDataLoader, getExplicitStatementCount, getInferenceEngine, getIV, getJustificationCount, getLexiconRelation, getLiteralCount, getMatchProgram, getNamedGraphCount, getNamespace, getNamespaces, getSPOKeyArity, getSPORelation, getStatement, getStatement, getStatement, getStatement, getStatement, getStatementCount, getStatementCount, getStatementCount, getStatementCount, getStatementIdentifiers, getStatements, getStatements, getTerm, getTermCount, getURICount, getValueFactory, getVocabulary, hasStatement, hasStatement, hasStatement, hasStatement, init, isAxiom, isConstrainXXXCShards, isInlineLiterals, isJustify, isOpen, isQuads, isReadOnly, isStatementIdentifiers, match, newJoinNexusFactory, newJoinNexusFactory, newJoinNexusFactory, predicateUsage, predicateUsage, relations, removeNamespace, removeStatements, removeStatements, removeStatements, removeStatements, removeStatements, shutdown, toString, toString, toString, toString
 
Methods inherited from class com.bigdata.relation.AbstractResource
acquireExclusiveLock, getBareProperties, getChunkCapacity, getChunkOfChunksCapacity, getChunkTimeout, getCommitTime, getContainer, getContainerNamespace, getExecutorService, getFullyBufferedReadThreshold, getIndexManager, getMaxParallelSubqueries, getNamespace, getProperties, getProperty, getProperty, getTimestamp, isForceSerialExecution, toString, unlock
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.bigdata.relation.locator.ILocatableResource
getContainerNamespace, getNamespace, getTimestamp
 

Constructor Detail

ScaleOutTripleStore

public ScaleOutTripleStore(IIndexManager indexManager,
                           String namespace,
                           Long timestamp,
                           Properties properties)
Ctor specified by DefaultResourceLocator

Note: KB is NOT created automatically.

Method Detail

isStable

public final boolean isStable()
Description copied from class: AbstractTripleStore
True iff the backing store is stable (exists on disk somewhere and may be closed and re-opened).

Note: This is mainly used by the test suites.

Specified by:
isStable in class AbstractTripleStore

isConcurrent

public boolean isConcurrent()
This store is safe for concurrent operations.

Specified by:
isConcurrent in class AbstractTripleStore


Copyright © 2006-2011 SYSTAP, LLC. All Rights Reserved.