Sie können das integrierte Plug-in "HashIndex", die Klasse com.ibm.websphere.objectgrid.plugins.index.HashIndex,
mit einer XML-Datei, über das Programm oder mit einer Entitätsannotation in einer Entitäts-Map konfigurieren.
Informationen zu diesem Vorgang
Die Konfiguration eines zusammengesetzten Index entspricht
abgesehen von der Definition des Werts für die Eigenschaft attributeName
der Konfiguration eines regulären Index mit XML.
Bei einem zusammengesetzten Index ist der Wert von attributeName eine durch Kommas begrenzte Liste mit Attributen.
Die Werteklasse "Address" hat beispielsweise drei Attribute: city, state und zipcode. Ein zusammengesetzter Index kann mit dem Wert "city,state,zipcode"
für die Eigenschaft attributeName definiert werden. Dieser Wert zeigt an, dass city, state und zipcode in den zusammengesetzten Index eingeschlossen werden sollen.
Beachten Sie
auch, dass zusammengesetzte Hash-Indizes keine Bereichssuchen unterstützen und die Eigenschaft "RangeIndex" deshalb nicht auf "true" gesetzt werden kann.
Vorgehensweise
- Zusammengesetzten Index in der ObjectGrid-XML-Deskriptordatei konfigurieren.
Verwenden Sie das Element "backingMapPluginCollections", um das Plug-in zu definieren.
<bean id="MapIndexPlugin" className="com.ibm.websphere.objectgrid.plugins.index.HashIndex">
<property name="Name" type="java.lang.String" value="Address.CityStateZip"/>
<property name="AttributeName" type="java.lang.String" value="city,state,zipcode"/>
</bean>
- Zusammengesetzten Index über das Programm konfigurieren.
Der folgende Beispielcode erstellt denselben zusammengesetzten Index:
HashIndex mapIndex = new HashIndex();
mapIndex.setName("Address.CityStateZip");
mapIndex.setAttributeName(("city,state,zipcode"));
mapIndex.setRangeIndex(true);
BackingMap bm = objectGrid.defineMap("mymap");
bm.addMapIndexPlugin(mapIndex);
- Zusammengesetzten Index mit Entitätsannotationen konfigurieren.
Wenn Sie Entitäts-Maps verwenden, können Sie für die Definition eines zusammengesetzten Index
Annotationen verwenden.
Sie können eine CompositeIndex-Liste in der Annotation "CompositeIndexes" auf der Ebene der Entitätsklasse definieren.
CompositeIndex hat einen Namen und eine Eigenschaft attributeNames.
Jedem CompositeIndex wird eine HashIndex-Instanz zugeordnet, die auf die BackingMap angewendet wird, die der Entität zugeordnet ist.
Die HashIndex-Instanz wird als Index ohne Bereichsunterstützung konfiguriert.
@Entity
@CompositeIndexes({
@CompositeIndex(name="CityStateZip", attributeNames="city,state,zipcode"),
@CompositeIndex(name="lastnameBirthday", attributeNames="lastname,birthday")
})
public class Address {
@Id int id;
String street;
String city;
String state;
String zipcode;
String lastname;
Date birthday;
}
Die Eigenschaft "name" jedes zusammengesetzten Index muss in der Entität und in der BackingMap eindeutig sein.
Wenn Sie den Namen nicht angeben, wird ein generierter Name verwendet.
Die Eigenschaft attributeName wird verwendet, um die Eigenschaft
"attributeName" der HashIndex-Instanz mit der durch Kommas begrenzten Liste von Attributen zu füllen.
Die Attributnamen stimmen mit den persistenten Feldnamen überein, wenn die Entitäten
für die Verwendung von Entitäten mit Feldzugriff konfiguriert sind, bzw. mit dem Eigenschaftsnamen gemäß
Definition in den JavaBeans-Namenskonventionen für Entitäten mit Eigenschaftszugriff.
Beispiel: Wenn der Attributname
street lautet, wird die Getter-Methode für die Eigenschaft getStreet benannt.
Beispiel: HashIndex in BackingMap hinzufügen
Im folgenden Beispiel konfigurieren Sie das Plug-in
"HashIndex", indem Sie der XML-Datei statische Index-Plug-ins hinzufügen:
<backingMapPluginCollection id="person">
<bean id="MapIndexPlugin"
className="com.ibm.websphere.objectgrid.plugins.index.HashIndex">
<property name="Name" type="java.lang.String" value="CODE"
description="index name" />
<property name="RangeIndex" type="boolean" value="true"
description="true for MapRangeIndex" />
<property name="AttributeName" type="java.lang.String" value="employeeCode"
description="attribute name" />
</bean>
</backingMapPluginCollection>
In diesem XML-Konfigurationsbeispiel
wird die integrierte Klasse HashIndex als Index-Plug-in verwendet. Die Klasse HashIndex unterstützt Eigenschaften, die die Benutzer
konfigurieren können, wie z. B. Name, RangeIndex und
AttributeName.
- Die Eigenschaft Name ist als CODE konfiguriert, einer Zeichenfolge, die dieses Index-Plug-in identifiziert.
Der Wert der Eigenschaft Name
muss im Geltungsbereich der BackingMap eindeutig sein.
Der Name kann verwendet werden, um das Indexobjekt nach Namen aus der ObjectMap-Instanz für die
BackingMap abzurufen.
- Die Eigenschaft RangeIndex ist mit true konfiguriert, d. h., die Anwendung kann das abgerufene Indexobjekt in die Schnittstelle
MapRangeIndex umsetzen. Wird die Eigenschaft "RangeIndex" mit dem Wert false konfiguriert, kann die Anwendung das abgerufene Indexobjekt nur in die Schnittstelle MapIndex umsetzen.
MapRangeIndex unterstützt
Funktionen, mit denen Sie Daten über Bereichsfunktionen, wie z. B. größer als und/oder kleiner als, suchen können, wohingegen
die Schnittstelle "MapIndex" nur Vergleichsfunktionen unterstützt.
Wenn der Index von einer Abfrage verwendet wird, muss die Eigenschaft
RangeIndex für Einzelattributindizes mit true konfiguriert werden.
Für einen Beziehungsindex oder einen zusammengesetzten Index muss die Eigenschaft RangeIndex mit false
konfiguriert werden.
- Die Eigenschaft AttributeName ist mit employeeCode konfiguriert, d. h., das Attribut "employeeCode" des zwischengespeicherten Objekts wird verwendet,
um einen Einzelattributindex zu erstellen.
Wenn eine Anwendung zwischengespeicherte Objekte mit mehreren Attributen suchen muss, kann die Eigenschaft
AttributeName auf eine durch Kommas begrenzte Liste mit Attributen gesetzt werden. Dies ergibt dann einen zusammengesetzten Index.
Zusammenfassend gesagt, das vorherige Beispiel definiert einen
Bereichs-HashIndex mit einem einzigen Attribut. Es handelt sich um einen HashIndex mit einem einzigen Attribut, weil die Eigenschaft AttributeName
den Wert employeeCode hat, der nur einen einzigen Attributnamen einschließt. Gleichzeitig handelt es sich um einen Bereichs-HashIndex.