2.3. Directory Providers


The following directory providers are supported in Infinispan Query:
  • RAM Directory Provider
  • Filesystem Directory Provider
  • Infinispan Directory Provider

2.3.1. RAM Directory Provider

Storing the global index locally in Red Hat JBoss Data Grid's Query Module allows each node to
  • maintain its own index.
  • use Lucene's in-memory or filesystem-based index directory.
The following example demonstrates an in-memory, RAM-based index store:
<namedCache name="indexesInMemory">
        <indexing enabled="true">
                <properties>
                        <property name="default.directory_provider" value="ram"/>
                </properties>
        </indexing>
</namedCache>

2.3.2. Filesystem Directory Provider

To configure the storage of indexes, set the appropriate properties when enabling indexing in the JBoss Data Grid configuration.
This example shows a disk-based index store:

Example 2.1. Disk-based Index Store

<namedCache name="indexesOnDisk">
        <indexing enabled="true">
                <properties>
                        <property name="default.directory_provider" value="filesystem"/>
                        <property name="default.indexBase" value="/tmp/ispn_index"/>
                </properties>
        </indexing>
</namedCache>

2.3.3. Infinispan Directory Provider

In addition to the Lucene directory implementations, Red Hat JBoss Data Grid also ships with an infinispan-directory module.

Note

Red Hat JBoss Data Grid only supports infinispan-directory in the context of the Querying feature, not as a standalone feature.
The infinispan-directory allows Lucene to store indexes within the distributed data grid. This allows the indexes to be distributed, stored in-memory, and optionally written to disk using the cache store for durability.
Sharing the same index instance using the Infinispan Directory Provider, introduces a write contention point, as only one instance can write on the same index at the same time. The property exclusive_index_use must be set to "false" and in most cases an alternative back end must be setup.
InfinispanIndexManager provides a default back end that sends all updates to master node which later applies the updates to the index. In case of master node failure, the update can be lost, therefore keeping the cache and index non-synchronized. Non-default back ends are not supported.

Example 2.2. Enable Shared Indexes

<namedCache name="globalSharedIndexes">
	<clustering mode="distributed"/>
	<indexing enabled="true">
		<properties>
			<property name="default.directory_provider" value="infinispan"/>
			<property name="default.indexmanager" value="org.infinispan.query.indexmanager.InfinispanIndexManager" />
			<property name="default.exclusive_index_use" value="{true|false}"/>
		</properties>
	</indexing>
</namedCache>

Important

The default.exclusive_index_use configuration property in the provided sample configuration is set depending on which version of Red Hat JBoss Data Grid is in use:
  • when using JBoss Data Grid 6.3.0, set the default.exclusive_index_use to false.
  • when using JBoss Data Grid 6.3.1, to improve performance, either exclude default.exclusive_index_use (the default value true is then used) or explicitly set the value to true.
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.