THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
The lucene indexes will be stored in memory instead of disk. This will be done by implementing a lucene Directory called RegionDirectory which uses Geode as a flat file system. This way we get all the benefits offered by Geode and we can achieve replication and shard-ing of the indexes. The lucene indexes will be co-located with the data region in case of HA.
A LuceneIndex object will be created for each index, to manage all the attributes related with the index, such as reflection fields, AEQ listener, RegionDirectory array, Search, etc.
PlantUML |
---|
[Lucene IndexerLuceneIndex] --> [GeodeFSDirectoryRegionDirectory] () "User" node "Colocated and Replicated" { () User --> [User Region] : Puts [User Region] --> [Async Queue] [Async Queue] --> [Lucene Indexer] : Batch Writes [GeodeFSDirectory] --> [Lucene Regions] } |
Partitioned region data flow
PlantUML |
---|
() User -down-> [Cache] : PUTs node cluster { database { () "indexBucket1Primary" } database { () "indexBucket1Secondary" } [Cache] ..> [Bucket 1] [Bucket 1] -down-> [Async Queue Bucket 1] [Async Queue Bucket 1] -down-> [FSDirectoryBucket1] : Batch Write [FSDirectoryBucket1] -> indexBucket1Primary indexBucket1Primary -right-> indexBucket1Secondary database { () "indexBucket2Primary" } database { () "indexBucket2Secondary" } [Cache] ..> [Bucket 2] [Bucket 2] -down-> [Async Queue Bucket 2] [Async Queue Bucket 2] -down-> [FSDirectoryBucket2] : Batch Write [FSDirectoryBucket2] -> indexBucket2Primary indexBucket2Primary -right-> indexBucket2Secondary } |
...