All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.journal.IIndexStore Maven / Gradle / Ivy

/**

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package com.bigdata.journal;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

import com.bigdata.bfs.BigdataFileSystem;
import com.bigdata.btree.AbstractBTree;
import com.bigdata.rawstore.IRawStore;
import com.bigdata.relation.locator.IResourceLocator;
import com.bigdata.sparse.GlobalRowStoreSchema;
import com.bigdata.sparse.SparseRowStore;

/**
 * Collection of methods that are shared by both local and distributed stores.
 * 

* Note: Historically, this was class was named for the ability to manage index * objects in both local and distributed contexts. However, the introduction of * GIST support has necessitated a refactoring of the interfaces and the name of * this interface no longer reflects its function. * * @author Bryan Thompson */ public interface IIndexStore { /** * Return an unisolated view of the global {@link SparseRowStore} used to * store named property sets. * * @see GlobalRowStoreSchema */ SparseRowStore getGlobalRowStore(); /** * Return a view of the global {@link SparseRowStore} used to store named * property sets as of the specified timestamp. *

* The {@link SparseRowStore} only permits {@link ITx#UNISOLATED} writes, so * you MUST specify {@link ITx#UNISOLATED} as the timestamp if you intend to * write on the global row store! *

* You can request the most recent committed state of the global row store * by specifying {@link ITx#READ_COMMITTED}. * * @param timestamp * The timestamp of the view. * * @return The global row store view -or- null if no view * exists as of that timestamp. */ SparseRowStore getGlobalRowStore(long timestamp); /** * Return the global file system used to store block-structured files and * their metadata and as a source and sink for map/reduce processing. * * @see BigdataFileSystem */ BigdataFileSystem getGlobalFileSystem(); /** * A factory for {@link TemporaryStore}s. {@link TemporaryStore}s are * thread-safe and may be used by multiple processes at once. Old * {@link TemporaryStore}s are eventually retired by the factory and their * storage is reclaimed once they are finalized (after they are no longer in * use by any process). The decision to retire a {@link TemporaryStore} is * either made implicitly, when it is no longer weakly reachable, or * explicitly, when it has grown large enough that no new processes should * begin using that {@link TemporaryStore}. In the latter case, the * {@link TemporaryStore} will remain available to the process(es) using it * and a new {@link TemporaryStore} will be allocated and made available to * the caller. *

* It is important that processes do not hold a hard reference to a * {@link TemporaryStore} beyond the end of the process as that will prevent * the {@link TemporaryStore} from being finalized. Holding reference to an * {@link AbstractBTree} created on a {@link TemporaryStore} is equivalent * to holding a hard reference to the {@link TemporaryStore} itself since * the {@link AbstractBTree} holds onto the backing {@link IRawStore} using * a hard reference. * * @return A {@link TemporaryStore}. */ TemporaryStore getTempStore(); /** * Return the default locator for resources that are logical index * containers (relations and relation containers). */ IResourceLocator getResourceLocator(); /** * A {@link ExecutorService} that may be used to parallelize operations. * This service is automatically used when materializing located resources. * While the service does not impose concurrency controls, tasks run on this * service may submit operations to a {@link ConcurrencyManager}. */ ExecutorService getExecutorService(); /** * Adds a task which will run until canceled, until it throws an exception, * or until the service is shutdown. * * @param task * The task. * @param initialDelay * The initial delay. * @param delay * The delay between invocations. * @param unit * The units for the delay parameters. * * @return The {@link ScheduledFuture} for that task. */ ScheduledFuture addScheduledTask(final Runnable task, final long initialDelay, final long delay, final TimeUnit unit); /** * true iff performance counters will be collected for the * platform on which the client is running. */ boolean getCollectPlatformStatistics(); /** * true iff statistics will be collected for work queues. */ boolean getCollectQueueStatistics(); /** * The port on which the optional httpd service will be run. The httpd * service exposes statistics about the client, its work queues, the * platform on which it is running, etc. If this is ZERO (0), then the * port will be chosen randomly. */ int getHttpdPort(); /** * The service that may be used to acquire synchronous distributed locks * without deadlock detection. */ IResourceLockService getResourceLockService(); /** * The database wide timestamp of the most recent commit on the store or 0L * iff there have been no commits. In a local database, this timestamp is * generated by a local timestamp service. In a distributed database, this * timestamp is generated by a shared timestamp service. The timestamps * returned by this method are strictly increasing for a given store and for * a given database. *

* This method is useful if you plan to issue a series of read-consistent * requests against the most current commit point of the database. * * @return The timestamp of the most recent commit on the store or 0L iff * there have been no commits. * * @see IRootBlockView#getLastCommitTime() */ long getLastCommitTime(); /** * Destroy the {@link IIndexStore}. */ void destroy(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy