Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Organization of Indexes

Gliffy Diagram
namev3-index-organization

Getting Iterators from Indexes and Index Repositories

The logic for getting iterators from indexes accommodates various optimizations including:

  • avoiding the management of multiple subiterators if this index has no sub indexes
  • for indexes having subiterators:
    • choosing sorted or non-sorted management of subiterators
    • doing a 1-time conversion to a "flat index" for snapshots (supporting sorted, set, and bag)

Gliffy Diagram
nameindexesToIterators

Organization of Streams over Indexes

The top level interface FSIndexes implements Iterable, which in turn has a default impl for SplitIterator, which enables creation of streams.

FSIndexes has two default methods for stream and parallel stream, constructed from the splititerator impls.

Splititerator impls are defined in these classes:

  • FSSubtypesIndexImpl
  • FSBagIndex
  • FSSetIndex
  • FSSortedIndex

Organization of Iterators over Indexes

Gliffy Diagram
namev3-iterators

Class rename tables

Indexes

v3 namev2 name

FSIndex_subtypes

IndexImpl


(in FSIndexRepo)

FSIndex_iicp

IndexIteratorCachePair

(in FSIndexRepo)

FsIndex_singletype

FSLeafIndexImpl

FsIndex_bag

FSBagIndex

FsIndex_set

FSRBTSetIndex

FsIndex_sorted

FSIntArrayIndex

FsIndex_flat

 

Iterators

v3 namev2 name
FsIterator_singletype 
FsIterator_subtypes 
FsIterator_subtypes_snapshotSnapshotPointerIterator
FsIterator_bagPointerIterator in FSBagIndex

FsIterator_set

PointerIterator in FSRBTSetIndex
FsIterator_sortedPointerIterator in FSIntArrayIndex
FsIterator_subtypes_list 
FsIterator_subtypes_orderedPointerIteratorOrdered
FsIterator_subtypes_unorderedPointerIteratorUnordered

 

Organization of Indexes

...

Organization of Streams over Indexes

The top level interface FSIndexes implements Iterable, which in turn has a default impl for SplitIterator, which enables creation of streams.

FSIndexes has two default methods for stream and parallel stream, constructed from the splititerator impls.

Splititerator impls are defined in these classes:

  • FSSubtypesIndexImpl
  • FSBagIndex
  • FSSetIndex
  • FSSortedIndex

Organization of Iterators over Indexes

...