Class SimpleCacheIndex
SimpleCacheIndex is an ICacheIndex implementation used to correlate property values extracted from resource cache entries with corresponding keys using what is commonly known as an Inverted Index algorithm..
Implements
Inherited Members
Namespace: Tangosol.Net.Cache
Assembly: Coherence.dll
Syntax
public class SimpleCacheIndex : ICacheIndex
Constructors
SimpleCacheIndex(IValueExtractor, bool, IComparer)
Construct an index.
Declaration
public SimpleCacheIndex(IValueExtractor extractor, bool ordered, IComparer comparer)
Parameters
| Type | Name | Description |
|---|---|---|
| IValueExtractor | extractor | The IValueExtractor that is used to extract an indexed value from a resource cache entry. |
| bool | ordered | true iff the contents of the indexed information should be ordered; false otherwise. |
| IComparer | comparer | The IComparator object which imposes an ordering on entries in the index map; or null if the entries' values natural ordering should be used. |
SimpleCacheIndex(IValueExtractor, bool, IComparer, bool)
Construct an index.
Declaration
public SimpleCacheIndex(IValueExtractor extractor, bool ordered, IComparer comparer, bool init)
Parameters
| Type | Name | Description |
|---|---|---|
| IValueExtractor | extractor | The IValueExtractor that is used to extract an indexed value from a resource cache entry. |
| bool | ordered | true iff the contents of the indexed information should be ordered; false otherwise. |
| IComparer | comparer | The IComparator object which imposes an ordering on entries in the index map; or null if the entries' values natural ordering should be used. |
| bool | init | Initialize the index if true. |
Fields
NO_VALUE
Marker object used to represent extractor failure.
Declaration
protected static readonly object NO_VALUE
Field Value
| Type | Description |
|---|---|
| object |
m_cLogMissingIdx
The number of "missing inverse index" messages that have been logged.
Declaration
protected int m_cLogMissingIdx
Field Value
| Type | Description |
|---|---|
| int |
m_fImmutableValues
Specifies whether or not the index is based on the immutable values (e.g. keys).
Declaration
protected bool m_fImmutableValues
Field Value
| Type | Description |
|---|---|
| bool |
m_keysExcluded
A set of keys for the entries, which could not be included in the index.
Declaration
protected SafeHashSet m_keysExcluded
Field Value
| Type | Description |
|---|---|
| SafeHashSet |
m_ldtLogMissingIdx
The time at which the most recent logging of "missing inverse index" messages started.
Declaration
protected long m_ldtLogMissingIdx
Field Value
| Type | Description |
|---|---|
| long |
m_splitCollection
If a value extracted by the IValueExtractor is an ICollection, this property specifies whether or not it should be treated as a collection of contained attributes or indexed as a single composite attribute.
Declaration
protected bool m_splitCollection
Field Value
| Type | Description |
|---|---|
| bool |
Properties
Comparer
IComparer used to sort the index. Used iff Ordered is true.
Could be null, which implicates a natural order.
Declaration
public virtual IComparer Comparer { get; protected set; }
Property Value
| Type | Description |
|---|---|
| IComparer |
IndexContents
The IDictionary that contains the index contents.
Declaration
public IDictionary IndexContents { get; protected set; }
Property Value
| Type | Description |
|---|---|
| IDictionary |
Remarks
The keys of the IDictionary are the return values from the IValueExtractor operating against the indexed ICache's values, and for each key, the corresponding value stored in the IDictionary is an ICollection of keys to the indexed value.
If the ICacheIndex is known to be ordered, then the returned IDictionary object will be an instance of SortedList (or wrapper thereof). The SortedList may or may not have an IComparer object associated with it.
A client should assume that the returned IDictionary object is read-only and must not attempt to modify it.
IndexForward
IDictionary that contains the index values (forward index). The keys of the IDictionary are the keys to the indexed cache and the values are the extracted values. This map is used by IIndexAwareFilter implementations to avoid conversion and value extraction steps.
Declaration
protected IDictionary IndexForward { get; set; }
Property Value
| Type | Description |
|---|---|
| IDictionary |
IsOrdered
Specifies whether or not this ICacheIndex orders the contents of the indexed information.
Declaration
public virtual bool IsOrdered { get; protected set; }
Property Value
| Type | Description |
|---|---|
| bool |
IsPartial
Determine if indexed information for any entry in the indexed ICache has been excluded from this index. This information is used by IIndexAwareFilter implementations to determine the most optimal way to apply the index.
Declaration
public virtual bool IsPartial { get; }
Property Value
| Type | Description |
|---|---|
| bool | true if any entry of the indexed ICache has been excluded from the index, false otherwise |
ValueExtractor
IValueExtractor object that this ICacheIndex uses to extract an
indexable Object from a [converted] value stored in the Storage.
This property is never null.
Declaration
public virtual IValueExtractor ValueExtractor { get; protected set; }
Property Value
| Type | Description |
|---|---|
| IValueExtractor |
Methods
AddInverseCollectionMapping(IDictionary, ICollection, object)
Add new mappings from the elements of the given value to the given key in the supplied index.
Declaration
protected virtual void AddInverseCollectionMapping(IDictionary index, ICollection value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| IDictionary | index | the index to which to add the mapping |
| ICollection | value | the indexed ICollection value (each element serves as a key in the inverse index) |
| object | key | the key to insert into the inverse index |
AddInverseMapping(IDictionary, object, object)
Add a new mapping from the given indexed value to the given key in the supplied index.
Declaration
protected virtual void AddInverseMapping(IDictionary index, object value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| IDictionary | index | the index to which to add the mapping |
| object | value | the indexed value |
| object | key | the key to insert into the inverse index |
AddInverseMapping(object, object)
Add a new mapping from the given indexed value to the given key in the inverse index.
Declaration
protected virtual void AddInverseMapping(object value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | value | The index value (serves as a key in the inverse index). |
| object | key | the key to insert into the inverse index |
CollectRemoved(object, object)
Given that the old value is known to be a Collection or an array, collect all the enclosed elements that are not part of the new value.
Declaration
protected HashSet CollectRemoved(object valueOld, object valueNew)
Parameters
| Type | Name | Description |
|---|---|---|
| object | valueOld | The old value, must be a collection or an array. |
| object | valueNew | The new value. |
Returns
| Type | Description |
|---|---|
| HashSet | The set of values that are contained in the old collection or array, but not part of the new value. |
Delete(ICacheEntry)
Update this index in response to a remove operation on a cache.
Declaration
public virtual void Delete(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being removed. |
DeleteInternal(ICacheEntry)
Update this index in response to a remove operation on a cache.
Declaration
protected virtual void DeleteInternal(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being removed. |
EnsureCollection(object)
Return a Collection representation of the specified value, which could be a Collection, Object[], scalar, or NO_VALUE.
Declaration
protected static ICollection EnsureCollection(object value)
Parameters
| Type | Name | Description |
|---|---|---|
| object | value | The value. |
Returns
| Type | Description |
|---|---|
| ICollection | A Collection representation of the specified value, or an empty Collection if NO_VALUE. |
Equals(object)
Determines whether the specified object is equal to this object.
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| object | obj | The object to compare with this object. |
Returns
| Type | Description |
|---|---|
| bool | true if the specified object is equal to this object; otherwise, false. |
Overrides
Equals(SimpleCacheIndex)
Compares this index with another index for equality.
Declaration
public virtual bool Equals(SimpleCacheIndex index)
Parameters
| Type | Name | Description |
|---|---|---|
| SimpleCacheIndex | index | index to compare this index with. |
Returns
| Type | Description |
|---|---|
| bool |
|
Remarks
This method returns true if this index and the specified index have exactly the same contents.
ExtractNewValue(ICacheEntry)
Extract the "new" value from the specified entry.
Declaration
protected object ExtractNewValue(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry to extract the "new" value from. |
Returns
| Type | Description |
|---|---|
| object | The extracted "new" value, or NO_VALUE if the extraction failed |
ExtractOldValue(CacheEntry)
Extract the "old" value from the specified entry.
Declaration
protected object ExtractOldValue(CacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| CacheEntry | entry | The entry to extract the "old" value from. |
Returns
| Type | Description |
|---|---|
| object | The extracted "old" value, or NO_VALUE if the extraction failed. |
Get(object)
Using the index information if possible, get the value associated with the specified key. This is expected to be more efficient than using the IValueExtractor against an object containing the value, because the index should already have the necessary information at hand.
Declaration
public virtual object Get(object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | key | The key that specifies the object to extract the value from. |
Returns
| Type | Description |
|---|---|
| object | The value that would be extracted by this ICacheIndex's IValueExtractor from the object specified by the passed key; NO_VALUE if the index does not have the necessary information. |
GetForwardValue(object)
Get the forward index value associated with the specified key.
Declaration
protected virtual object GetForwardValue(object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | key | The key. |
Returns
| Type | Description |
|---|---|
| object | The value associated with the key. |
GetHashCode()
Returns a hash code for this object.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| int | A hash code for this object. |
Overrides
Initialize(bool)
Initialize the index's data structures.
Declaration
protected virtual void Initialize(bool forwardIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| bool | forwardIndex | true If forward index is supported; false otherwise. |
Insert(ICacheEntry)
Update this index in response to a insert operation on a cache.
Declaration
public virtual void Insert(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being inserted. |
InsertInternal(ICacheEntry)
Update this index in response to a insert operation on a cache.
Declaration
protected virtual void InsertInternal(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being inserted. |
InstantiateForwardIndex()
Instantiate the forward index.
Declaration
protected virtual IDictionary InstantiateForwardIndex()
Returns
| Type | Description |
|---|---|
| IDictionary | The forward index. |
InstatiateInverseIndex(bool, IComparer)
Instantiate the inverse index.
Declaration
protected virtual IDictionary InstatiateInverseIndex(bool ordered, IComparer comparer)
Parameters
| Type | Name | Description |
|---|---|---|
| bool | ordered | true iff the contents of the indexed information should be ordered; false otherwise. |
| IComparer | comparer | The IComparator object which imposes an ordering on entries in the index; or null if the entries' values natural ordering should be used. |
Returns
| Type | Description |
|---|---|
| IDictionary | The inverse index. |
IsKeyExcluded(object)
Check if the entry with the given key is excluded from the index.
Declaration
protected bool IsKeyExcluded(object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | key | The key to test |
Returns
| Type | Description |
|---|---|
| bool | True if the key is in the list of keys currently excluded from the index, false if the entry with the key is in the index. |
LogMissingIdx(object, object)
Log messages for missing inverse index.
Declaration
protected void LogMissingIdx(object value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | value | the indexed value |
| object | key | the key |
RemoveForwardEntry(object)
Remove the forward index entry for the specified key.
Declaration
protected virtual void RemoveForwardEntry(object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | key | The key to remove the forward index entry for. |
RemoveInverseMapping(IDictionary, object, object)
Remove the mapping from the given indexed value to the given key from the supplied index.
Declaration
protected virtual void RemoveInverseMapping(IDictionary index, object value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| IDictionary | index | the index from which to remove the mapping |
| object | value | the indexed value |
| object | key | the key |
RemoveInverseMapping(object, object)
Remove the mapping from the given indexed value to the given key from the inverse index.
Declaration
protected virtual void RemoveInverseMapping(object value, object key)
Parameters
| Type | Name | Description |
|---|---|---|
| object | value | The indexed value, or NO_VALUE if unknown. |
| object | key | The key |
RemoveInverseMapping(object, object, ICollection)
Remove the mapping from the given indexed value to the given key from the inverse index.
Declaration
protected virtual void RemoveInverseMapping(object value, object key, ICollection colIgnore)
Parameters
| Type | Name | Description |
|---|---|---|
| object | value | The indexed value. |
| object | key | The key. |
| ICollection | colIgnore | The Collection of values to ignore (exclude from removal), or null. |
ToString()
Returns string representation of this instance.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| string | String representation of this instance. |
Overrides
Update(ICacheEntry)
Update this index in response to a update operation on a cache.
Declaration
public virtual void Update(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being updated. |
UpdateExcludedKeys(ICacheEntry, bool)
Check the entry against the set of entries not included in the index and update the set if necessary.
Declaration
protected void UpdateExcludedKeys(ICacheEntry entry, bool excluded)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry to be checked. |
| bool | excluded | True if the insert or update of the entry into the index caused an exception. |
UpdateInternal(ICacheEntry)
Update this index in response to a update operation on a cache.
Declaration
protected virtual void UpdateInternal(ICacheEntry entry)
Parameters
| Type | Name | Description |
|---|---|---|
| ICacheEntry | entry | The entry representing the object being updated. |